Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Уязвимости (https://forum.antichat.xyz/forumdisplay.php?f=74)
-   -   Алгоритм поиска sql-inj в исходниках php сценариев (https://forum.antichat.xyz/showthread.php?t=26540)

n4n0bit 04.11.2006 17:29

Алгоритм поиска sql-inj в исходниках php сценариев
 
Вот собираюсь делать так, прошу попровлять и дополнять:

1. сбор всех имен переменных передоваемых GET/POST со всех php сценаривем
1.1 создание хеша имя_переменной/файл
2. сбор всех ф-ций которые фильтруют переменный используя addslashes magic_quotes_gpc str_replace
2.1 создание хеша имя_ф-ции/файл
3. сбор всех строк вида mysql_query($perm), где потом содержание $perm интерпалируем в значение хеша, а ключ хеша будет имя этой переменной.

Далее сравниваем, если строка запроса (п.3) к БД содержит переменную (п.1) , делаем проверку на наличия имени ф-ции (п.2),
если она не обнаружена - значит код потанцеально уязвим.

На сколька этот алгоритм эффективен - я хз.

помогайте господа.

r0 04.11.2006 17:46

Нужно собирать переменные, значения которых используются в запросах к БД, хотя п1 почти этому удовлетворяет.
Вот насчет п2 -- ты на чем пишешь? Т.е magic_quotes_gpc - это директива, а не ф-я, значение(on\off) можно получить посредством get_magic_quotes_gpc() но это опять же в php.

EXSlim 04.11.2006 18:15

А почему бы не собирать запросы к БД содержащие строки $_get[], $_post[], $_cookie[] ? Это будет означать, что скрипт наверняка уязвим

Digimortal 04.11.2006 18:18

Цитата:

Сообщение от r0cha!
Вот насчет п2 -- ты на чем пишешь? Т.е magic_quotes_gpc - это директива, а не ф-я, значение(on\off) можно получить посредством get_magic_quotes_gpc() но это опять же в php.

Зачем получать значение magic_quotes_gpc ? И, главное откуда его получать? Заранее ведь не известно, будет ли анализируемый скрипт работать с значением magic_quotes_gpc = 1 или 0. Просто нужно чтоб в отчете прога (скрипт?) выводила, что существует вероятность SQL-inj в случае magic_quotes_gpc=0..
И еще: не надо забывать про cookies..

n4n0bit 04.11.2006 18:20

r0cha! я делаю проверку по регеспу на ф-цию такога рода.
Но смори не все же переменные которые есть в теле запроса доступны через GET/POST,
поетому я проверяю сWEBдоступные переменные на наличая в БДзапросе.

PHP код:

function un($code){
        if (
get_magic_quotes_gpc()) {
           
$code stripslashes($code);
        }
        return 
$code;


EXSlim хм, такога проста почти не встречал, ну если такое есть то этот момент тоже включу.

С кукисами чуть поже, хотяб это автоматизировать.

ps: что еще господа?

ps2: пишу на PERL, http://forum.antichat.ru/thread26051-nJin4.html

EXSlim 04.11.2006 18:27

Цитата:

EXSlim хм, такога проста почти не встречал, ну если такое есть то этот момент тоже включу.
Ты прав, такая конструкция редко встречается, но ведь она зараза работает

n4n0bit 04.11.2006 18:35

EXSlim гуд, уже включил., а регистр соблюдается? в $_get[], $_post[], $_cookie[] ???

Все согласны с этим алгоритмом?

r0 04.11.2006 21:54

Цитата:

Зачем получать значение magic_quotes_gpc ? И, главное откуда его получать?
ну а я про что и говорю..
Цитата:

а регистр соблюдается?
да, и только $_GET[], $_POST[], $_COOKIE[]

guest3297 04.11.2006 23:00

когда руками баги ищу то просто...
есть запрос к бд...
select Name,pass from users where '.$id.'

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

еще добавь include()

n4n0bit 04.11.2006 23:12

include() ета отдельная песьгя - все всем спасибо.


Время: 11:20