LFI2RCE via PHP_SESSION_UPLOAD_PROGRESS

HackTricks'i Destekleyin

Temel Bilgiler

Eğer bir Yerel Dosya Dahil Etme bulduysanız ve bir oturumunuz yoksa ve session.auto_start Off ise bile. Eğer session.upload_progress.enabled On ise ve PHP_SESSION_UPLOAD_PROGRESS'i multipart POST verilerinde sağlarsanız, PHP oturumu sizin için 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

PHP_SESSION_UPLOAD_PROGRESS ile oturum içindeki verileri kontrol edebilirsiniz, bu nedenle oturum dosyanızı dahil ederseniz kontrol ettiğiniz bir bölümü dahil edebilirsiniz (örneğin bir php kabuk kodu).

İnternet üzerindeki çoğu öğretici, hata ayıklama amacıyla session.upload_progress.cleanupOff olarak ayarlamanızı önerse de, 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 Yarış Koşulu olacaktır.

CTF

Bu tekniğin yorumlandığı orijinal CTF 'de, Yarış Koşulunu sömürmek yeterli olmadı, ayrıca yüklenen içeriğin @<?php dizesiyle başlaması gerekiyordu.

session.upload_progress.prefix'in varsayılan ayarı nedeniyle, OTURUM dosyamız can sıkıcı bir önekle başlayacak upload_progress_ Örneğin: upload_progress_controlledcontentbyattacker

Başlangıç önekini kaldırmak için hileyi payload'ı 3 kez base64encode etmek ve ardından convert.base64-decode filtreleri aracılığıyla kodlamak oldu, çünkü base64 kodunu çözerken PHP garip karakterleri kaldıracaktır, bu nedenle 3 kezden sonra sadece saldırgan tarafından gönderilen payload kalacak (ve ardından saldırgan başlangıç kısmı kontrol edebilecektir).

Daha fazla bilgi için orijinal yazıda https://blog.orange.tw/2018/10/ ve nihai saldırı 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ıda https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/

HackTricks'i Destekleyin

Last updated