Python, Защита данных

Burp Suite в аудите уязвимостей веб-приложений

Время прочтения: 4 мин.

Одним из основных инструментов, используемых при пентесте веб-приложений, является  Burp Suite. Burp Suite представляет собой платформу, состоящую из нескольких модулей, которые предназначены для выполнения задач получения «карты приложения», фаззинга, подбора паролей, изменения запроса «на лету» и т.д.

Принцип работы инструмента основан на перехвате и/или изменении http траффика, передаваемого браузером. В версии community edition введены ограничения на количество запросов, и отсутствует автоматический сканер уязвимостей. Тем не менее данная версия хорошо подходит для проведения ручного автоматизированного аудита веб-приложения.

Среди основных модулей инструмента можно выделить:

Proxy – прокси-сервер, который позволяет в режиме «человек посередине» перехватывать и/или изменять траффик, идущий от браузера до веб-приложения.

Spider – краулер, который автоматически собирает информацию об архитектуре веб-ресурса.

Intruder – модуль для автоматизации проведения разного типа атак, например брутфорс, фаззинг и т.д.

Repeater – утилита для модификации и повторной отправки запроса с целью изучения ответа веб-сайта на новый запрос.

Scanner – сканер уязвимостей OWASP TOP 10, включен только в платную версию.

Рассмотрим применение инструмента на примере тестового веб-приложения, содержащего уязвимость OS Command injection (уязвимость находится на 1 месте рейтинга OWASP TOP 10).

Настроим в браузере Firefox настройки прокси для того, чтобы запросы поступали в Burp Suite.

Включим прокси в Burp Suite для перехвата http запросов браузера. 

В качестве тестового ресурса напишем простой скрипт на языке python, содержащий уязвимость «внедрение кода». Скрипт запускает веб-сайт, функционал которого предназначен для проверки доступности ip адреса с помощью утилиты ping.

from flask import Flask
from flask import request
import os

if name == '__main__':
	app = Flask(__name__)
	@app.route('/')
	def hello():
		return 'PING tool! Enter ip address: <form action=''/check'' method=''get''><input text=''ip address'' name=''ip''><input type=''submit'' value=''check''></form> '

	@app.route('/check')
	def check():
		ip = request.args.get('ip')
		return os.popen("ping "+ str(ip) + " -c 3").read()
	app.run(host = '0.0.0.0', port = 80, debug = True)

Заходим в браузере на адрес тестового ресурса http://test и видим перехваченные запросы в Burp.

Изучая ресурс, находим параметр ip, отправляемый GET запросом по адресу /check.

Отправляем перехваченный запрос в модуль Intruder для того, чтобы модифицировать значение параметра ip и проанализировать ответы веб-приложения на запросы.

При этом загружаем заранее подготовленный перечень payload для проверки на наличие уязвимости.

В результате определяем наличие уязвимости в проверяемом параметре.

В статье был рассмотрен простой пример в рамках знакомства с бесплатной версией инструмента Burp Suite. Возможности данного инструмента намного шире, что позволяет применять его при аудите самых разных веб-приложений.  

Советуем почитать