Форум: "Сети";
Текущий архив: 2009.07.05;
Скачать: [xml.tar.bz2];
ВнизАнализатор уязвимостей РНР скриптов Найти похожие ветки
← →
q1Onik (2008-03-06 10:10) [0]Я пишу программу автоматической проверки 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="><script>alert("!Z-Team");</script>
Т.Е. передавать в каждую переменную кавычку, пытаться прочитать /etc/passwd и т.д. а после смотреть ответ скрипта на такие запросы, если возвращает ERROR или WARNING, то есть подозрение на уязвимость
Полностью составить грамотно POST запрос у меня вызывает трудности.
Вот конкретный пример:
<form method="post" action="login.php?sid=81f0ea24f354fa6372158507b9ced3f6">
<input class="post" type="text" name="username" size="10" />
<input class="post" type="password" name="password" size="10" maxlength="32" />
<input class="text" type="checkbox" name="autologin" />
<input type="submit" class="mainoption" name="login" value="Вход" />
</form>
В базе скриптов данная форма будет выглядеть следующим образом:
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) [1]Ой, забыл закрыть тег
Если кому-то интересна эта тема, то напишите на форуме, или в ICQ:589855
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2009.07.05;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c