LFI2RCE via PHP_SESSION_UPLOAD_PROGRESS
Reading time: 3 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
Temel Bilgiler
Eğer bir Yerel Dosya Dahil Etme bulduysanız, hatta bir oturumunuz yoksa ve session.auto_start
Kapalı
ise. Eğer session.upload_progress.enabled
Açık
ise ve multipart POST verilerinde PHP_SESSION_UPLOAD_PROGRESS
sağlarsanız, PHP sizin için oturumu etkinleştirecektir.
$ 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
Not edin ki PHP_SESSION_UPLOAD_PROGRESS
ile oturum içindeki verileri kontrol edebilirsiniz, bu nedenle oturum dosyanızı dahil ederseniz kontrol ettiğiniz bir kısmı (örneğin bir php shellcode) dahil edebilirsiniz.
note
İnternetteki çoğu eğitim, hata ayıklama amacıyla session.upload_progress.cleanup
'ı Off
olarak ayarlamanızı öneriyor. PHP'deki varsayılan session.upload_progress.cleanup
hala On
'dur. Bu, oturumdaki yükleme ilerlemenizin mümkün olan en kısa sürede temizleneceği anlamına gelir. Bu nedenle bu bir Race Condition olacaktır.
CTF
Bu tekniğin yorumlandığı orijinal CTF 'de Race Condition'ı istismar etmek yeterli değildi, yüklenen içeriğin de @<?php
dizesi ile başlaması gerekiyordu.
session.upload_progress.prefix
'in varsayılan ayarı nedeniyle, OTURUM dosyamız rahatsız edici bir ön ekle başlayacaktır upload_progress_
Şöyle: upload_progress_controlledcontentbyattacker
Başlangıç ön ekini kaldırmanın hilesi, payload'ı 3 kez base64 encode etmek ve ardından convert.base64-decode
filtreleri aracılığıyla decode etmektir, çünkü base64 decode ederken PHP garip karakterleri kaldıracaktır, bu nedenle 3 kez sadece saldırgan tarafından gönderilen payload kalacaktır (ve ardından saldırgan başlangıç kısmını kontrol edebilir).
Daha fazla bilgi için orijinal yazıya https://blog.orange.tw/2018/10/ ve son istismar için https://github.com/orangetw/My-CTF-Web-Challenges/blob/master/hitcon-ctf-2018/one-line-php-challenge/exp_for_php.py
Başka bir yazı için https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.