03 января 2018

[pda-test.yandex.ru] Arbitrary File Reading


Для автоматизации простых проверок на сайтах bug bounty я использую два php скрипта. Первый собирает поддомены с разных источников (например, crt.sh, virustotal, shodan) для программ, где scope указан в виде *.blah.com. Второй скрипт уже непосредственно ищет уязвимости по всему списку хостов, которые можно проверить за 1 запрос. Именно они и находят все эти пачки CRLF Injection и Open Redirect из моего профиля на hackerone. Причем, чем больше уязвимостей раскрываешь на h1, тем реже они потом находятся скриптами :)

Придумывая новые идеи для второго скрипта, я решил проверить раскрытие исходного кода для JS приложений. Иногда из-за неправильной настройки приложения раздача статических файлов может быть из той же папки, где находится и серверный JS код.

/app.js
/server.js

Данная проверка выстрелила на одном из поддоменов Yandex.

https://pda-test.yandex.ru/app.js

Данный файл был серверным JS кодом, но не содержал никакой интересной информации и больше был похож на шаблон. Поэтому я дополнительно перебрал js файлы по словарю. В случае, если имя файла содержало нижнее подчеркивание и заканчивалось на “.js”, сервер выдавал stacktrace.

За счет того, что nginx не нормализует path traversal с использованием обратного слэша, а NodeJS корректно его обрабатывает, удалось получить чтение js кода из произвольной папки. Подробнее про это можно прочитать тут - Arbitrary File Reading in Next.js. Единственным условием было наличие в пути нижнего подчеркивания, причем вариант “fake_path/../realfile” не работал. К счастью, в stacktrace был путь до папки node_modules, которую я и использовал.

Протестировав варианты отбрасывания постфикса “.js” внезапно отработал %3F, что в результате дало чтение произвольных файлов.

Более того, прав хватало даже на чтение /etc/shadow.

PS: Пользователь с логином zlietapki особенно порадовал.

7 комментариев :

  1. Сергей, привет! Не знаю, можно ли на ты, но в общем, спрашивал о тебе на експлойте и т.д., никто ничего не знает. И кстати о Буме тоже. Я к чему - мне конечно далеко до тебя, (а особенно тема с редиректом твиттера - это гениально), но было бы приятно просто что-то маленькой дискуссии. Не пойми криво, я - нормальный, пусть еще и далеко до твоего места на HO. В общем, если ответишь в жабу, буду признателен, ubepkr1@exploit.im

    ОтветитьУдалить
  2. не перестаешь удивлять

    ОтветитьУдалить
  3. hey sir, are this report is get rewarded from yandex?

    ОтветитьУдалить
    Ответы
    1. Sergey Bobrov, thats nice! I want to be as good as you, are things that you have tried yourself, or have you learned that somewhere? Big Respect!

      Удалить
  4. "Hacker" word worthy ,
    Actually deserver more than 600, keep it up

    ОтветитьУдалить

Примечание. Отправлять комментарии могут только участники этого блога.