LFI2RCE via PHP_SESSION_UPLOAD_PROGRESS
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
로컬 파일 포함 취약점을 발견한 경우, 세션이 없더라도 session.auto_start
가 Off
인 경우에도 가능합니다. **session.upload_progress.enabled
**가 **On
**이고 multipart POST 데이터에 **PHP_SESSION_UPLOAD_PROGRESS
**를 제공하면, PHP는 세션을 활성화합니다.
Note that with PHP_SESSION_UPLOAD_PROGRESS
you can control data inside the session, so if you includes your session file you can include a part you control (a php shellcode for example).
인터넷의 대부분의 튜토리얼은 디버깅 목적으로 session.upload_progress.cleanup
을 Off
로 설정할 것을 권장합니다. PHP의 기본 session.upload_progress.cleanup
은 여전히 On
입니다. 이는 세션의 업로드 진행 상황이 가능한 한 빨리 정리된다는 것을 의미합니다. 따라서 이것은 경쟁 조건이 될 것입니다.
원래 CTF에서 이 기술이 언급되었을 때, 경쟁 조건을 악용하기에는 충분하지 않았고 로드된 콘텐츠는 또한 문자열 @<?php
로 시작해야 했습니다.
기본 설정인 session.upload_progress.prefix
때문에, 우리의 SESSION 파일은 성가신 접두사 upload_progress_
로 시작합니다. 예: upload_progress_controlledcontentbyattacker
초기 접두사를 제거하는 요령은 페이로드를 3번 base64 인코딩한 다음 convert.base64-decode
필터를 통해 디코딩하는 것입니다. 이는 base64 디코딩 시 PHP가 이상한 문자를 제거하기 때문입니다. 따라서 3번 후에 오직 공격자가 전송한 페이로드만 남게 됩니다 (그 후 공격자는 초기 부분을 제어할 수 있습니다).
자세한 정보는 원래 작성물 https://blog.orange.tw/2018/10/과 최종 익스플로잇 https://github.com/orangetw/My-CTF-Web-Challenges/blob/master/hitcon-ctf-2018/one-line-php-challenge/exp_for_php.py 또 다른 작성물은 https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/에서 확인할 수 있습니다.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)