yoyois Posted September 10, 2013 Report Posted September 10, 2013 Am facut un script php care ar trebui sa securizeze automat toti parametrii de intrare(GET, POST, COOKIE) Oricare ai fi ei (nume sau tip).Aplicatia functioneaza si ca honeypot, identificand vectorii, si stocandu-i impreuna cu ip-ul, useragent-ul si referral-ul utilizatorului.Teoretic, aplicatia ai putea combate orice atac XSS, SQLi si ar combate mare parte din atacurile LFI.La identificarea unui keyword: union, select, information_schema, javascript, aplicatia nu sterge automat cuvantul, ci il transforma in entitati.Aplicatia nu raspunde atacurilor, ci doar le inregistreaza, actionand ca un honeypot.Cred eu ca: Este de ajutor dezvoltatorilor care sunt dezorganizati sau care se tem ca unele variabile pot fi uitate sa fie trecute prin filtru.Aplicatia este expiremntala (inca). Am lucrat doar 2 ore la ea.Insa codul sursa va fi publicat in scurt timp, premintand schimbarea desig-ului, functionalitatii, si a keywordurilor.Practic: Have fun with it! Develop and let us know your improved versions.pana acum am urcat scriptul pe un site:XSS: parametru id http://massstore.site50.net/index.php?id=1SQLi: parametru id(tip string) http://massstore.site50.net/page.php?id=2XSS Array: http://massstore.site50.net/file.php?id=1&caca=3&us=pune%20cati%20parametrii%20vrei,%20toti%20vor%20fi%20filtrati%20si%20afisatihttp://massstore.site50.net/file.php?test=1&nui=esteAdmin: LogInParola: YWRtaW4lM0FhZG1pbg==Am zis ca site-ul e expiremtal(si in lucru). Daca aveti sugestii nu ezitati.Voi publica in scurt timp sursa. Daca doriti sa o dezvoltati de acum: PM si sa trimit si voua codul.Nu a fost copiat niciun element tehnic din WAFAPA!EDIT: Banuiesc ca veti gasi ceva gauri de securitate. NU se pun cu adevarat decat daca se pot extrage informatii sensibile. and 1=1 (stiu deja ca 1=1) Quote
eusimplu Posted September 10, 2013 Report Posted September 10, 2013 (edited) Care este diferenta dintre WAF-ul tau si un simplu foreach?foreach($_GET as $k => $v){ $_GET[$k] = @htmlspecialchars($_GET[$k], ENT_QUOTES);}foreach($_POST as $k => $v){ $_POST[$k] = @htmlspecialchars($_POST[$k], ENT_QUOTES);}foreach($_COOKIE as $k => $v){ $_COOKIE[$k] = @htmlspecialchars($_COOKIE[$k], ENT_QUOTES);}FPD => =pune%20cati%20parametrii%20vrei,%20toti%20vor%20fi%20filtrati%20si%20afisati%3C%3E%3C%3E%3C%3E"]http://massstore.site50.net/file.php?id=1&caca=3&us[]=pune%20cati%20parametrii%20vrei,%20toti%20vor%20fi%20filtrati%20si%20afisati%3C%3E%3C%3E%3C%3E Edited September 10, 2013 by eusimplu Quote
yoyois Posted September 10, 2013 Author Report Posted September 10, 2013 Care este diferenta dintre WAF-ul tau si un simplu foreach?foreach($_GET as $k => $v){ $_GET[$k] = htmlspecialchars($_GET[$k], ENT_QUOTES);}foreach($_POST as $k => $v){ $_POST[$k] = htmlspecialchars($_POST[$k], ENT_QUOTES);}foreach($_COOKIE as $k => $v){ $_COOKIE[$k] = htmlspecialchars($_COOKIE[$k], ENT_QUOTES);}Partea de administrare.Sistemul e proiectat inspre a identifica, retine si bloca vulnerabilitatile.Da, are la baza un for each.Yeah. Stiu FPD. Nu sunt prea multe metode sa o opresti. Un simplu FPD tu te poate ajuta sa vatamezi site-ul ... Quote
eusimplu Posted September 10, 2013 Report Posted September 10, 2013 La SQLi este WAF-ul sau doar ai folosit "operatorul" (int)?http://massstore.site50.net/page.php?id=22http://massstore.site50.net/page.php?id=2a2 Quote
qbert Posted September 10, 2013 Report Posted September 10, 2013 Nu este aplicabil in real life. Detectarea trebuie facuta pattern-based, plus ca cel mai probabil va strica functionalitatea aplicatiei, daca te gandesti sa il "distribui" ca un add-on. Quote
yoyois Posted September 10, 2013 Author Report Posted September 10, 2013 (edited) La SQLi este WAF-ul sau doar ai folosit "operatorul" (int)?http://massstore.site50.net/page.php?id=22http://massstore.site50.net/page.php?id=2a2Nu e injectie.Acolo se selecteaza id-ul din baza de date. Poate fi id=1 sau id=2.Probabil la 2a2 se face conversia, in baza de date id fiind tip INT.Come on, Veniti cu ceva mai interesant ...@qbertChestia e ca se poate aplica la un site mic, cu: id, article, page, 2-3 cookie-uri.La aplicatii serioase s-ar cam bate in cap cu unele functii.Dar de asta e aici, sa fie dezvoltat, iti poti selecta, implementa propriile functii, propriile keywords, pattern, etc.PS: O sa-ik dezvolt in scurt timp un sistem de pattern search mai dezvoltat. Edited September 10, 2013 by yoyois Quote
Andrei Posted September 10, 2013 Report Posted September 10, 2013 Varianta asta e si mai buna foreach($_GET as $k => $v){ $_GET[htmlspecialchars($k,ENT_QUOTES)] = htmlspecialchars($_GET[$k], ENT_QUOTES);}foreach($_POST as $k => $v){ $_POST[htmlspecialchars($k,ENT_QUOTES)] = htmlspecialchars($_POST[$k], ENT_QUOTES);}foreach($_COOKIE as $k => $v){ $_COOKIE[htmlspecialchars($k,ENT_QUOTES)] = htmlspecialchars($_COOKIE[$k], ENT_QUOTES);}Cine v-a spus ca WAF-urile pattern based sunt bune? De aceea toate cele existente pana acum au metode de bypassing? Quote
SilenTx0 Posted September 10, 2013 Report Posted September 10, 2013 Reckon, tu taci ma:)) ca aveai probleme mai mari si mai multe la al tau si acum vii aici cu " Nu stiam ca orDINAR si andREI fac parte din sintaxe SQL:"...ON: In general nu am o parere prea buna despre WAF-uri, prefer sa securizez manual.Ideea acestui waf este buna, iar dupa parerea mea este mai bun decat a lui Reckon.Sunt curios daca va fi gratuit(dupa ce este gata). Quote
SilenTx0 Posted September 10, 2013 Report Posted September 10, 2013 Este.Detecteaza singur parametrii care trebuie sa-i securizeze, nu trebuie sa-i bagi tu manual ceea ce-l face cu mult peste a tau.faptul ca nu diferentiaza cuvintele, nu e o problema, se poate rezolva rapid + ca e la inceput proiectul... Quote
Silviu Posted September 10, 2013 Report Posted September 10, 2013 Folositi-va de PHP: strtolower - Manual ca sa scapati cu mai putine batai de cap. Quote
yoyois Posted September 11, 2013 Author Report Posted September 11, 2013 (edited) Folositi-va de PHP: strtolower - Manual ca sa scapati cu mai putine batai de cap.E folosit. Sirul e filtrat case insensitive.Stiu ca sunt ceva probleme la diferentiereea or, and, if, union, etc.Totusi ca filtru incearca: mor (si vezi ca nu e luat ca injectie).mai lucrez putin la un model ceva mai complex si customizabil, sa-ti poti introduce propriile keyword-uri in filtru prin panou.Si da SilenTx0. PProiectul va ramane free, si open-source. Ca sa-si poata customiza fiecare versiunea sa.Acest firewall este asemanator cu primul firewall care l-am postat eu la Market, deci se poate imbunatati, dar atata timp cat el nu diferentia cuvintele de sintaxe, nu ai cum sa spui ca este mai bun ca WAFAPA.LE: Rezolvat problema cu orGANIZARE. NU se inregistreaza decat daca este cuvant de sine statator sau daca in fata sa este o cifra: ex: /*!50000union*/ Edited September 11, 2013 by yoyois Quote
dsp77 Posted September 11, 2013 Report Posted September 11, 2013 la htmlspecialchars pune si al 3-lea parametru 'UTF-8' Quote