5 KiB
LFI2RCE via PHP_SESSION_UPLOAD_PROGRESS
{% hint style="success" %}
AWS Hacking'i öğrenin ve uygulayın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)
GCP Hacking'i öğrenin ve uygulayın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- 💬 Discord grubuna katılın veya telegram grubuna katılın veya bizi Twitter 🐦 @hacktricks_live** takip edin**.
- HackTricks ve HackTricks Cloud github depolarına PR göndererek hacking püf noktalarını paylaşın.
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).
{% hint style="info" %}
İnternet üzerindeki çoğu öğretici, hata ayıklama amacıyla session.upload_progress.cleanup
'ı Off
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.
{% endhint %}
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/
{% hint style="success" %}
AWS Hacking öğrenin ve uygulayın:HackTricks Eğitim AWS Red Team Expert (ARTE)
GCP Hacking öğrenin ve uygulayın: HackTricks Eğitim GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- 💬 Discord grubuna katılın veya telegram grubuna katılın veya bizi Twitter 🐦 @hacktricks_live** takip edin.**
- Hacking püf noktalarını paylaşarak PR'ler göndererek HackTricks ve HackTricks Cloud github depolarına katkıda bulunun.