Jump to content
Corex

Vulnerabilitati web (Pentru incepatori)

Recommended Posts

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 / Javascript

Majoritatea 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 alerta

JavaScript

ex:

"><script>alert(2)</script>

Cate tipuri de XSS-uri exista?

Dupa cate stiu eu sunt doua tipuri de XSS

Persistent: sau XSS reflectat care este vulnerabil pe acel parametru dar nu salveaza datele nicaieri

Si "victima" trebuie sa acceseze linkul creat de tine cu Graber

Nepersistent: 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 sursa

exemplu:


<?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.php

Si l-am urcat pe www.rstforums.com/xss.php

Vom lucra pe parametru GET deci noi pe parametru GET am pus rstforums

Intram asa

rstforums.com/xss.php?rstforums=(vector)

In realitate o sa arate exact asa

rstforums.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.

<?php
echo htmlentities((stripslashes($_GET['text'])), ENT_QUOTES);
?>

Ce face htmlentities? Pur si simplu converteste toate caracterele care se folosesc de aplicatia HTML / JAVASCRIPT

Va las aici si un link cu fel de fel de vectori care ii puteti folosi

XSS Vector Collection - Pastebin.com

2) SQLI (SQL Injection)

Sql injection este o vulnerabilitate care afecteaza in mare parte serverele MYSQL al paginii respective

Cum 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 exemplu

You 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 1

atunci fiti siguri ca va confruntati cu o vulnerabilitate de tip SQL injection

Metodele 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_string

Deci 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 SCD

In majoritatea cazurilor SCD-ul este gasit in paginile de download.

exemplu avem urmatorul link

www.site.com/download.php?carte=ioncreanga.pdf

Dupa download.php?carte= puneti index.php

Aici sunt doua posiblitati.

Ori il descarca

Ori 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 rare

deoarece aceasta vulnerabilitate permite executarea codurilor de tip PHP

Cum 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=digging

Injectia 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=digging

Comanda 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 tutorial

https://www.worldit.info/articole/gasirea-vulnerabilitatilor-in-scripturi-php-si-rezolvarea-acestora/

Edited by Corex
Link to comment
Share on other sites

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 by Stealth
Link to comment
Share on other sites

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 by SilenTx0
Link to comment
Share on other sites

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/12871

Pe 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.

Link to comment
Share on other sites

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/12871

Pe 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.

Link to comment
Share on other sites

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/12871

Pe 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 :))

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.


×
×
  • Create New...