ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

08.09.2009, 20:19
|
|
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
Провел на форуме: 3244717
Репутация:
1980
|
|
graudit - bash-скрипт, использующий grep по встроенной базе потенциально уязвимых функций. Набор функций в архиве довольно скромный, но его всегда можно расширить.
http://www.justanotherhacker.com/2009/07/graudit-version-11-is-out.html
|
|
|

11.09.2009, 02:05
|
|
Голос разума
Регистрация: 27.09.2006
Сообщений: 529
Провел на форуме: 1607210
Репутация:
1617
|
|
Вот вам мною написаная проверялка.
Вообще она рекурсивно проверяет сразу все файлы в папке и позволяет сильно экономить время при разборе двига. Ищет злые функции и выдает 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($path, checkfile($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, $match, PREG_OFFSET_CAPTURE);
//var_dump($match);
foreach($match[0] as $m){
$line = substr_count(substr($content, 0, $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);
}
}
}
}
?>
__________________
Бойтесь своих желаний. Они могут исполниться....
...О-о-о-о, ушами не услышать, глазами не понять!
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|