LFI [m.market.yandex.ru] (31337 рублей)
Обнаружено было случайно (плагином к Burp для поиска XSS через Request-URI) из-за ошибки при следующем запросе.
http://m.market.yandex.ru// (ошибка есть до сих пор)
Код:
<xscript_invoke_failed error="Evaluate script :
JS ERROR 206: Error: Caught exception 'basic_filebuf::underflow error reading the file' in xscript::js_file::load, line: 6" block="js"/>
<xscript_invoke_failed error="empty path" block="file" method="invoke"/>
Подключался файл примерно таким образом:
Код:
docroot://${REQUEST_URI}
Благодаря lighttpd следующие запросы не блокировались при разборе и корректно обрабатывались:
Код:
GET /../../../../../xxx HTTP/1.1
Таким образом, с помощью найденной уязвимости можно было:
1) В случае возможности сформировать на сервере валидную XML, содержимое которой мы контроллируем, это бы дало как минимум: все возможности XScript (с ним, к сожалению, не работал и подробно не могу расписать, но это как минимум server-side js, lua, чтение произвольных файлов, произвольные http запросы), XXE
2) Подключение xscript xml, относящихся к другим сайтам на этом сервера.
Что из-за разности docroot (при относительном подключении файлов) давало кучу ошибок, информацию о содержимом этих скриптов и пищу для размышлений
3) Подключение xscript xml, относящихся к этом сайту с получением "сырого" ответа без обработки xslt
4) Чтение первой строчки не xml файлов (через ошибку разбора xml)
Код:
GET /../../../../../etc/passwd
root:x:0:0:root:/root:/bin/bash
GET /../../../../../etc/hostname
pepelac09e
5) Брутфорс директорий по разности ответов
Код:
GET /../../../../../var/www
GET /../../../../../var/xxx