Хабрахабр

Генерация PDF для скачивания конфигов сервера

Есть замечательный проект hiqpdf.

Умеет html качественно в pdf или картинки превращать

Но по дефолту не учитывает тот факт, что в html можно вставлять js/iframe, которые могут быть использованы не по назначению.

Ну и я не долго думая попробовал это на их же сайте
Вот так нагенерил в консоли браузера ифреймы

var str = ""; for (var i = 8000; i <= 9000; i++) { str += "#" + i; str += "<iframe src='http://localhost:" + i + "' height='60' width='300'></iframe><br/>";
} str;

Получилось что-то вроде этого

Вот такой самоскан портов.

Нашёл плеск (конечно nmap таже спокойно находит и даже больше -p [8000-9000] -T4 -A -v hiqpdf.com, но вот так интереснее же).

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

Код взят прямо с hiqpdf.com, без лишних телодвижений. Есть апи на .net, которое отдаёт просто строку и всё + есть код, который умеет на этом сервере генерировать pdf.

Теперь 4 iframe localhost/api/def/get

Ок, проверим, что это точно .net на винде

Ноги растут из древностей доса, когда это были конкретные устройства. localhost/api/con.aspx — если не в курсе, файлы с именем con/aux и ещё какие-то для винды запрещены.

Например — очень мне нравится сайт, особенно если под рукой лишь телефон, а так хочется какой-нибудь код набрать:

dotnetfiddle.net/con1.asmx — обработанная ошибка и соответствующая 404-страница
dotnetfiddle.net/con.asmx — вот уже не судьба до управляемого кода в пуле добраться
dotnetfiddle.net/con.txt — а вот так можно и путь получить к директории (Physical Path E:\sitesroot\0\con.txt)

Лан, теперь самое интересное — узнать директорию, по локалхосту у меня ошибки 404 не закрыты и получаю их, как есть. На самом деле без понятия зачем мне версия, в теории может помочь, если там старая и ты знаешь уязвимости нулевого дня для них.

В виду того, что это сайт на .net — конфиг файл web.config лежит в корне:

Собственно, это было легковесное демо.

А теперь на реальных данных (чей-то прод, они уже прикрыли лавочку 😉

О, там секция включается из файла connections.config, удобно, нестандартно, отлично скачивается:

И ещё немного данных:

Думаю, тут уже всё понятно и продолжать сыпать скринами нет смысла.
Жаль вся БД снаружи закрыта.
А из JS я такого пока не умею (да, там можно не только iframe, но и js юзать).

Сразу оговорюсь — именно hiqpdf тут не при чём, проблема конфигурации приложения, кода отправки на печать в pdf данных (если знаешь, что чётко будет html, то нужно делать htmlencode), а также любых других либ, например стандартный компонент WebBrowser умеет также.

И юзают для получения картинки компоненту WebBrowser (со мной любезно поделились куском кода, но попросили не раскрывать название продукта, где он юзается). Собственно продолжение — оказывается некоторые любят не PDF, даже не HTML, а именно изображение, допустим png.

Windows. Суть — можно написать js, который исполнялся в дефолтной System. WebBrowser компоненте: Forms.

Вот сам исходник

using (WebBrowser br = new WebBrowser())

}

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

На момент обнаружения достаточно было 1к запросов отправить в API (да, дело происходило на IIS и алерты, я так понимаю, если и были, то на том же сервере, если, конечно, войти под учёткой, от которой запущен пул).

По моему опыту это и так по дефолту, и мне дико повезло, что оказалось иначе. Как это править — WebBrowser это IE и необходимо для него запрещать на windows-сервере JS.

Если знаешь, что юзаешь подобную компоненту, а клиент может содержать управляющие символы — их нужно экранировать. Но это отстой и по-хорошему — конечно нельзя в такие компоненты вставлять данные, как есть.

Для HTML/JS достаточно сделать HtmlEncode.

RunJavaScript = false отлично умеет запрещать JS. Но если что, то HiqPdf через htmlToPdfConverter.

Всё это не так эффектно, как в прошлый раз, но, как видите, тоже может помочь в добытии конфигов сервера.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть