Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
15-1241156123
palva
2009-05-01 09:35
2009.07.05
А с Первым мая никто не поздравит?


4-1212234617
hub00
2008-05-31 15:50
2009.07.05
Область подсвечивания.


3-1223030520
Ega23
2008-10-03 14:42
2009.07.05
Добавление ADO-параметров в ран-тайм


2-1242476766
partizan
2009-05-16 16:26
2009.07.05
Warning: FOR-Loop variable "i" may be undefined after loop


8-1194953765
Lebedev
2007-11-13 14:36
2009.07.05
Проблема с MediaPlayer.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский