mirror of https://github.com/yandex/gixy
[http_splitting] also checks CR injection
parent
b14934d3ba
commit
acba288be7
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
HTTP Splitting - attack that use improper input validation. It usually targets web application located behind Nginx (HTTP Request Splitting) or its users (HTTP Response Splitting).
|
HTTP Splitting - attack that use improper input validation. It usually targets web application located behind Nginx (HTTP Request Splitting) or its users (HTTP Response Splitting).
|
||||||
|
|
||||||
Vulnerability is created when an attacker can insert newline character `\n` into request or into response, created by Nginx.
|
Vulnerability is created when an attacker can insert newline character `\n` or `\r` into request or into response, created by Nginx.
|
||||||
|
|
||||||
## How can I find it?
|
## How can I find it?
|
||||||
You should always pay attention to:
|
You should always pay attention to:
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
HTTP Splitting - уязвимость, возникающая из-за неправильной обработки входных данных.
|
HTTP Splitting - уязвимость, возникающая из-за неправильной обработки входных данных.
|
||||||
Зачастую может быть для атак на приложение стоящее за Nginx (HTTP Request Splitting) или на клиентов приложения (HTTP Response Splitting).
|
Зачастую может быть для атак на приложение стоящее за Nginx (HTTP Request Splitting) или на клиентов приложения (HTTP Response Splitting).
|
||||||
|
|
||||||
Уязвимость возникает в случае, когда атакующий может внедрить символ перевода строки `\n` в запрос или ответ формируемый Nginx.
|
Уязвимость возникает в случае, когда атакующий может внедрить символ перевода строки `\n` или `\r` в запрос или ответ формируемый Nginx.
|
||||||
|
|
||||||
## Как самостоятельно обнаружить?
|
## Как самостоятельно обнаружить?
|
||||||
При анализе конфигурации всега стоит обращать внимание на:
|
При анализе конфигурации всега стоит обращать внимание на:
|
||||||
|
|
|
@ -29,7 +29,7 @@ class http_splitting(Plugin):
|
||||||
return
|
return
|
||||||
|
|
||||||
for var in compile_script(value):
|
for var in compile_script(value):
|
||||||
if not var.can_contain('\n'):
|
if not var.can_contain('\n') and not var.can_contain('\r'):
|
||||||
continue
|
continue
|
||||||
reason = 'At least variable "${var}" can contain "\\n"'.format(var=var.name)
|
reason = 'At least variable "${var}" can contain "\\n"'.format(var=var.name)
|
||||||
self.add_issue(directive=[directive] + var.providers, reason=reason)
|
self.add_issue(directive=[directive] + var.providers, reason=reason)
|
||||||
|
|
Loading…
Reference in New Issue