前段时间我们SINE安全收到客户的渗透测试服务委托,在这之前,客户网站受到攻击,数据被篡改,要求我们对网站进行全面的渗透测试,包括漏洞的检测与测试,逻辑漏洞.垂直水平越权漏洞,文件上传漏洞.等等服务项目,在进行安全测试之前,我们对客户的网站大体的了解了一下,整个平台网站,包括APP,安卓端,IOS端都采用的JSP+oracle数据库架构开发,前端使用VUE,服务器是linux centos系统.下面我们将渗透测试过程里,对文件上传漏洞的检测与webshell的分析进行记录,希望更多的人了解什么是渗透测试.
我们直击漏洞根源,查看代码在uplpod.php文件里,可以看到有个lang变量给了language.php,并附加条件,设置的*文件都存在,才可以将参数值传递过去,代码截图如下:
仔细看,我们看到代码调用了save_file的调用方式,由此可以导致langup值可以伪造,追踪溯源看到该值是对应的WEB前端用户的文件上传功能,在用户文件上传这里,并没有做安全效验与安全白名单拦截机制,导致可以重命名,直接将.jsp的脚本文件上传到网站的根目录下,包括APP也存在该漏洞.
我们SINE安全技术来渗透测试复现一下该文件上传漏洞是如何利用的,首先登录会员,并打开个人资料页面,有个文件上传功能,里面只允许上传图片格式的文件,只允许上传JPG,PNG,GIF,等后缀名的文件,以普通的图片文件来上传,我们抓取POST的上传数据包,将cont1的路径地址改为/beifen/1.jsp,并提交过去,返回数据为成功上传.复制路径,浏览器里打开,发现我们上传的JSP脚本文件执行了,也再一次的证明该漏洞是足以导致网站数据被篡改的,在这之前客户的网站肯定被上传了webshell网站木马文件,随即我们对客户的网站源代码进行全面的人工安全检测与分析,对一句话木马特制eval,加密,包括文件上传的时间点,进行检查,发现在网站的JS目录下存在indax.jsp,浏览器里打开访问,是一个JSP的脚本木马,可以对网站进行篡改,下载代码,新建文件,等网站管理员的操作,同理APP端也是存在同样的漏洞.调用的文件上传功能接口是一样.具体的webshell截图如下:
到这里我们只是渗透测试的一方面,主要是检测的文件上传功能是否存在漏洞,是否可以重命名,自定义上传路径以及文件格式绕过,关于渗透测试中发现的文件上传漏洞如何修复,我们SINE安全给大家一些修复建议与办法,首先对文件的上传格式进行限制,只允许白名单里的jpg,png,gif等格式的文件上传,对自定义的路径地址进行变量覆盖,不允许更改路径地址.对上传的目录做脚本的安全限制,去除JSP的脚本执行权限.
产品推荐