Atacuri posibile
Utilizarea PHP în calitate de binar CGI este o opţiune pentru cazurile când dintr-un anume motiv nu se doreşte integrarea PHP în calitate de modul în serverul software (precum Apache), sau PHP se va utiliza cu diferite tipuri de învelişuri CGI pentru a crea medii securizate cu ajutorul chroot şi setuid pentru scripturi. Această variantă implică de obicei instalarea binarului PHP executabil în directorul cgi-bin al serverului web. Îndrumarul CERT » CA-96.11 nu recomandă plasarea oricărui tip de interpretor de acest gen în directorul cgi-bin. Chiar dacă binarul PHP poate fi folosit ca un interpretor de sine stătător, PHP a fost conceput în aşa fel, încât să prevină atacuri, pe care o asemenea variantă de utilizare le face posibilă:
- Accesarea fişierelor din sistem: http://my.host/cgi-bin/php?/etc/passwd Informaţia din URL de după semnul de întrebare (?) este transmisă interpretorului în calitate de argumente în linia de comandă de către interfaţa CGI. De obicei interpretoarele deschid şi execută fişierul specificat ca prim argument în linia de comandă. Când este apelat ca un binar CGI, PHP refuză să interpreteze argumentele din linia de comandă.
- Accesarea oricărui document web de pe server: http://my.host/cgi-bin/php/secret/doc.html Informaţiile introduse în URL după denumirea binarului PHP, /secret/doc.html sunt de obicei utilizate pentru a specifica denumirea şi calea către fişierul care trebuie deschis de către interpretorul CGI. De obicei directivele din configuraţia unui server web (Apache: Action) sunt folosite pentru a redirecţiona interpelările către documente ca http://my.host/secret/script.php către interpretorul PHP. În acest caz, serverul web verifică mai întâi permisiunile de acces către directorul /secret, şi după aceea creează interpelarea de redirecţionare către http://my.host/cgi-bin/php/secret/script.php. Cu regret, dacă interpelarea este iniţial scrisă în această formă, serverul web nu efectuează nici o verificare de acces către fişierul /secret/script.php, ci numai către fişierul /cgi-bin/php. În acest fel, orice utilizator care poate accesa fişierul /cgi-bin/php, poate accesa şi orice document protejat de pe serverul web. În PHP, opţiunea din timpul compilării --enable-force-cgi-redirect şi directivele de configuraţie la rulare doc_root şi user_dir pot fi utilizate pentru a preveni acest atac, dacă arborele de documente de pe server conţine directoare cu acces restricţionat. Observaţi mai jos explicaţii detaliate despre diferite combinaţii.
Atacuri posibile
