ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Paranormal Log Parser
  #1  
Старый 16.01.2009, 23:15
Dimi4
Reservists Of Antichat - Level 6
Регистрация: 19.03.2007
Сообщений: 953
Провел на форуме:
7617458

Репутация: 3965


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

Paranormal Log Parser
На днях понадобилось просканить логи на предмет всяких иньектов, хсс и так далее. Вобщем на паранормальное содержимое . Это не мега крутой инструмент, а тулза которая бывает иногда полезной.

Пример: http://nfdesign.org.ua/achat/parser/parser.php
Просьба в демо не пихать большиг логов, и так фрихост.

Скрипт парсит логи апача такого плана:

Код:
127.0.0.1 - - [01/Jan/2009:00:00:00 -0001] "GET /sscript.php?param=val HTTP/1.1" 200 13236 "http://127.0.0.1/sscript.php?param=val" "Opera/10.0 (Windows NT 5.1; U; ua)"
Download: http://nfdesign.org.ua/achat/parser/parser.phps OR Attach

Последний раз редактировалось Dimi4; 18.04.2009 в 14:19..
 
Ответить с цитированием

  #2  
Старый 19.01.2009, 22:32
De-visible
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме:
4037638

Репутация: 1821


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

Буду первым, кто че то спросит)), почему в РОА?
 
Ответить с цитированием

  #3  
Старый 20.01.2009, 01:51
Dimi4
Reservists Of Antichat - Level 6
Регистрация: 19.03.2007
Сообщений: 953
Провел на форуме:
7617458

Репутация: 3965


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

Цитата:
Сообщение от De-visible  
Буду первым, кто че то спросит)), почему в РОА?
Потому, что это раздел для проявления активности, знаний, релизов полезных для групы. Думаю некоторым пригодится. Хотя я совсем не против чтобы перенесли в паблик
 
Ответить с цитированием

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

Репутация: 1617


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

