Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Анализатор уязвимостей РНР скриптов [D7, WinXP]


q1Onik ©   (2008-03-06 10:10:00) 

Я пишу программу автоматической проверки php скриптов на уязвимости.
Все скрипты я разделил на те, которые входящие переменные принимают методом GET и те, которые методом POST.

Базы данных со скриптами имеет следующий вид:

type
    Variabl = record
               VType:string;//тип переменной, передаваемой скрипту
               VName:string;//имя переменной, передаваемой скрипту
              end;
    TVar=array of Variabl;

    link = record
            ScriptLink:string;//ссылка на скрипт
            Method:string;{GET or POST}
            Variables:TVar;//все передаваемые скрипту переменные
           end;
    LinkList= array of link;//база со всеми скриптами на сайте


С GET-ом все более или менее просто и понятно: login.php?login=vasiliy&pass=qwerty&autologin=true
Правда пока еще не было времени проверить, правильно ли я выделяю переменные, передаваемые в скрипт...Если переменные ГЕТ запросом передаются в РНР скрипты по другому, пожалуйста напишите как еще это делают РНР программисты

Такие скрипты я буду проверять по следующей схеме:

/index.php?go='
/index.php?go=;id;
/index.php?go=../...../../etc/passwd
/index.php?go=../...../etc/passwd%00
/index.php?go=xxxxx...xxxxxxxxxxxxxx
/index.php?go=http:...cmd.php?cmd=id
/index.php?go=">alert('!Z-Team');


Т.Е. передавать в каждую переменную кавычку, пытаться прочитать /etc/passwd и т.д. а после смотреть ответ скрипта на такие запросы, если возвращает ERROR или WARNING, то есть подозрение на уязвимость

Полностью составить грамотно POST запрос у меня вызывает трудности.

Вот конкретный пример:









В базе скриптов данная форма будет выглядеть следующим образом:

ScriptLink:=login.php?sid=81f0ea24f354fa6372158507b9ced3f6
Method:=POST;
Variables:=[(text,username),(password,password),(checkbox,autologin),(submit,log in)]

Если бы тупо во все переменные писать кавычки... А то ведь теперь еще потребовался анализ слабых паролей, т.е. в случае если программа нашла скрипт, как в этом примере, то необходимо запускать брут на самые распространенные имена пользователей и пароли.

Вот и вернулся к тому, с чего начал: для работы со скриптами, получения списка скриптов, посылки запросов я использую idHTTP.
Как в моем случае составлять POST запросы, ведь я работаю не с какой-то конкретной формой, а с множеством самых различных форм, которые нужно проверить.


q1Onik   (2008-03-06 10:13:00) [1]

Ой, забыл закрыть тег
Если кому-то интересна эта тема, то напишите на форуме, или в ICQ:589855


Наверх

Титульная страница Поиск, карта сайта Написать письмо