# szi-rule-11-2

## Суть задания
Нужно написать не более трех правил Suricata, которые обнаруживают весь вредоносный HTTP-трафик из стенда и не дают ложных срабатываний на легитимные запросы.
Можно написать до 3х правил

## Идея решения

Вредоносные запросы делятся на две группы:

- шаблонные конструкции в теле запроса: `{{`, `{%`, `[%`, `<%`, `<%=`, `$[`;
- шаблонные конструкции в заголовках и cookie: `X-Forwarded-For: #{...}`, `X-User-Key: @{...}`, `Cookie: session_id={{...}}`.

В легитимном трафике встречаются отдельные фигурные или квадратные скобки, но нет этих маркеров в таком виде. Поэтому достаточно выявлять именно их.

## Рабочие правила Suricata

```suricata
alert http any any -> any any (pcre:"/{{|#{|@{|${|<%|env|{%/"; sid:1;)
alert http any any -> any any (content:"$["; sid:2;)
alert http any any -> any any (content:"[%"; sid:3;)
```

Первое правило покрывает потенциально вредоносные запросы::
- `{{` в теле запроса;
- `{%`, `[%`, `<%`, `$[` в теле запроса;
- `#\{`, `@\{` или `session_id={{` в заголовках.

Второе правило покрывает атаки, которые передаются не в теле, а через заголовки или cookie.

## Флаг

Флаг: `vsosh{m4n4g3r_gu4rd_g0l3m}`