честно говоря, если уж начал как говорится, доводи до ума.
1.Паттерн который парсит лог, думаю вообще стоит убрать и глядеть на всю строку в целом.(мало ли как у кого настроен веб сервер)
2. добавать регулярки для ../ , system, eval, passthru, exec, assert, =http , =ftp, пробелANDпробел, пробелORпробел, --, /*

Но всё это будет работать только если уязвимость была эксплуатирована через GET.

так что юзаем только POST)))
__________________
Бойтесь своих желаний. Они могут исполниться....

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

  #5  
Старый 20.01.2009, 12:48
Dronga
ВАША реклама ТУТ!!
Регистрация: 01.07.2005
Сообщений: 647
Провел на форуме:
3478464

Репутация: 714


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

А я активирую mod_security и буду парсить его логи, включая POST. Генерит он их немерянно Только регулярочки бы действительно поменять Вещь нужная, но пока что сыровато.

+1 за всю строку в целом, там как раз на каждый запрос новая строчка в логах. Вот её и надо анализировать.
+ не забываем за всякие интересные случаи с mod_rewrite
+ Обязательно вылавливать passwd .htpasswd .htaccess.. Дальше уже сами знаете.

Не знаю, возможно ли как-то учесть/оптимизировать или может портирует кто на другой язык.. У меня есть парочка сайтов, там размеры логов двух гигов достигают. Можно конечно немного обстругать и PHP-скрипт из командной строки вызвать, но хотелось бы и чтобы наглядно, и без подвисаний/отваливаний/InternalServerError/дополнительного редактирования конфигов и прочее.

ЗЫ. Отличный дипломный проект может получиться..
__________________
My ICQ: 296@463@859 ONLY!! Please check your list!!
И здесь могла бы быть ВАША реклама!!!

Последний раз редактировалось Dronga; 20.01.2009 в 13:08..
 
Ответить с цитированием

  #6  
Старый 20.01.2009, 17:11
Chaak
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
Провел на форуме:
5321514

Репутация: 3313


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

PHP код:
$sqlinj = array('/(\%27)*(\')|(union)*select[\+\/**\ %]/i',"/substring/i","/(order|group)*by/i"); 
Оу в регулярке *, это спец. символ - "0 и более раз", если работает, то еще повезло...

PHP код:
 $logs explode"\n",  file_get_contents($logfile)); 
Если файл на 100 мегабайт, то представляешь какого размера будет массив?
Читай построчно fgets(), выделение памяти очень маленькое будет, грузить всего лишь по строке и сверять с регуляркой... а не всем файлом сразу.


Оптимизируйте код, товаришь
 
Ответить с цитированием

  #7  
Старый 03.02.2009, 00:46
Dimi4
Reservists Of Antichat - Level 6
Регистрация: 19.03.2007
Сообщений: 953
Провел на форуме:
7617458

Репутация: 3965


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

Переделал. Парсит теперь через fgets, анализ всей строки. Изменены регулярки.
PHP код:
<?php error_reporting(0); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
    <meta http-equiv="content-type" content="text/html; charset=windows-1251">
    <meta name="author" content="">

    <title>Paranormal Log Detecter</title>
    <style>
    body 
 {
  background-color:#333;
  color:yellowgreen; 
  font-family:Verdana, Arial;
  font-size:10px;
  padding:0px;
  margin:0px; 
 }
table
 {
  font-family:Verdana, Arial;
  font-size:10px;
  border:1px solid #444; 
  }
form 
 {
  padding:0px;
  margin:0px;
 } 
input, select
 {
  background:#292929; 
  padding:2px; 
  font-size:10px; 
  border:1px solid #444; 
  font-family:Verdana; color:#888;
 }
textarea
 {
  background:#292929; 
  padding:10px; 
  font-size:10px; 
  border:1px solid #444; 
  font-family:Verdana;
  color:#888;
 }
 a 
 {
  font-size:10px;
  font-family:Verdana; 
  color:#999;
  font-weight:bold;
  text-decoration:none;
 }
 a:hover
 {
  color:yellowgreen;
 }
 table
{
    border-spacing: 0;
    margin:0 auto;
    border-collapse: 0;
}

td:hover
{
    background:#4D525C;
}
tr:hover td
{
    background:#4D525C;
}
td
{
    padding:3px;
    text-align:center;
    font-size:12px;
    color:#B9B9BD;
    background:#363940;
}
td b
{
    color:#ccc;
}
    </style>
</head>

<body>
<?
/**
 * @author Dimi4
 * @copyright 2009
 * @ParanormalLogParser
 * @v.2  
 */

$logfile "test.txt";
$numline 1;
//POSIBLE SIGNATURES //
$xss = array('/(\w+script:|@import[^\w]|;base64|base64,)|(\w+\s*\([\w\s]+,[\w\s]+,[\w\s]+,[\w\s]+,[\w\s]+,[\w\s]+\))/i','/(\<\w*\s([^\>]*)t(?!rong))|(\<scri)|(<\w+\w+)/i');
$shell = array("/.act=ls/i",'/c99shell/i','/madshell/i','/r57shell/i','/(([;]+|(<[?%](php)?)).*(define|eval|file_get_contents|include|require|require_once|set|shell_exec|phpinfo|system|passthru|preg_\w+|execute)\s*["(@])/');
$sqlinj = array('/(\%27)*(\')|(union)*select[\+\/**\ %]/i',"/substring/i","/(order|group)*by/i");
$include = array('/\.\.\//i','/(home|conf|usr|etc|proc|opt|local|dev|tmp|kern|sys|system|windows|winnt|program)\/\W*[a-z]/i');
$nullbyte = array('/(\\x[01FE]\w)|(%[01FE]\w)|(&#[01FE]\w)|(\\[01FE][0-9a-f])|(&#x[01FE]\w)/i');
//POSiBLE SIGNATURES //
/*********************/
echo("<div align='center'><h2>Результат проверки - ".htmlspecialchars($logfile)."</h2></div> <table width='100%'>");
echo(
"<tr><th>Line #</th><th>Date</th><th>IP</th><th>Request, User-Agent</th><th>Alert</th></tr>");
$handle fopen($logfile"r");
while (!
feof($handle)) {
    
$buffer fgets($handle4096);
    
$numline++;
$pattern '/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) (.*) (.*) (\[.*\]) (".*") (\d\d\d) (.*) (".*") (".*")/U';

preg_match$pattern$buffer$entries );

