Подскажите как работает код

Discussion in 'PHP' started by extrimportal, 15 Feb 2013.

  1. extrimportal

    extrimportal Member

    Joined:
    13 Nov 2010
    Messages:
    102
    Likes Received:
    36
    Reputations:
    0
    потерто
     
    #1 extrimportal, 15 Feb 2013
    Last edited: 20 Mar 2013
  2. Konqi

    Konqi Green member

    Joined:
    24 Jun 2009
    Messages:
    2,251
    Likes Received:
    1,149
    Reputations:
    886
    если переменная $_POST['php'] не пуста, то содержимое переменной декодируется из base64 в обычную строку, потом передается функцию eval, который и выполняет содержимое данной переменной как php код.

    в кратце - это бекдор
     
    _________________________
  3. extrimportal

    extrimportal Member

    Joined:
    13 Nov 2010
    Messages:
    102
    Likes Received:
    36
    Reputations:
    0
    В том то и дело что я ступил когда не увидел больше ничего в файле кроме этой строчки. Возможно ли что переменную php (так понял что она переменная, тогда не понял почему php а не $php), подключают глобально? или её передают через пост? Как же тогда мне его запустить что бы посмотреть что будет? как то так file.php?php=echo'123';
    извините сразу, в пхп очень слаб.
     
  4. Konqi

    Konqi Green member

    Joined:
    24 Jun 2009
    Messages:
    2,251
    Likes Received:
    1,149
    Reputations:
    886
    $_POST, это суперглобальный массив, и php у нас переменная внутри массива
    для того чтобы код выполнялся нужно передать переменную "php" POST запросом,
    например через html форму, или через специальные программы как developer tools в браузерах. или через cURL/сокеты
     
    _________________________
    1 person likes this.
  5. barnaki

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

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    140
    Reputations:
    4
    главное найти как она туда попала. попроси логи доступа к файлу у хостера .
     
    #5 barnaki, 15 Feb 2013
    Last edited: 15 Feb 2013
  6. extrimportal

    extrimportal Member

    Joined:
    13 Nov 2010
    Messages:
    102
    Likes Received:
    36
    Reputations:
    0
    а можно пример запроса?
    К хостеру обращался. Сказали ждать.
     
  7. DJ4J

    DJ4J Member

    Joined:
    23 Aug 2009
    Messages:
    0
    Likes Received:
    53
    Reputations:
    1
    PHP:
    <?php
    $url 
    "" // домен твоего сайта
    $info 'php=echo "hi";'// php код для выполнения
    $ch curl_init$url );
    curl_setopt($chCURLOPT_URL$url);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_HEADER0);
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
    curl_setopt($chCURLOPT_ENCODING"");
    curl_setopt($chCURLOPT_CONNECTTIMEOUT300);
    curl_setopt($chCURLOPT_TIMEOUT300);
    curl_setopt($chCURLOPT_MAXREDIRS244);
    curl_setopt($chCURLOPT_POSTFIELDS$info);
    $data curl_exec($ch);
    echo 
    $data;
    ?>
     
    1 person likes this.
  8. extrimportal

    extrimportal Member

    Joined:
    13 Nov 2010
    Messages:
    102
    Likes Received:
    36
    Reputations:
    0
    Пробовал. И так понимаю что где то туплю... Делаю так.
    файл на серваке не трогаю. В той же папке создаю файл только ставлю $url = "сайт.ру/файл.пхп" (где собственно эта таинственная строка с евалом)
    Запускаю только что созданный файл и не получаю ничего. Хотя толком и не понял что должно было бы произойти) Заметил бейс64декод, и попробовал еще php=echo "hi"; сменить на php=ZWNobyAiaGki. Но еффект тот же. Извините за глупость, но я стараюсь :)
     
  9. herfleisch

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

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    Работает он очень просто. Ситуация типичная.

    Злоумышленник передает в скрипт через параметр 'php' команду, которую скрипт выполняет. Обычно первой же командой служит заливка шелла с какого-нибудь хоста. В зависимости от настроек сервера сценарий чуть меняется, но принцип один.
     
  10. extrimportal

    extrimportal Member

    Joined:
    13 Nov 2010
    Messages:
    102
    Likes Received:
    36
    Reputations:
    0
    Тогда где именно я туплю что у меня даже hi не выводится?)
     
  11. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    ТС, ты чё прикалуешся?


    PHP:
    <?php 
    $cur
    =curl_init(); 
    curl_setopt($curCURLOPT_URL"http://site.ru/file.php"); 
    curl_setopt($curCURLOPT_HEADER1);
    curl_setopt($cur,CURLOPT_RETURNTRANSFER,0); 
    curl_setopt($curCURLOPT_POST1);         
    curl_setopt($curCURLOPT_POSTFIELDS,"php=ZWNobyAi0YvRi9GL0YvRiywg0LLRgdGRINGA0LDQsdC+0L7RgtCw0LXRgiI7");  
    curl_exec($cur);
    curl_close($cur);
    ?>
    пробел только уберёшь который форум влепил


    да и вобще, ему тут сайт ломанули, а он надумал пых учить, странный
     
    #11 qaz, 15 Feb 2013
    Last edited: 15 Feb 2013
    1 person likes this.
  12. extrimportal

    extrimportal Member

    Joined:
    13 Nov 2010
    Messages:
    102
    Likes Received:
    36
    Reputations:
    0
    Предупрежден значит вооружен, ничего странного как на меня)
    Подошел ближе, вывод есть но не то что надо. получил:
    PHP:
    HTTP/1.1 500 Internal Server Error Servernginx/1.1.0 DateFri15 Feb 2013 15:08:37 GMT Content-Typetext/html Connectionkeep-alive Keep-Alivetimeout=30 X-Powered-ByPHP/5.2.17 VaryAccept-Encoding Content-Length
     
  13. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    PHP:
    curl_setopt($curCURLOPT_POSTFIELDS,"php=ZWNobyAi0LLRgdGRLCDRgNCw0LHQvtGC0LDQtdGCIjs=");
    исправь
     
  14. extrimportal

    extrimportal Member

    Joined:
    13 Nov 2010
    Messages:
    102
    Likes Received:
    36
    Reputations:
    0
    Все равно то же только добавилась абракадабра.
    Code:
    HTTP/1.1 200 OK Server: nginx/1.1.0 Date: Fri, 15 Feb 2013 16:00:30 GMT Content-Type: text/html Connection: keep-alive Keep-Alive: timeout=30 X-Powered-By: PHP/5.2.17 Vary: Accept-Encoding Content-Length: 24 аВбб‘, б€аАаБаОб‚аАаЕб‚ 
     
  15. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    та абракадабра и есть текст передаваемый пост запросом, прост у тебя браузер кривой и кодировку не воспринимает

    убери
    PHP:
    curl_setopt($curCURLOPT_HEADER1);
    чтобы не отвлекал
     
  16. extrimportal

    extrimportal Member

    Joined:
    13 Nov 2010
    Messages:
    102
    Likes Received:
    36
    Reputations:
    0
    Все у меня не так))) Лан большое спасибо за помощь, пойду искать откуда это чудо запускалось)))
     
  17. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    иди ищи не чудо а дыры на своём сайте, потом иди ищи шеллы среди файлов, и заодно просмотри недавноизменённые файлы так как в них могли спрятать подобный код, ещо не забуть почистить от новых кодов свои скрипты к которые могли напихать js для сива трафа и поищи, может уже даже доры позаливали, удачи или в сапу добавили))
     
  18. DJ4J

    DJ4J Member

    Joined:
    23 Aug 2009
    Messages:
    0
    Likes Received:
    53
    Reputations:
    1
    Возможно где-то я ошибся.Давно в php не кодил, а curl еще дольше не использовал.
    Вообще, если по хорошему, то нужно хранить бекапы не только БД, но и скриптов сайта.Причем на стороннем харде, не на одном сервере с сайтом.Можно было бы шустро найти зараженные скрипты.
    Сайт на распространенном движке?