LFI2RCE via PHP_SESSION_UPLOAD_PROGRESS
Temel Bilgiler
Eğer bir Yerel Dosya Dahil Etme (LFI) bulduysanız ve bir oturumunuz yoksa ve session.auto_start
Off
ise. Eğer session.upload_progress.enabled
On
ise ve PHP_SESSION_UPLOAD_PROGRESS
'u multipart POST verilerinde sağlarsanız, PHP sizin için oturumu etkinleştirecektir.
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ü (örneğin bir php kabuk kodu) dahil edebilirsiniz.
İnternet'teki çoğu öğretici, hata ayıklama amacıyla session.upload_progress.cleanup
'ı Off
olarak ayarlamanızı önerir. Ancak PHP'nin varsayılan session.upload_progress.cleanup
değeri hala On
dur. Bu, oturumda yükleme ilerlemenizin mümkün olan en kısa sürede temizleneceği anlamına gelir. Bu yüzden bu bir Yarış Koşulu olacaktır.
CTF
Bu tekniğin yorumlandığı orijinal CTF 'de, Yarış Koşulunu sömürmek yeterli değildi, yüklenen içeriğin ayrıca @<?php
dizesiyle başlaması gerekiyordu.
session.upload_progress.prefix
'in varsayılan ayarı nedeniyle, OTURUM dosyamız bir rahatsız edici önekle başlayacak upload_progress_
Örneğin: upload_progress_controlledcontentbyattacker
Başlangıç öneki kaldırmak için hileyi payload'ı 3 kez base64 kodlamak ve ardından convert.base64-decode
filtreleri aracılığıyla kodlamaktı, çünkü base64 kod çözme PHP, garip karakterleri kaldırır, bu yüzden 3 kez sonra sadece saldırgan tarafından gönderilen payload kalı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 saldırıya https://github.com/orangetw/My-CTF-Web-Challenges/blob/master/hitcon-ctf-2018/one-line-php-challenge/exp_for_php.py adresinden ulaşabilirsiniz. Başka bir yazıya https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/ ulaşabilirsiniz.
Last updated