security - 在 GET 请求中的 nginx access.log 中找到的 URL
问题描述
我正在使用 nginx 管理托管在 aws ec2 上的站点。避免威胁持续监控 nginx 日志(access.log 和 error.log)。尽管通过调整 nginx.conf 可以很好地管理许多威胁,但是我什至无法弄清楚攻击者如何设法发送此类请求。
访问日志
xx.xxx.xx.xxx - - [18/Aug/2021:09:04:13 +0000] "GET http://xxxxxxxxx.com/ HTTP/1.1" 200 1400 "-" "Go-http-client/1.1"
在上述情况下,假设我的网站名称是“h ttp://abc-xyz-1234.com”,攻击者在路径中传递 url(即http://xxxxxxxxx.com/),而 nginx 以“200”响应. 我仍然摸不着头脑,请求是如何提出的,以及用 1400 字节响应的内容(响应长度仍然远小于路径“/”的网站响应站点)。
因为我相信它不可能通过浏览器,所以我尝试使用 curl 进行模拟,但它不起作用。
它被认为是 2 个单独的 curl 请求
curl -A Mozilla h ttp://abc-xyz-1234.com/ http://xxxxxxxxx.com
无效域
curl -A Mozilla h ttp://abc-xyz-1234.comhttp://xxxxxxxxx.com
它将使用路径 /http://xxxxxxxxx.com 访问主机并被拒绝。攻击者设法在没有前缀“/”的情况下发送它,这就是试图模拟的内容
curl -A Mozilla h ttp://abc-xyz-1234.com/http://xxxxxxxxx.com
解决方案
您可以--request-target
为此使用:
curl -A Mozilla http://abc-xyz-1234.com --request-target http://xxxxxxxxx.com
推荐阅读
- arrays - Trying do deal with an object that can be an array or a number
- c - 如何用不同的符号和对角线在C中绘制一个正方形?
- windows - 无法使用 hyperv 在 Windows 中启动 minikube
- functional-programming - Java兼容的简单表达式语言
- unit-testing - [PHPUnit]、[Symfony]:测试实体是否保存在数据库中
- python - Python 什么是正确的时间格式:2018-11-13T20:20:39+00:00
- c# - 在自定义 UserControl 上强制透明背景
- automation - 如何获取 SVG 或 PNG 中的徽标集合并自动制作 Visio 模板集合?
- mysql - 试图从一个表中删除另一个表中存在的记录
- django - 我想使用 Django 为两个外键添加两个注释。我该怎么做呢?