ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 08.09.2009, 20:19
[Raz0r]
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
Провел на форуме:
3244717

Репутация: 1980
Отправить сообщение для [Raz0r] с помощью ICQ
По умолчанию

graudit - bash-скрипт, использующий grep по встроенной базе потенциально уязвимых функций. Набор функций в архиве довольно скромный, но его всегда можно расширить.
http://www.justanotherhacker.com/2009/07/graudit-version-11-is-out.html
 
Ответить с цитированием

  #12  
Старый 11.09.2009, 02:05
SQLHACK
Голос разума
Регистрация: 27.09.2006
Сообщений: 529
Провел на форуме:
1607210

Репутация: 1617


Отправить сообщение для SQLHACK с помощью ICQ
По умолчанию

Вот вам мною написаная проверялка.

Вообще она рекурсивно проверяет сразу все файлы в папке и позволяет сильно экономить время при разборе двига. Ищет злые функции и выдает HTML отчет. пользуясь им как картой можно быстро осмотреть весь двиг на простые косяки.

PHP код:
<?php

set_time_limit
(0);

$paths = array();
$exttocheck = array("php""php3""php4""php5""php6""inc");
$faults = array("codeexec""including""files""globalization""phpinfo");
$dir "путь со слешом на конце до папки";
read($dir);

foreach(
$paths as $path){
    
$r strrpos($path".");
    
$ext substr($path$r 1);
    if(
in_array($ext$exttocheck)){
        
GenerateHtmlOut($pathcheckfile($path));
    }
}

function 
checkfile($path){
    global 
$faults;
    
$errors = array(
                    
"codeexec" => array(
                            
"#^.*?[^\w]array_map[\s]*\([^,]*\\$[^,],.+\)[\s]*;.*$#im",
                            
"#^.*?([^\w]array_filter|[^\w]array_reduce|[^\w]array_walk)[\s]*\(.+?,.*\\$.+?\)[\s]*;.*$#im",
                            
"#^.*?[^\w]assert[\s]*\([\s]*\\$.+?\)[\s]*;.*$#im",
                            
"#^.*?[^\w](call_user_func|call_user_func_array)[\s]*\([^,]*\\$.*?\)[\s]*;.*$#im",
                            
"#^.*?[^\w]dl[\s]*\(.*?\)[\s]*;.*$#im",
                            
"#^.*?([^\w]create_function|[^\w]eval|[^\w]exec|[^\w]passthru|[^\w]shell_exec|[^\w]system)[\s]*\([^,]*\\$.+?\)[\s]*;.*$#im",
                            
"#^.*?[^\w]preg_replace[\s]*\(([\"'])(.)(.*)\\2([imxsu]*)e([imxsu]*)\\1[\d\D]+?\)[\s]*;.*$#im",
                            
"#^.*?[^\w]preg_replace_callback[\s]*\(([\"'])(.)(.*)\\2(.*)\\1[^)]+\)[\s]*;.*$#im"
                        
),
                    
"including" => array(
                            
"#^.*?([^\w]include|[^\w]include_once|[^\w]require|[^\w]require_once|[^\w]virtual)[\s]*\([\s]*\\$.+?\)[\s]*;.*$#im"
                        
),
                    
"files" => array(
                            
"#^.*?[^\w]copy[\s]*\([^,]*\\$[^,]+,.*\\$.*?\)[\s]*;.*$#im",
                            
"#^.*?[^\w]copy[\s]*\([^,]+,.*\\$.*?\)[\s]*;.*$#im",
                            
"#^.*?[^\w]copy[\s]*\([^,]*\\$[^,]+,[^)]+\)[\s]*;.*$#im",
                            
"#^.*?[^\w]fsockopen[\s]*\([^,]+,.*\\$.*?\)[\s]*;.*$#im",
                            
"#^.*?[^\w]curl_init[\s]*\(.*?\)[\s]*;.*$#im",
                            
"#^.*?([^\w]file|[^\w]file_get_contents|[^\w]mkdir|[^\w]opendir|[^\w]rmdir|[^\w]readfile|[^\w]highlight_file|[^\w]unlink)[\s]*\(.*?\\$.+?\)[\s]*;.*$#im"
                        
), 
                    
"globalization" => array(
                            
"#^.*?[^\w]extract[\s]*\([^,]*\\$[^,]+(,((.*\\$.*?)|([\s]*EXTR_OVERWRITE[\s]*)))?\)[\s]*;.*$#im",
                            
"#^.*?([^\w]parse_str|[^\w]mb_parse_str)[\s]*\([\s]*\\$.+?\)[\s]*;.*$#im",
                            
"#^.*?[^\w]import_request_variables\([^)]*\)[\s]*;.*$#im"
                        
),
                    
"phpinfo" => array(
                            
"#^.*?[^\w]phpinfo\(\)[\s]*;.*$#im"
                        
)
                    );
    
$possible = array();
    
$content file_get_contents($path);
    foreach(
$faults as $fault){
        foreach(
$errors[$fault] as $cd){
            
preg_match_all($cd$content$matchPREG_OFFSET_CAPTURE);
            
//var_dump($match);
            
foreach($match[0] as $m){
                
$line substr_count(substr($content0$m[1]), "\n")+1;
                
$possible[$fault][] = array("line" => $line"str" => $m[0]);
            }
        }
    }
    
//var_dump($possible);
    
return $possible;

}

function 
GenerateHtmlOut($path$possible){
    global 
$faults;
    echo 
"<html><body>\r\n";
    echo 
"<table width='100%'><tr>\r\n";
    echo 
"<td colspan='2' align='center' bgcolor='#BBBBFF'><b><strong>File: $path</strong></b></td></tr>\r\n";
    foreach(
$faults as $fault){
    echo 
"<td colspan='2' bgcolor='#CCCCFF'><b>Possible $fault danger place founds ".count($possible[$fault])."</b></td></tr>\r\n";
        if(
count($possible[$fault])>0){
            foreach(
$possible[$fault] as $mb){
                echo 
"<tr><td valign='top' bgcolor='#DDDDDD'>".$mb["line"].": </td><td bgcolor='#DDDDDD' valign='top'>".htmlspecialchars(nl2br($mb['str']))."</td></tr>\r\n";
            }
        }
    }
    echo 
"</body></html>";
}

function 
read($dir){
    global 
$paths;
    
$r opendir($dir);
    if(!
r){
        return 
false;
    }
    while(
$item readdir($r)){
        if(
$item != "." && $item != ".."){
            if(!
is_dir($dir.DIRECTORY_SEPARATOR.$item)){
                
$paths[] = realpath($dir.DIRECTORY_SEPARATOR.$item);
            }else{
                
read($dir.DIRECTORY_SEPARATOR.$item.DIRECTORY_SEPARATOR);
            }
        }
    }
}


?>
__________________
Бойтесь своих желаний. Они могут исполниться....

...О-о-о-о, ушами не услышать, глазами не понять!
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
Books PSalm69 Избранное 248 27.10.2009 04:52
На PHP, как на "Новые ворота"... Mertvii-Listopad Чужие Статьи 7 18.09.2006 12:42
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