有什么不对的地方希望大佬指导,也希望正在学习渗透的小伙伴加油,坚持下去,努力耕耘,总有收获。
配置错误导致漏洞(insecure-configuration )
影响版本
全版本
启动环境:
docker compose up -d
运行成功后,环境会开启三个端口:8080、8081、8082
在环境内可以看到错误代码所在处:vulhub-master/nginx/insecure-configuration/configuration
1.CRLF注入漏洞
2.目录穿越漏洞
3.add_header被覆盖
1.CRLF注入漏洞
location / {
return 302 https://$host$uri;
}
原意是为了让HTTP请求跳转到HTTPS上,但是错误的配置导致nginx会将$uri解码,导致传入%0a%0d会导致换行,从而造成CRLF注入漏洞,可注入Set-cookie头/xss,payload:http://your-ip:8080/%0a%0dSet-cookie:%20a=123 or %0a%0d<script>alert(1)</script>
Set-cookie
xss
2.目录穿越漏洞
location /files {
alias /home/;
}
看大佬的文章说这其实不算个漏洞,而是nginx的特性,问题出在alias上,“在Nginx的虚拟目录配置上,也就是Alias。Alias正如其名,alias指定的路径是location的别名,不管location的值怎么写,资源的真实路径都是Alias指定的路径”(看了两遍才看懂,可以注意点看这句话,很好理解)通俗来讲就是,当我访问http://your-ip/files/时真正访问的路径是/home/,而不是我们以为的/var/www/html/files/
所以当我们访问http://your-ip/files../时候,大家觉应该访问哪,访问到了/home/的上一个目录,也就是“/”目录,(我的理解是http://your-ip/files../-->http://your-ip/files/../)所以就造成了一个目录穿越漏洞(不得不说大佬们的思维值得学习)
3. add_header被覆盖
nginx配置文件子块server中的add_header
,将会覆盖父块中的add_header
添加的HTTP头,造成一些安全隐患。如下列代码,整站(父块中)添加了CSP(Content-Security-Policy)头:CSP 提供了很多限制选项,涉及安全的各个方面。其中default-src设置为self,就意味着CSP限制了所有的外部资源,都只能从当前域名加载。
但是如果同时设置某个单项限制(比如font-src
)和default-src
,前者会覆盖后者,即字体文件会采用font-src
的值,其他资源依然采用default-src
的值
server {
listen 8082;
root /usr/share/nginx/html;
index index.html;
server_name _;
autoindex on;
add_header Content-Security-Policy "default-src 'self'";
add_header X-Frame-Options DENY;
location = /test1 {
rewrite ^(.*)$ /xss.html break;
}
location = /test2 {
add_header X-Content-Type-Options nosniff;
rewrite ^(.*)$ /xss.html break;
}
}
[点击并拖拽以移动]
但/test2
的location中又添加了X-Content-Type-Options
头,导致父块中的add_header
全部失效。
这个洞大佬们也没复现出来,我也没能弹窗。
看了大佬们的一些以前的文章,我认为是X-Content-Type-Options的原因,他添加了nosniff 响应标头,nosniff是什么呢,它能防止谷歌 Chrome 和 Internet Explorer 尝试从服务器声明的内容中模拟嗅探响应的内容类型,如果请求的类型为1. "style“且MIME类型不是"text/css”或2. "script“且MIME类型不是JavaScript MIME类型,则nosniff会阻止请求。但是nosniff只适用于"script“和"style”类型。此外,将nosniff应用于图像将与网站不兼容。
可能有人会有疑惑为什么不是CSP限制了外部资源,因为/test2中的add_header将父块中的内容覆盖了,导致他们失效了,没起到限制作用。而这样的话谷歌不弹窗也就说得通了。
参考文章:
Content Security Policy 入门教程 - 阮一峰的网络日志
什么是"X-Content-Type-Options=nosniff"? - 问答 - 腾讯云开发者社区-腾讯云