Funcțiile fopen, file, include și necesită deschiderea fișierelor de pe alte site-uri prin intermediul protocoalelor http și ftp. Această posibilitate are o potențială vulnerabilitate în script-urile php, ceea ce permite utilizarea site-ului ca proxy.
Nu vă avertizez nimic nou în acest material nu va. În ciuda posibilităților impresionante pentru atacator, această vulnerabilitate # 151; doar o combinație a proprietăților bine-cunoscute ale php.
În Internetul în limba rusă, această vulnerabilitate practic nu era acoperită. Pe site-urile de securitate rusă, nu am putut găsi un raport direct cu privire la această vulnerabilitate.
vulnerabilitate
Url fopen wrapper
CR / LF în cererile HTTP
Combinația dintre caracterele de retur și caracterele liniare în cererea HTTP separă anteturile. Detalii despre acest lucru pot fi găsite în articolul lui Anton Kalmykov "Generarea cererilor HTTP". Această combinație de caractere poate fi trecută în cererea GET ca "% 0D% 0A".
Intrare nesupusă
Pe multe site-uri, paginile sunt generate de un script de șablon. Scriptul redirecționează toate solicitările către site. Din REQUEST_URI se ia numele fișierului care urmează să fie deschis. Fișierul este citit, un șablon cu navigare, un capac etc. este adăugat la acesta. iar rezultatul este dat clientului.
Un programator non-sofisticat sau neexperimentat poate scrie cu ușurință un fișier deschis fără a verifica datele:
Exploatare inteligentă
Exploatarea măsurilor de protecție
Tu, ca un dezvoltator sau proprietar al site-ului, este important să se facă tot posibilul pentru a obține prin intermediul site-ul dvs. nimeni nu a fost în măsură pentru a trimite spam. Dacă se întâmplă acest lucru, acesta va fi trimis la orice dial-up Hawaii, ale căror proprietari nu înțeleg limbajul uman și termenul limită se poate face pentru tine.
Verificarea istoricului interogărilor
Configurarea php
Cea mai ușoară modalitate de a dezactiva o posibilă vulnerabilitate # 151; Nu permiteți deschiderea adreselor URL prin intermediul funcțiilor fișierelor. Dacă sunteți administratorul serverului dvs. # 151; interziceți permis_url_fopen în setările php. Dacă sunteți doar un client # 151; interzicerea la domiciliu la nivel local. Fișierul .htaccess la rădăcina site-ului scrie o linie: php_value allow_url_fopen 0 Dacă sunteți un web hosting rău furnizor, puteți dezactiva URL-ul fopen înveliș pentru toți clienții care utilizează directiva php_admin_value. Activarea modului de siguranță (modul de siguranță), în acest caz, nu ajută, funcția continuă să funcționeze în mod corespunzător.
Schimbarea codului
Terminați lucrul cu o cerere în afara cererii
Un client care scanează site-ul pentru variabilele necontrolate creează trafic inutil și încarcă procesorul serverului. Este clar că nu are nevoie de paginile generate de site-ul dvs. dacă nu funcționează ca proxy. Este de dorit să omori astfel de solicitări înainte de a lansa interpretul php. Acest lucru se poate face cu modulul mod_rewrite. În fișierul .htaccess din rădăcina site-ului am pus această linie:
Se presupune că site-ul nu va fi trimis utilizând formularele metodelor GET cu intrări de utilizator multi-linie. În caz contrar, vor fi oprite de această regulă.