Основы этичного веб-хакинга (перевод)

1. Twitter HTTP Response Splitting

Сложность: Высокая 
Url: https://twitter.com/i/safety/report_story 
Ссылка на отчет: https://hackerone.com/reports/52042⁹ 
Дата отчета: 21 апреля 2015 
Выплаченное вознаграждение: $3,500 
Описание: 
В апреле 2015 был сообщено, что в Twitter найдена уязвимость, 
позволяющая хакерам устанавливать произвольные cookie, до- 
бавляя дополнительную информацию в запрос к Twitter. 
По существу, после создания запроса к указанному выше URL 
(легаси-url Twitter, позволявший людям жаловаться на рекла- 
му), Twitter возвращал cookie для параметра reported_tweet_id. 
Однако, судя по отчету, валидация Twitter, подтверждающая, 
что id твита был числом, была несовершенна. 
Хотя Twitter валидирует этот символ новой строки, 0x0a, не 
позволяя его отправить, валидация может быть обойдена ко- 
дированием символов в кодировку UTF-8. Twitter произведет обратную кодировку символов в unicode, таким образом, делая 
фильтр бесполезным. Вот пример: 
1 %E5%E98%8A => U+560A => 0A 
Это важно, поскольку символы новой строки интерпретиру- 
ются сервером буквально, создавая новую строку, которую 
сервер читает и исполняет, в данном случае, возвращая новые 
cookie. 
CLRF-атака может быть еще более опасной, если система под- 
вержена XSS-атакам (смотрите раздел Cross Site Scripting). В 
этом случае, поскольку фильтры Twitter пройдены, пользова- 
телю можно будет вернуть новый ответ, включающий XSS- 
атаку. Вот URL: 
1 https://twitter.com/login?redirect_after_login=https://\ 
2 twitter.com:21/%E5%98%8A%E5%98%8Dcontent-type:text/html\ 
3 %E5%98%8A%E5%98%8Dlocation:%E5%98%8A%E5%98%8D%E5%98%8A%\ 
4 E5%98%8D%E5%98%BCsvg/onload=alert%28innerHTML%28%29%E5%\ 
5 98%BE 
Обратите внимание на добавленное %E5%E98%8A. Если мы 
заменим эти символы настоящими переносами строк, вот как 
будет выглядеть заголовок: 
1 https://twitter.com/login?redirect_after_login=https://\ 
2 twitter.com:21/ 
3 content-type:text/html 
4 location:%E5%98%BCsvg/onload=alert%28innerHTML%28%29%E5\ 
5 %98%BE 
Как видите, переносы в ссылке позволяют создать новый за- 
головок, который вернется с исполняемым Javascript-кодом svg/onload=alert(innerHTML). С этим кодом злоумышленник 
может украсть у ничего не подозревающей жертвы сессию 
Twitter. 
Выводы 
Хороший белый хакер сочетает в себе наблюда- 
тельность и навыки. В этом случае автор отчета, 
@filedescriptor, знал о предыдущем баге Firefox, 
связанном с необрабатываемой кодировкой. Это 
знание привело к тестированию подобной ко- 
дировки в Twitter для получения возможности 
вставки новых строк. 
Когда вы ищете уязвимости, всегда помните, что 
важно думать иначе и отправлять закодирован- 
ные значения, чтобы увидеть, как сайт обрабаты- 
вает введенные вами данные.



Отредактировано: 08.03.2019