Как использовать User Agent для атак на сайты. Часть 2

Как использовать User Agent для атак на сайты. Часть 2

Life-Hack [Жизнь-Взлом]/Хакинг

#Обучение

Чтобы поменять User Agent для утилиты cURL используйте опцию -A. Сравните вывод двух команд: 

curl -I https://suip.biz
curl -I -A 'Chrome' https://suip.biz

Как подменить User Agent в Burp Suite 

В Burp Suite перейдите на вкладку «Proxy» → «Options», найдите раздел «Match and Replace» (совпадения и замена). Там уже присутствует несколько правил по замену User Agent для эмуляции запросов от различных устройств. 

Вы можете включить имеющиеся правила или создать новое. Для создания нового нажмите кнопку «Add». 

В качестве «Type» выберите «Request header». 

В качестве значения поля «Match» укажите 

^User-Agent.*$ 

В поле «Replace» впишите значение, на которое будет заменён HTTP заголовок пользовательского агента. Обратите внимания, что поскольку мы заменяем заголовок целиком, то начинаться он должен со строки «User-Agent: ». 

В поле «Comment» впишите любой комментарий, чтобы быстро вспомнить, для чего нужен этот заголовок. 

Поставьте галочку «Regex match». 

Включите его поставив галочку в столбце «Enabled». 

По умолчанию Burp Suite в качестве прокси прослушивает localhost:8080

С cURL можно использовать опцию -x, чтобы отправить запрос через Burp Suite, например: 

curl -x http://localhost:8080 -A 'Any User Agent' --cookie 'security_level=0; PHPSESSID=46d368f57a7c0e17905377f07846b5b0' 'http://192.168.0.96/bWAPP/sqli_17.php' 

Как можно увидеть, значение заголовка User Agent было заменено и мы получили сообщение об ошибке, которая может означать SQL-инъекцию. 

User-Agent Impersonationг 

В OWASP Mutillidae II есть задание «User-Agent Impersonation». Если вы воспользовались статьёй «Установка OWASP Mutillidae II и Damn Vulnerable Web Application (DVWA) в Kali Linux», то у вас это задание будет по адресу http://localhost/mutillidae/index.php?page=user-agent-impersonation.php. 

На этой странице нам показывают сообщение: 

Sorry. You do not look like an Apple iPad using Safari Browser.
This page uses JavaScript browser and O/S fingerprinting to decide if the user-agent is allowed.

Перевод: 

Извините, но не похоже, что вы используете Safari Browser на Apple iPad. Эта страница использует JavaScript браузера и отпечатки ОС для принятия решения, разрешён ли ваш user-agent. 

Дальше есть вариант моего решения, но я рекомендую самостоятельно решить этот пример — он не такой простой, как кажется. 

Данный пример готовился как самый первый в этой статье, поскольку обход проверки кажется элементарным. Казалось бы, выбираем в Инструментах разработчика правильный User Agent, вроде такого 

Mozilla/5.0 (iPad; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1

и задание пройдено. 

Но что-то пошло не так: 

Страница никак не хочет принимать подходящий под условие User Agent. 

Я посмотрел исходный код и обнаружил там: 

if(
        window.navigator.platform === "iPad" && 
        window.navigator.appName === "Netscape" &&
        window.navigator.appCodeName === "Mozilla" &&
        window.navigator.appVersion.indexOf("iPad") !== -1 &&
        window.navigator.appVersion.indexOf("Mac") !== -1 &&
        window.navigator.appVersion.indexOf("AppleWebKit") !== -1 &&
        window.navigator.appVersion.indexOf("Safari") !== -1 &&
        window.navigator.product === "Gecko" &&
        window.navigator.productSub === "20030107"
){
    lResultTD.innerHTML = "Congratulations. You look like an iPad using Safari Browser to me.";
    lResultTD.className = "success-header";
}else{
    lResultTD.innerHTML = "Sorry. You do not look like an Apple iPad using Safari Browser.<br />This page uses JavaScript browser and O/S fingerprinting to decide if the user-agent is allowed.";
    lResultTD.className = "error-header";
}

Я не знаю, насколько всё в порядке с этим кодом, возможно, в современных браузерах он просто неадекватен. Но можно заметить, что очень легко поломать логику всех этих многочисленных проверок добавив в конце « || 1» что означает «ИЛИ истина». То есть независимо от того, какой будет результат всех предыдущих проверок, это условие всё равно всегда будет возвращать «Истина». 

Проверка соблюдения условия у меня получилась такой: 

if(
        window.navigator.platform === "iPad" && 
        window.navigator.appName === "Netscape" &&
        window.navigator.appCodeName === "Mozilla" &&
        window.navigator.appVersion.indexOf("iPad") !== -1 &&
        window.navigator.appVersion.indexOf("Mac") !== -1 &&
        window.navigator.appVersion.indexOf("AppleWebKit") !== -1 &&
        window.navigator.appVersion.indexOf("Safari") !== -1 &&
        window.navigator.product === "Gecko" &&
        window.navigator.productSub === "20030107" || 1
)

Такой подход устроил механизм проверки Пользовательского Агента и задание пройдено. 

Но этот метод относится уже к атакам на JavaScript…

Источник


Report Page