nginx 反代 tomcat 后, url 带斜杠出现源码下载漏洞

2022-02-08 15:42:36 +08:00
 FONG2

百度搜了一遍,tomcat 有类似的漏洞,但是我的版本已经修复。 实测直接访问 tomcat 地址 xxx.jsp/报 404 , 访问 nginx 地址 xxx.jsp/弹出下载请求,能把这个 jsp 源码下回来, 怎么破? 百度没找到相应漏洞说明, 我尝试用 rewire 屏蔽后斜杠,但是导致 xxx.com/aa/打不开了。

6347 次点击
所在节点    NGINX
44 条回复
keepeye
2022-02-08 18:43:37 +08:00
location / {
return 403;
}

测一下有没有走到里面
adoal
2022-02-08 18:49:12 +08:00
nginx 没配 root 也有个默认 root 的,也许就是跟 tomcat 一起了呢
jptx
2022-02-08 18:51:58 +08:00
强烈怀疑问题出在 Tomcat 及应用里,可能某个配置导致 Tomcat 直接按普通资源文件来处理 jsp 文件了,并没有走 jsp 的解析逻辑
lower
2022-02-08 20:08:00 +08:00
你 tomcat 里面跑了多少项目啊?反代到 tomcat 根路径就好,简简单单的最不容易出问题,否则相对路径映射来映射去的就会出莫名其妙的问题
项目多就跑多个 tomcat 进程,用端口来区分明明白白的
zanelee
2022-02-08 21:02:02 +08:00
为什么要 location /abc {};然后再 http://1.1.1.1:8080/abc;
直接这样不行吗?那个 abc
location ^~ /abc {
...
proxy_pass http://1.1.1.1:8080;
}
FONG2
2022-02-08 21:45:35 +08:00
@skiy curl ng 地址是下载 curl tomcat 地址是 404
FONG2
2022-02-08 21:46:27 +08:00
@jptx 直接访问 tomcat 地址没有问题呢 a.jsp/报 404
FONG2
2022-02-08 21:49:08 +08:00
@zanelee
@lower tomcat 就一个应用,abc.war
tomcat 访问地址就是 1.1.1.1:8080/abc
FONG2
2022-02-08 21:51:07 +08:00
@adoal 那我明天配个 root 看看
FONG2
2022-02-08 22:01:14 +08:00
@eason1874 怎么打日志?访问 nginx 地址 http://host/abc/a.jsp/ 弹下载提示 是否下载 a.jsp_ 保存后就是 a.jsp 源码,名字多了个下划线
nginx 的日志 access.log tomcat 的日志 localhost_access_xx.txt 都没有日志记录
要在 jsp 里面用 java 代码输出 System.out.print? 我估计也不会打日志
oneisall8955
2022-02-08 22:37:53 +08:00
先 curl 到 1.1.1.1:8080/abc/a.jsp/ 看是 404 还是下载源码。如果 404 ,tomcat 不背这个锅。下载源码的话,nginx 配置错了,上层 root 静态资源配置到 tomcat 去了?
FONG2
2022-02-08 23:27:24 +08:00
@oneisall8955 先 curl 到 1.1.1.1:8080/abc/a.jsp/ 这个是 404
nginx Server 没配 root 地址,准备明天配一个看看
GuuJiang
2022-02-09 00:08:37 +08:00
最简单的排查方法,让 tomcat 和 nginx 跑在不同的机器上,如果不能复现,说明就是 nginx 把 jsp 当成静态资源了,与反代无关
skiy
2022-02-09 00:16:06 +08:00
@FONG2 看我 12 楼的例子。这是我能跑的反代。另外,我记得 root 好像要必配的。你配置好时,有尝试 nginx -t 了没?有 reload 或者 restart nginx 了没?

感觉你配置得有问题。
xiaoDevil
2022-02-09 00:29:31 +08:00
@FONG2 可以试试把 tomcat 关了,请求 nginx/a.jsp/ 看看能不能下载, 还能下载就说明不是 tomcat 的事,nginx 配置的有问题,然后再依次检查 nginx 的配置
ipwx
2022-02-09 00:33:18 +08:00
35L 的方法好,先把 tomcat 关了看能不能访问 .jsp 的代码
Beebird
2022-02-09 01:05:24 +08:00
赞同 25 楼说的,http://1.1.1.1:8080/abc 这样不对,可能会导致 uri (/abc/a.jsp) append 到 /abc 后面
lolizeppelin
2022-02-09 10:53:47 +08:00
nginx rpm 版的默认 root 是 /usr/share/nginx
elevioux
2022-02-09 12:06:58 +08:00
很可能只是配置错了,nginx 根本没有把请求给到后端,直接当作静态文件给下载了
lupohan44
2022-02-09 13:36:07 +08:00
@FONG2 #26 清除浏览器缓存试试?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/832466

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX