Corex Posted March 24, 2014 Report Posted March 24, 2014 (edited) In tutorialul de astazi o sa va vorbesc de cele mai populare vulnerabilitati si exploatarea acestora.1) XSS (Cross Site Scripting)2) SQLI (SQL Injection)3) SCD (Source Code Disclosure)4) LFI (Local File Inclusion)5) RCE (Remote Code Execution)1) XSS (Cross Site Scripting)Cross site scripting este o vulnerabilitate prin care permite atacatorului sa injecteze coduri HTML / JavascriptMajoritatea atacurile de acest tip tintesc cookie-urile.-Cum sa imi dau seama ca este vorba de un XSS?Testarea "parametrului" vulnerabil se face cu un vector de obicei se foloseste un vector cu o alertaJavaScriptex: "><script>alert(2)</script>Cate tipuri de XSS-uri exista?Dupa cate stiu eu sunt doua tipuri de XSSPersistent: sau XSS reflectat care este vulnerabil pe acel parametru dar nu salveaza datele nicaieriSi "victima" trebuie sa acceseze linkul creat de tine cu GraberNepersistent: Acest tip afecteaza toti utilzatorii site-ului deoarece vectorul de xss ramane imprimat in sursa paginii- De ce apare aceasta vulnerabilitate?Aceasta vulnerabilitate apare din cauza ca nu sunt filtrate inforatiile are le afiseaza.Intr-un cuvant le afiseaza direct in codul sursaexemplu:<?php<?php if(isset($_GET['vulnerabil'])) { $var=$_GET['vulnerabil']; print $var; } ?>?>Acest script este vulnerabil la XSS! Cum ii facem testul ?Foarte simplu , sa spunem ca am creeat un fisier xss.phpSi l-am urcat pe www.rstforums.com/xss.phpVom lucra pe parametru GET deci noi pe parametru GET am pus rstforumsIntram asarstforums.com/xss.php?rstforums=(vector)In realitate o sa arate exact asarstforums.com/xss.php?rstforums=<script>alert(2)</script>Nu voi intra in detalii despre exploatare , acum o sa va dau si solutia de securizare a vulnerabilitatii acestea!In tutorialul nostru ne vom folosi de functia htmlentities din PHP pentru a ne proteja de acest atac.<?phpecho htmlentities((stripslashes($_GET['text'])), ENT_QUOTES);?>Ce face htmlentities? Pur si simplu converteste toate caracterele care se folosesc de aplicatia HTML / JAVASCRIPTVa las aici si un link cu fel de fel de vectori care ii puteti folosiXSS Vector Collection - Pastebin.com2) SQLI (SQL Injection)Sql injection este o vulnerabilitate care afecteaza in mare parte serverele MYSQL al paginii respectiveCum iti dai seama ca un site este vulnerabil la SQL Injection Gasirea vulnerabilitatii cand este vorba de SQLI la site-uri In primul rand se testeaza cu ' daca va fi returnata o eroare de exempluYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\' AND publ_option = 'Y' LIMIT 0, 1' at line 1atunci fiti siguri ca va confruntati cu o vulnerabilitate de tip SQL injectionMetodele de exploatare cele mai intalnite sunt-Union based-error based-double query-Time Based-PostGree-Cum apare vulnerabilitatea SQL Injection?Sa zicem ca avem urmatorul script <?php mysql_connect("localhost","user","password"); mysql_select_db("db"); $informatii=($_GET['id']); $int=mysql_query("SELECT * FROM post WHERE postid='".$informatii."'"); ?>Scriptul cauta in baza de date in functie de un anumit ID , pe care utilizatorul il trimite prin GET catre server.- Cum se repara aceasta vulnerabilitate?Protejarea site-ului dumneavoastra de aceasta vulnerabilitate se face cu functia mysql_real_escape_stringDeci scriptul dumneavoastra va arata cam asa <?php mysql_connect("localhost","user","password"); mysql_select_db("db"); $informatii=mysql_real_escape_string($_GET['id']); $int=mysql_query("SELECT * FROM post WHERE postid='".$informatii."'"); ?>3. SCD (Source Code Disclosure)SCD-ul este o vulnerabilitate mai periculoasa decat SQL injection deoarece aceasta vulnerabilitate iti permite sa descarci sau sa vezi codul sursa a unei pagini (Partea de PHP)De cele mai multe ori atacatorul urmareste informatii sensibile care ii aduce accessul site-ului respectiv.-Cum se testeaza daca parametru este vulnerabil la SCDIn majoritatea cazurilor SCD-ul este gasit in paginile de download.exemplu avem urmatorul linkwww.site.com/download.php?carte=ioncreanga.pdfDupa download.php?carte= puneti index.phpAici sunt doua posiblitati.Ori il descarcaOri apare in codu sursa a paginii.4) LFI (Local File Inclusion)Cu ajutorul acestei vulnerabilitati atacatorul poate include anumite fisiere critice in server sau poate fi transformat cu success intr-un SCD- Cum se creaza vulnerabilitatea ?Avem urmatorul exemplu$file = $_SERVER["DOCUMENT_ROOT"]. $_REQUEST['file'];header("Pragma: public");header("Expires: 0");header("Cache-Control: must-revalidate, post-check=0, pre-check=0");header("Content-Type: application/force-download");header( "Content-Disposition: attachment; filename=".basename($file));//header( "Content-Description: File Transfer");@readfile($file);die();Variabila “file” nu este securizata.Putem observa in prima linie ca este ceruta prin metoda $_REQUEST.Si continutul fisierului este afisat prin intermediul functiei readfile().Deci putem vedea continutul unui fisier arbitrar. Daca facem urmatoarea cerere : http://site/download.php?file=../../../../../../etc/passwd putem citii cu succes fisierul “etc/passwd”.- Cum se securizeaza?Metoda simpla : Nu permite caractere speciale in variabile.Filtreaza “.” .Alta metoda : Filtreaza “/” , “\” si “.” .5) RCE (Remote Code Execution)RCE dupa mine este cea mai periculoasa vulnerabilitate web din cate exista si totusi printre cele mai raredeoarece aceasta vulnerabilitate permite executarea codurilor de tip PHPCum apare aceasta vulnerabilitate?Avem exemplu$status = $_GET['status'];$ns = $_GET['ns'];$host = $_GET['host'];$query_type = $_GET['query_type']; // ANY, MX, A , etc.$ip = $_SERVER['REMOTE_ADDR'];$self = $_SERVER['PHP_SELF'];........................ etc ........................$host = trim($host);$host = strtolower($host);echo("<span class=\"plainBlue\"><b>Executing : <u>dig @$ns $host $query_type</u></b><br>");echo '<pre>';system ("dig @$ns $host $query_type");Variabila “ns” nu este filtrata si atacatorul poate specifica orice valoare.Un atacator poate folosi orice comanda prin intermediul acestei variabile.Sa facem o cerere :http://127.0.0.1/dig.php?ns=whoam&host=sirgod.net&query_type=NS&status=diggingInjectia nu va functiona.De ce?Comanda executata va fi “dig whoami sirgod.com NS” si nu va functiona desigur.Sa incercam in alt fel.Avem operatorul OR (||) si il vom folosi pentru a “separa” comenzile.Exemplu :http://127.0.0.1/dig.php?ns=||whoami||&host=sirgod.net&query_type=NS&status=diggingComanda noastra va fi executata.Comanda va devenii “dig ||whoami|| sirgod.net NS” .Cum se securizeaza?Utilizati functiile escapeshellarg() si escapeshellcmd() .Cam asta a fost tot daca gasiti in tutorial greseli tehnice / gramatice trimiteti-mi PM cu ele.Sursa la o bucata de tutorialhttps://www.worldit.info/articole/gasirea-vulnerabilitatilor-in-scripturi-php-si-rezolvarea-acestora/ Edited March 24, 2014 by Corex
Stealth Posted March 24, 2014 Report Posted March 24, 2014 (edited) Este de apreciat timpul investit de tine pentru a scrie aceste informa?ii care sunt totu?i publice (la o distan?? de un click) pe orice forum de securitate / hacking. În locul lucrurilor ?stora mai bine studiam o vulnerabilitate ce "eu" nu o ?tiam ?i f?ceam un tutorial. Nu vre?i s? trece?i la un alt nivel? Nu v? mai plafona?i pe acelea?i lucruri. Nu o s? intru în polemici s? critic orice detaliu.XSS Nu exist? dou? tipuri, ci trei (DOM XSS, Persistent XSS, Reflected XSS). Apropo nu exista cuvantul "nepersistent" în vocabularul limbii române.SQL Injection PostGree. Nu exist? metoda asta, PostGreSQL este un tip de baz? de date ca ?i MySQL. Interog?rile sunt specifice ei.Source Code Disclosure Ce ai eviden?iat tu mai degrab? s-ar numi AFD - Arbitrary File Download (când descarci o fil? prin intermediul alteia) respectiv Local File Inclusion.Remote Code/Command execution Sunt curios dac? îmi po?i explica de ce a fost ales un script de genul ?la pentru exemplificarea vulnerabilit??ii RCE. Note: (Cam asta a fost tot daca gasiti in tutorial greseli tehnice / gramatice (corect:gramaticale) trimiteti-mi PM cu ele.) Ai timp s? înve?i. M?car incerci ceva în compara?ie cu al?ii. Edited March 24, 2014 by Stealth
SilenTx0 Posted March 24, 2014 Report Posted March 24, 2014 (edited) Niste prostii, sau cel putin la XSS ca restul n-am mai ctit.De ce ai pus "><script>alert(2)</script> si nu <script>alert(2)</script> ?La "Cate tipuri de XSS-uri exista?" n-are rost sa mai comentez ca e o varza totala. Tot ce ai scris tu acolo e gresit.Ai dat exemplu de un cod vulnerabil in care se cerea parametru vulnerabil(chiar asa se numea) iar tu ai folosit parametrul rstforums. Normal ca nu va functiona.Mi-e frica sa citesc in continuare. Propun ca topicul sa fie mutat la cos pentru ca ce e scris aici sunt numai prostii.ps: lasa-te de facut tutoriale pana inveti. Edited March 24, 2014 by SilenTx0
hades Posted March 24, 2014 Report Posted March 24, 2014 Daca ma pun sa caut, gasesc aproximativ 24 de tutoriale de genu' asta pe forum. De evoluat, cand evoluati, ca va prind primatele din spate si nici nu se grabesc.
SirGod Posted March 24, 2014 Report Posted March 24, 2014 Wow, mersi pentru tutorial. Îmi par cunoscute câteva exemple. Oare de ce? Ah, da, pentru ca eu l-am scris acum 5 ani. Bine, nu eu am scris c?catul asta, tu doar ai copiat exemplele ?i tips-urile. http://exploit-db.com/papers/12871Pe lâng? ca mi-ai copiat exemplele, ai tradus prost, ai mai ?i introdus gre?eli în el. Dac? te ui?i atent po?i sa îmi vezi numele în câteva exemple. ) Penibil.
Corex Posted March 24, 2014 Author Report Posted March 24, 2014 Wow, mersi pentru tutorial. Îmi par cunoscute câteva exemple. Oare de ce? Ah, da, pentru ca eu l-am scris acum 5 ani. Bine, nu eu am scris c?catul asta, tu doar ai copiat exemplele ?i tips-urile. http://exploit-db.com/papers/12871Pe lâng? ca mi-ai copiat exemplele, ai tradus prost, ai mai ?i introdus gre?eli în el. Dac? te ui?i atent po?i sa îmi vezi numele în câteva exemple. ) Penibil.Doar cateva exemple nu tot si nu de acolo le-am luat.
Nytro Posted March 24, 2014 Report Posted March 24, 2014 Wow, mersi pentru tutorial. Îmi par cunoscute câteva exemple. Oare de ce? Ah, da, pentru ca eu l-am scris acum 5 ani. Bine, nu eu am scris c?catul asta, tu doar ai copiat exemplele ?i tips-urile. http://exploit-db.com/papers/12871Pe lâng? ca mi-ai copiat exemplele, ai tradus prost, ai mai ?i introdus gre?eli în el. Dac? te ui?i atent po?i sa îmi vezi numele în câteva exemple. ) Penibil.Si mie imi parea cunoscut, ma gandeam eu ca m-am mai luat de cineva pe tema asta