Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
Podrazumevano, kada se fajl otpremi na PHP (čak i ako to ne očekuje), generisaće privremeni fajl u `/tmp` sa imenom kao što je **`php[a-zA-Z0-9]{6}`**, iako sam video neke docker slike gde generisani fajlovi ne sadrže cifre.
Druge tehnike se oslanjaju na napad PHP protokola (nećete moći ako kontrolišete samo poslednji deo putanje), otkrivanje putanje datoteke, zloupotrebu očekivanih datoteka, ili **uzrokovanje segmentacione greške u PHP-u tako da otpremljene privremene datoteke nisu obrisane**.\
Ova tehnika je **veoma slična prethodnoj, ali bez potrebe da se pronađe zero day**.
U ovoj tehnici **samo treba da kontrolišemo relativnu putanju**. Ako uspemo da otpremimo datoteke i učinimo da **LFI nikada ne završi**, imaćemo "dovoljno vremena" da **brute-force-ujemo otpremljene datoteke** i **pronađemo** bilo koju od njih.
* Ova ograničenja sa prethodnim mogu učiniti da ovaj napad traje predugo
* **Timeout za PHP zahtev**. Idealno bi trebalo da bude večan ili da ubije PHP proces bez brisanja privremeno otpremljenih datoteka, inače će to takođe biti problem
Dakle, kako možete **učiniti da PHP include nikada ne završi**? Samo uključivanjem datoteke **`/sys/kernel/security/apparmor/revision`** (**nažalost, nije dostupna u Docker kontejnerima...**).
Podrazumevano, Apache podržava **150 paralelnih konekcija**, prema [https://ubiq.co/tech-blog/increase-max-connections-apache/](https://ubiq.co/tech-blog/increase-max-connections-apache/) moguće je povećati ovaj broj do 8000. Pratite ovo da biste koristili PHP sa tim modulom: [https://www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-ubuntu-18-04](https://www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-ubuntu-18-04).
Ako je Apache server unapređen i mogli bismo da zloupotrebimo **4000 konekcija** (na pola puta do maksimalnog broja). Mogli bismo da kreiramo `3999*20 = 79980`**fajlova** i **broj** bi bio **smanjen** na oko **19.7h** ili **6.9h** (10h, 3.5h 50% šanse).
Ako umesto korišćenja regularnog php modula za apache za pokretanje PHP skripti **web stranica koristi****PHP-FMP** (to poboljšava efikasnost web stranice, tako da je uobičajeno naći ga), postoji nešto drugo što se može učiniti da se poboljša tehnika.
PHP-FMP omogućava da se **konfiguriše****parametar****`request_terminate_timeout`** u **`/etc/php/<php-version>/fpm/pool.d/www.conf`**.\
Ovaj parametar označava maksimalan broj sekundi **kada****zahtev za PHP mora da se završi** (beskonačno podrazumevano, ali **30s ako je parametar otkomentarisano**). Kada se zahtev obrađuje od strane PHP-a, označeni broj sekundi, on se **ubija**. To znači da, ako je zahtev učitavao privremene fajlove, zato što je **php obrada prekinuta**, ti **fajlovi neće biti obrisani**. Stoga, ako možete da napravite zahtev koji traje to vreme, možete **generisati hiljade privremenih fajlova** koji neće biti obrisani, što će **ubrati proces pronalaženja njih** i smanjiti verovatnoću DoS-a na platformi trošeći sve konekcije.
Dakle, da bismo **izbegli DoS**, pretpostavimo da **napadač koristi samo 100 konekcija** u isto vreme i maksimalno vreme obrade php-a od strane **php-fmp** (`request_terminate_timeout`**)** je **30s**. Stoga, broj **temp fajlova** koji se može generisati **po sekundi** je `100*20/30 = 66.67`.
Zatim, napadač bi mogao koristiti tih **100 konekcija** da izvrši **pretragu brute-force**. \*\*\*\* Pretpostavljajući brzinu od 300 req/s vreme potrebno za eksploataciju je sledeće:
Izgleda da podrazumevano Nginx podržava **512 paralelnih konekcija** u isto vreme (i ovaj broj se može poboljšati).
{% hint style="success" %}
Učite i vežbajte AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Učite i vežbajte GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**