5 KiB
LFI2RCE via PHP_SESSION_UPLOAD_PROGRESS
Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy wil sien dat jou maatskappy geadverteer word in HackTricks of HackTricks aflaai in PDF-formaat, kyk na die SUBSCRIPTION PLANS!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek The PEASS Family, ons versameling van eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel jou hacking-truuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-repos.
Basiese Inligting
As jy 'n Local File Inclusion gevind het, selfs as jy nie 'n sessie het nie en session.auto_start
is Off
. As session.upload_progress.enabled
On
is en jy die PHP_SESSION_UPLOAD_PROGRESS
in multipart POST-data verskaf, sal PHP die sessie vir jou aktiveer.
$ 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
Let wel dat met PHP_SESSION_UPLOAD_PROGRESS
jy data binne die sessie kan beheer, so as jy jou sessie lêer insluit, kan jy 'n deel insluit wat jy beheer (byvoorbeeld 'n PHP shellcode).
{% hint style="info" %}
Alhoewel die meeste tutoriale op die internet aanbeveel dat jy session.upload_progress.cleanup
op Off
stel vir die doel van foutopsporing, is die verstekwaarde van session.upload_progress.cleanup
in PHP steeds On
. Dit beteken dat jou oplaai-vordering in die sessie so gou as moontlik skoongemaak sal word. Dit sal dus 'n Race Condition wees.
{% endhint %}
Die CTF
In die oorspronklike CTF waar hierdie tegniek bespreek word, was dit nie genoeg om die Race Condition uit te buit nie, maar die gelaai inhoud moes ook begin met die string @<?php
.
As gevolg van die verstekinstelling van session.upload_progress.prefix
, sal ons SESSIE-lêer begin met 'n hinderlike voorvoegsel upload_progress_
Soos: upload_progress_controlledcontentbyattacker
Die truuk om die aanvanklike voorvoegsel te verwyder was om die payload 3 keer te base64encode en dit dan te dekodeer via die convert.base64-decode
filters. Dit is omdat wanneer PHP base64 dekodeer, sal dit die vreemde karakters verwyder, so na 3 keer sal slegs die payload wat deur die aanvaller gestuur is, oorbly (en dan kan die aanvaller die aanvanklike deel beheer).
Meer inligting in die oorspronklike writeup https://blog.orange.tw/2018/10/ en finale uitbuiting https://github.com/orangetw/My-CTF-Web-Challenges/blob/master/hitcon-ctf-2018/one-line-php-challenge/exp_for_php.py
'n Ander writeup in https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/
Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy wil sien dat jou maatskappy geadverteer word in HackTricks of HackTricks aflaai in PDF-formaat, kyk na die SUBSCRIPTION PLANS!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek The PEASS Family, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel jou hacking-truuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslag.