Я играю с snort, чтобы понять правила, и пытаюсь запустить следующее правило:
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"WEB-PHP PhpGedView PGV base directory manipulation"; flow:to_server,established; uricontent:"_conf.php"; nocase; content:"PGV_BASE_DIRECTORY"; nocase; reference:bugtraq,9368; classtype:web-application-attack; sid:2926; rev:1;)
AFAIU говорит, что если URI содержит _conf.php
и PGV_BASE_DIRECTORY
находится в контенте (независимо от его положения), то срабатывает правило.
Я сделал этот HTTP-запрос в качестве теста:
GET _conf.php HTTP/1.1
file: PGV_XXX_BASE_DIRECTORY
PGV_BASE_DIRECTORY
а затем отправил его на ip-адрес сервера snort с помощью nc. Я проверил свои логи: ничего. Однако, если я удалю _XXX
во второй строке запроса я получаю предупреждение:
Jun 3 15:39:00 snort snort[20168]: [1:2926:1] WEB-PHP PhpGedView PGV base directory manipulation [Classification: Web Application Attack] [Priority: 1] {TCP} 1.2.3.100:34859 -> 10.0.2.18:80
Почему PGV_BASE_DIRECTORY в нижней части моего запроса не сработало правило? Что я упустил?
редактировать
Похоже, что при использовании метода POST правило срабатывает. Может быть, это связано с препроцессором http?