RDot

RDot (https://rdot.org/forum/index.php)
-   Статьи/Articles (https://rdot.org/forum/forumdisplay.php?f=10)
-   -   Статические анализаторы php. Мини-обзор (https://rdot.org/forum/showthread.php?t=596)

p(eaZ 22.08.2010 22:59

Статические анализаторы php. Мини-обзор
 
С течение времени мы все чаще и чаще можем видеть появление новых систем управления контентом (CMS): форумов, блогов, шопов, социальных сетей, и т.д. и т.п. Многие из них, в силу некомпетентности или недостаточного уровня профессионализма их разработчиков, имеют в коде уязвимые места, позволяющие получить доступ, начиная от банального раскрытия путей до получения полного контроля над сайтом. Это мы наблюдаем каждый день на страницах баг-трэков.

О том, как ищутся уязвимости, и чем пользуются баг-хантеры, я и хотел бы сейчас рассказать.

В данном мини-обзоре я опишу основные инструменты баг-хантера, а если быть более конкретным - статических анализаторов кода веб-приложений разработанных на php.

Статический анализатор кода - это программный продукт, помогающий обнаружить потенциально опасные участки кода программы, не прибегая при этом к её выполнению. В отличии от динамических анализаторов, где исследование проводится в процессе выполнения программы, в статических анализаторах исследуется только исходный код.

Подобных анализаторов в сети достаточно много, и каждый из них обладает своим функционалом и списком поддерживаемых языков. Я буду рассматривать анализаторы веб-языков, а если быть более точным, то делаю упор на PHP по причинам его распространенности в отношении к другим языкам.

Таких программ на моем счету не так уж и много: PHP Bug Scanner by Raz0r, RATS, Graudit, RIPS. Я буду рассматривать работу с Graudit и RIPS, т.к. они более стабильны и функциональны.

Graudit - является семантически-статическим анализатором, который указывает на потенциально опасные места в коде. Представляет собой bash-скрипт, и работает посредством поиска через grep, используя базы сигнатур потенциально уязвимых функций.
Поддерживаемые языки: ASP, JSP, Perl, PHP, Python, C, и является легко расширяемой, в этом плане, утилитой.
Сайт автора: http://www.justanotherhacker.com

http://img831.imageshack.us/img831/751/40207148.png

Как видно функционал довольно простой. Основные параметры, которые мы будем использовать это:
-d - указывает на базу сигнатур, которую вы захотите использовать. Т.к. обзор пишется в контексте поиска уязвимостей PHP-кода, то -d signatures/php.db
-Z - подсветка потенциально опасных участков кода. Рекомендую к постоянному использованию.
Вот что нам выдаст запуск программы с этими параметрами и прописанным путем к папке со скриптами:

http://img594.imageshack.us/img594/6631/48422271.png

Теперь рассмотрим вторую утилиту - RIPS, упоминание о которой я обнаружил тут
Сайт автора: http://websec.wordpress.com
В отличие от Graudit, RIPS создавался исключительно для поиска уязвимостей в PHP-коде.
Сама программа выполнена в виде веб-интерфейса, с массой дополнительных возможностей и функций:

http://i9.fastpic.ru/thumb/2010/0823...b90761eb7.jpeg

Программа достаточно интересна тем, что позволяет устанавливать уровень чувствительности к поиску(1), цветовую схему подсветки синтаксиса(2), просматривать список используемых функций(3), составлять эксплойт в exploit creator(4), code viewer для исследования интересующего участка кода(5), список строк с глобальными ассоц. массивами(6).

Для наглядности проверим реакцию программ на уязвимость кода из примера M4g'a:
PHP код:

<?php
include 'connect.php'//подключаемся к бд

if(!get_magic_quotes_gpc())
    {
    
$_GET    add_magic_quotes($_GET   );
    
$_POST   add_magic_quotes($_POST  );
    
$_COOKIE add_magic_quotes($_COOKIE);
    
$_SERVER add_magic_quotes($_SERVER);
     }

$name urldecode($_GET[name]);
$info urldecode($_GET[info]);
mysql_query("INSERT INTO table(name,info) values('$name','$info')");
mysql_close();
?>

Поместив код в отдельный файл(test.php), скормим его анализаторам и посмотрим на их реакцию:
Graudit:

http://img682.imageshack.us/img682/9092/27110203.png

RIPS:

http://i9.fastpic.ru/thumb/2010/0823...3dc07c1ca.jpeg

Также, обращаю ваше внимание на то, что галочка subdirs снята (т.к. мы указали на скрипт), и на то, что следует нажимать, чтобы открыть code-viewer и exploit-creator.

На этом мой мини-обзор инструментов закончен.
Удачного баг-хантинга!

Greetings to all members: xaknet.ru, vulnes.com, rdot.org, exploit.in
p(eaZ, 2010.


Часовой пояс GMT +3, время: 16:14.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot