在前几个月的时候,我公布了一个关于 Kangle Web Server的源代码泄漏漏洞,Kangle Web Server的开发公司在收到我的漏洞报告后迅速修补了该安全漏洞,响应速度十分快速。同时,该公司向我提供了企业版的 Kangle Web Server,邀请我能够为他们的产品做一下安全测试,我欣然答应。在随后的测试中,我发现了新的安全漏洞,并且第一时间向 Kangle Web Server的开发公司做了安全汇报,漏洞得到了对方的承认。现在,Kangle Web Server的版本已经升级到了 3.0。
为了能够与大家一起学习安全技术,我这里将这个新的漏洞发掘过程拿出来与大家一起分享,希望能让大家有所收获。
这一次新发现的安全漏洞属于一个非常典型的越权漏洞,该漏洞造成的直接后果是能够让攻击者下载到安装有 Kangle Web Server的服务器上的任意文件,甚至可以利用该漏洞来遍历服务器上的文件目录。现在,我们就来看一看该漏洞时如何被我们发现的。
这里发现漏洞的 Kangle Web Server版本号为 1.1。我们在Windows系统下安装好该版本的 Kangle Web Server,并运行该程序后。打开浏览器输入网址://127.0.0.1将会访问到 Kangle WebServer的初始页面。此时,不要关闭浏览器,我们现在要对网址做一个小改变。我们在127.0.0.1的后面加上一段特殊编码的字符串“..%2F..%2F ..%2F ..%2F ..%2F ..%2F ..%2F boot.ini”。熟悉 ASCII编码的读者朋友们一眼就能看出这里我们输入的字符串其实就是“../../../../../../../boot.ini”。这里最为关键的内容就是这个“../”符号,它代表着上一层目录的意思,按照道理来说,Kangle Web Server在解析这个特殊符号时应当阻止用户利用该符号访问到 Web目录以外的内容,但是结果真的是这样吗?现在,让我们在浏览器中回车,如图1所示。
看到了吗?此刻,浏览器竟然提醒我们下载文件,如果我们这里选择“打开”,你会发现浏览器下载到的文件就是服务器 C盘目录下的系统文件!这意味着,我们此刻已经跨越了 Kangle Web Server所规定的 Web目录,访问到了 Web目录以外的内容!
利用“..%2F”符号,我们现在甚至可以对服务器进行目录遍历,如图 2所示
虽然看起来这个漏洞似乎很好发现,但是,如果我们在漏洞挖掘过程中只是找着死板的思路,利用“ ../”来测试的话,你就会发现Kangle Web Server不会对“../”符号产生错误解析,它会阻止用户利用“../”符号来达到跨越目录的目的。而我们这里将“/”这个符号进行一定编码,将其转化为十六进制的 ASCII码表达式,这个时候,Kangle Web Server在解析时就发生了错误,从而造成了安全漏洞的出现。
最后,新版本的 Kangle Web Server已经不存在该安全漏洞,我们这里主要是学习这个漏洞的挖掘思路,在以后面对 Web服务类型的软件时,可以参照这里的方法进行漏洞挖掘。
本文为网络安全技术研究记录,文中技术研究环境为本地搭建或经过目标主体授权测试研究,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,在挖掘、提交相关漏洞的过程中,应严格遵守相关法律法规。