4.9 KiB
Python 내부 Read 가젯
{% hint style="success" %}
AWS 해킹 배우고 실습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우고 실습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 요금제를 확인하세요!
- 💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃헙 레포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
기본 정보
Python Format Strings 또는 Class Pollution과 같은 다양한 취약점은 파이썬 내부 데이터를 읽을 수 있지만 코드 실행은 허용하지 않을 수 있습니다. 따라서, 펜테스터는 이러한 읽기 권한을 최대한 활용하여 민감한 권한을 획들하고 취약점을 승격해야 할 것입니다.
Flask - 시크릿 키 읽기
Flask 애플리케이션의 메인 페이지에는 아마도 app
글로벌 객체가 있을 것이며, 여기에 시크릿이 구성될 것입니다.
app = Flask(__name__, template_folder='templates')
app.secret_key = '(:secret:)'
이 경우 Python 샌드박스 우회 페이지에서 전역 객체에 액세스하기 위해 어떤 가젯을 사용할 수 있습니다.
취약점이 다른 Python 파일에 있는 경우, 주 파일에 액세스하기 위해 파일을 탐색하는 가젯이 필요하며 Flask 시크릿 키를 변경하고 이 키를 알고 권한 상승할 수 있습니다.
이 writeup에서 이와 유사한 페이로드:
{% code overflow="wrap" %}
__init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.secret_key
{% endcode %}
이 페이로드를 사용하여 app.secret_key
를 변경하여 새로운 권한을 부여받은 플라스크 쿠키를 서명할 수 있습니다.
Werkzeug - machine_id 및 node uuid
이 문서에서 제공하는 페이로드를 사용하면 machine_id 및 uuid 노드에 액세스할 수 있으며, 이는 Werkzeug 핀을 생성하는 데 필요한 주요 비밀입니다. 이 핀을 사용하여 /console
에서 파이썬 콘솔에 액세스할 수 있습니다. 디버그 모드가 활성화된 경우:
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug]._machine_id}
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug].uuid._node}
{% hint style="warning" %}
**app.py
**에 대한 서버 로컬 경로를 얻을 수 있습니다. 웹 페이지에서 오류를 발생시켜 경로를 얻을 수 있습니다.
{% endhint %}
만약 취약점이 다른 파이썬 파일에 있다면, 주요 파이썬 파일에서 객체에 액세스하기 위한 이전 Flask 트릭을 확인하세요.
{% hint style="success" %}
AWS 해킹 학습 및 실습:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 학습 및 실습: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원
- 구독 요금제를 확인하세요!
- 💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- 해킹 트릭을 공유하려면 HackTricks 및 HackTricks Cloud github 저장소에 PR을 제출하세요.