CVE-2018-11784简单分析之反推的魅力
看着挺有趣的,简单分析下:
通过搜索tomcat漏洞找到:
http://tomcat.apache.org/security-7.html#Fixed_in_Apache_Tomcat_7.0.91
修改了这两个文件,我们看java文件即可,xml文件先不看:
因为跟url跳转相关,直接搜索redirect/direct等关键字:
关键问题在这里
说实话这样黑盒找修复代码,还是有点费劲的,毕竟看的是修复代码,没有漏洞代码做参照
通过网上前人的脚印找到github漏洞修复对比:
https://github.com/apache/tomcat/commit/efb860b3ff8ebcf606199b8d0d432f76898040da
这样看太清晰了,其中问题代码是左边的代码块:
右边是加了一行这个:
// Avoid protocol relative redirects
while (location.length() > 1 && location.charAt(1) == '/') {
location.deleteCharAt(0);
}
修复这个问题代码的版本如下:
github项目:tomcat>9.0.12都修复了,tomcat9.0.12之前都没做处理
跟进相关修复文件:
复制粘贴出来这一段到我的本地测试:
这是修复后的,直接去除掉修复的代码:
运行查看:
访问:http://localhost:8070//test
跳转到了test
漏洞原因就是因为:
sendRedirect方法支持http/https外,还有//
运行下:
访问路由地址,跳转到百度:
这里的代码没对//做处理,导致变量走sendRedirect的时候,直接url跳转了:
简单跟下sendRedirect方法:
再往下跟进函数
修复方案就是去除掉两次/
所以官方的修复方案就是这样:
循环判断,如果这里的while改成if,那么会存在安全问题hhhh
再次访问:http://localhost:8070//test/
已经不能重定向了
输入//,只会输出一个
这样可控点再走sendRedirect方法,就不能url跳转了.
这种反推对漏洞挖掘来说还是很有意思的
推荐阅读
作者:飘渺红尘
文章来源:https://www.cnblogs.com/piaomiaohongchen/p/15215885.html
如有侵权,请联系删除
星球部分精华内容推荐
其他更多精彩内容,欢迎加入我们的星球