Уязвимость существует в пути, которым Microsoft IIS регистрирует входящий
трафик, позволяя нападающим фальсифицировать регистрационные записи в журнале
событий. Уязвимость вызвана преобразованием входящих шестнадцатеричных замен (%xx,
где xx - HEX code) в их первоначальную форму, и сохранение первоначальной формы
в журнале регистрации (например %0A будет оттранслирован в новую строку).
Регистрационные записи в журнале IIS, имеющие шестнадцатеричные коды в
запросе, преобразуются к соответствующему символу.
Например /index%2easp становится /index.asp и сохраняется преобразованным в
журнале регистрации.
Проблема связанна с тем, что %0A преобразуется в новую строку и %FF
преобразуется во что-то, похожее на пробел. Используя эти два кодирования, вы
можете успешно создавать два регистрационных входа, которые ничем не отличаются
от настоящих.
Пример:
/index.asp%FF200%FFHTTP/1.1%0A00:52:11%FF198.116.142.34%FFGET%FF/evilplaces
Здесь запрос о /index.asp закончен 200 ответом и HTTP/1.1, показывающим,
какая версия HTTP протокола используется. Затем преобразуется новая строка
(%0A). Так как вся регистрация использует время по Гринвичу, все, что должен
сделать нападающий – это выяснить текущее время в Лондоне. Далее вы вводите IP,
который вы хотите создать, и соответствующий запрос.
Файлы регистрации используются очень часто для доказательства нелегальной
деятельности. Когда файлам регистрации нельзя доверять, возникает серьезная
проблема: как еще можно доказать нелегальную деятельность?
В приведенном выше примере, использовался следующий формат Log файлов:
- Time (time)
- Client IP Address (c-ip)
- Method (cs-method)
- URI Stem (cs-uri-stem)
- Protocol Status (cs-status)
- Protocol Version (cs-version)
Если используется другой, то вы должны добавить/удалить соответствующую запись.
Одно найти легче, чем другое. Спойлер: это не темная материя