LFI2RCE via PHP_SESSION_UPLOAD_PROGRESS
Reading time: 3 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
기본 정보
세션이 없고 session.auto_start
가 꺼져 있어도 Local File Inclusion을 발견한 경우, **session.upload_progress.enabled
**가 켜져 있고 multipart POST 데이터에 **PHP_SESSION_UPLOAD_PROGRESS
**를 제공하면 PHP가 세션을 활성화합니다.
$ curl http://127.0.0.1/ -H 'Cookie: PHPSESSID=iamorange'
$ ls -a /var/lib/php/sessions/
. ..
$ curl http://127.0.0.1/ -H 'Cookie: PHPSESSID=iamorange' -d 'PHP_SESSION_UPLOAD_PROGRESS=blahblahblah'
$ ls -a /var/lib/php/sessions/
. ..
$ curl http://127.0.0.1/ -H 'Cookie: PHPSESSID=iamorange' -F 'PHP_SESSION_UPLOAD_PROGRESS=blahblahblah' -F 'file=@/etc/passwd'
$ ls -a /var/lib/php/sessions/
. .. sess_iamorange
In the last example the session will contain the string blahblahblah
**PHP_SESSION_UPLOAD_PROGRESS
**를 사용하면 세션 내의 데이터를 제어할 수 있으므로, 세션 파일을 포함하면 제어할 수 있는 부분(예: php 쉘코드)을 포함할 수 있습니다.
note
인터넷의 대부분의 튜토리얼에서는 디버깅 목적으로 session.upload_progress.cleanup
을 Off
로 설정할 것을 권장합니다. 그러나 PHP의 기본 session.upload_progress.cleanup
은 여전히 On
입니다. 이는 세션의 업로드 진행 상황이 가능한 한 빨리 정리된다는 것을 의미합니다. 따라서 이는 경쟁 조건이 될 것입니다.
CTF
이 기술이 언급된 원래 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/에서 확인할 수 있습니다.
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.