Python Internal Read Gadgets
기본 정보
Python 포맷 문자열 또는 클래스 오염과 같은 다양한 취약점은 Python 내부 데이터를 읽을 수 있지만 코드를 실행할 수는 없을 수도 있습니다. 따라서 펜테스터는 이러한 읽기 권한을 최대한 활용하여 민감한 권한을 획득하고 취약점을 승격해야 할 것입니다.
Flask - 비밀 키 읽기
Flask 애플리케이션의 메인 페이지에는 이 비밀 키가 구성된 app
전역 객체가 있을 것입니다.
이 경우에는 Python 샌드박스 우회 페이지에서 전역 객체에 접근하기 위해 어떤 가젯을 사용하여 이 객체에 액세스할 수 있습니다.
취약점이 다른 Python 파일에 있는 경우에는 메인 파일에 접근하기 위해 파일을 탐색하는 가젯이 필요합니다. 이를 통해 Flask 비밀 키를 변경하고 이 키를 알고 권한을 상승시킬 수 있습니다.
이 writeup에서 제공하는 다음과 같은 페이로드를 사용할 수 있습니다:
이 페이로드를 사용하여 app.secret_key
(앱에서의 이름은 다를 수 있음)를 변경하여 새로운 권한을 가진 flask 쿠키를 서명할 수 있습니다.
Werkzeug - machine_id 및 node uuid
이 글에서 제공하는 페이로드를 사용하여 machine_id와 uuid 노드에 액세스할 수 있으며, 이는 Werkzeug pin을 생성하는 데 필요한 주요 비밀입니다. 디버그 모드가 활성화된 경우 /console
에서 python 콘솔에 액세스할 수 있습니다.
app.py
의 서버 로컬 경로를 얻으려면 웹 페이지에서 오류를 생성하여 경로를 얻을 수 있습니다.
만약 취약점이 다른 파이썬 파일에 있다면, 메인 파이썬 파일에서 객체에 접근하기 위한 이전 Flask 트릭을 확인하세요.
Last updated