list( 
$match$log['ip'], $log['id'], $log['user'], $log['date'], $log['request'], $log['response-code'], $log['bytes-sent'], $log['referrer'], $log['agent']  ) = $entries;
//Sql-inj
for($i=0$i<count($sqlinj); $i++)
{
if(
preg_match("$sqlinj[$i]",$buffer))
{

     
$buffer=htmlspecialchars($buffer);

    
$atempt .= "<tr><td>".$numline."</td><td>".$log['date']."</td><td>".$log['ip']."</td><td><textarea cols='45'>".$log['request']."\nUser-agent:\n".$log['agent']."</textarea></td> <td><strong>Возможно, найдена SQL-injection</strong></td></tr>";
     
print_r($atempt);
     unset(
$atempt);
    }
      
}
///Sql-inj

//PHP-include
for($i=0$i<count($include); $i++)
{
if(
preg_match("$include[$i]",$buffer))
{
    
$buffer=htmlspecialchars($buffer);
    
$atempt .= "<tr><td>".$numline."</td><td>".$log['date']."</td><td>".$log['ip']."</td><td><textarea cols='45'>".$log['request']."\nUser-agent:\n".$log['agent']."</textarea></td> <td><strong>Возможно, найден Include</strong></td>";
     
print_r($atempt);
     unset(
$atempt);
    }
      
}
///PHP-include

//Shell

for($i=0$i<count($shell); $i++)
{
if(
preg_match("$shell[$i]",$buffer))
{
    
$buffer=htmlspecialchars($buffer);
    
$atempt .= "<tr><td>".$numline."</td><td>".$log['date']."</td><td>".$log['ip']."</td><td><textarea cols='45'>".$log['request']."\nUser-agent:\n".$log['agent']."</textarea></td> <td><strong>Возможно, найден Shell</strong></td>";
         
print_r($atempt);
     unset(
$atempt);
    }
      
}
///Shell

//XSS
$tempval explode(":"$buffer);
for(
$i=0$i<count($xss); $i++)
{
         if (
preg_match($xss[$i],$buffer))
         {
    
$atempt .= "<tr><td>".$numline."</td><td>".$log['date']."</td><td>".$log['ip']."</td><td><textarea cols='45'>".$log['request']."\nUser-agent:\n".$log['agent']."</textarea></td> <td><strong>Возможно, найдена XSS</strong></td>";
         
print_r($atempt);
     unset(
$atempt);
        }
        }
///XSS

//Null-byte
for($i=0$i<count($nullbyte); $i++)
{
if(
preg_match("$nullbyte[$i]",$buffer))
{
    
$atempt .= "<tr><td>".$numline."</td><td>".$log['date']."</td><td>".$log['ip']."</td><td><textarea cols='45'>".$log['request']."\nUser-agent:\n".$log['agent']."</textarea></td> <td><strong>Возможно, найден nullbyte</strong></td>";
         
print_r($atempt);
     unset(
$atempt);
    }
      
}
///Null-byte
}
echo(
"</table>");
fclose($handle);
?>
Вложения
Тип файла: rar logparser.rar (1.9 Кб, 8 просмотров)

Последний раз редактировалось Dimi4; 03.02.2009 в 00:51..
 
Ответить с цитированием

  #8  
Старый 10.05.2009, 11:50
.Slip
Leaders of Antichat - Level 4
Регистрация: 16.01.2006
Сообщений: 1,966
Провел на форуме:
21768337

Репутация: 3486


По умолчанию

Привет из РОА. Ап
__________________
..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LoL LoG m0nzt3r Болталка 1 26.07.2006 23:04
Parser SLam E-Mail 15 25.04.2006 17:18
Icq Log +) GreenBear Болталка 13 27.06.2005 17:15



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


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




ANTICHAT.XYZ