LFI2RCE via PHP_SESSION_UPLOAD_PROGRESS
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
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)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


