Forum und email

Instalat ca un binar CGI

Cuprins

Atacuri posibile

Folosind PHP ca pe un binar CGI este o optiune pe care setup-urile, dintr-un anume motiv, nu doresc sa o configureze si sa o integreze in PHP ca pe un modul in serverul software (precum Apache), sau vor folosi PHP cu ajutorul diferitelor metode de CGI wrap pentru a crea medii securizate chroot si setuid pentru scripturi. Acest setup implica de obicei instalarea binarului PHP executabil in directorul cgi-bin din serverul web. Indrumarul CERT » CA-96.11 nu recomanda plasarea oricarui tip de interpretor de acest gen in directorul cgi-bin. Chiar daca binarul PHP poate fi folosit ca un interpretor de sine statator, PHP a fost conceput in asa fel incat sa anticipeze atacuri generate de un asemenea setup:

  • Accesarea fisierelor din sistem: https://host.ext/cgi-bin/php?/etc/passwd Informatia din URL de dupa semnul de intrebare (?) este pasata liniei de comanda ca argumente si interpretata de interfata CGI. De obicei interpretoarele deschid si executa fisierul specificat ca prim argument in linia de comanda. Cand este apelat ca un binar CGI, PHP refuza sa interpreteze argumentele din linia de comanda.
  • Puteti accesa orice document de pe server: https://host.ext/cgi-bin/php/secret/doc.html Informatiile introduse in URL dupa numele binarului PHP, /secret/doc.html sunt de obicei utilizate pentru a specifica numele si calea catre fisierul care trebuie deschis de catre interpretorul CGI. De obicei directivele din configuratia unui server web (Apache: Action) sunt folosite pentru a redirecta cererile catre documente ca https://www.host_victima.ro/secret/script.php catre interpretorul PHP. Cu acest setup, serverul web verifica mai intai permisiile de acces catre directorul /secret, si dupa aceea creaza cererea de redirectionare catre https://www.host.ro/cgi-bin/php/secret/script.php. Din pacate, daca cererea originala se face sub aceasta forma nu sunt facute nici un fel de verificari de catre serverul web catre fisierul /secret/script.php, ci numai pentru fisierul /cgi-bin/php. In acest fel, orice utilizator care poate executa /cgi-bin/php, poate accesa automat orice director sau fisier protejat de pe server. In PHP, optiunea din timpul compilarii --enable-force-cgi-redirect si directivele de configuratie doc_root si user_dir pot fi folosite pentru a preveni acest atac, daca structura documentelor de pe server contine vreun director cu acces restrictionat. Observati mai jos explicatii detaliate despre diferite combinatii.