文章前言
上面的截图是某系统任意文件读取漏洞补丁的截图,本篇我们将根据这张补丁截图来脑补这个漏洞的实现流程。
代码分析
1.在第35行,从HttpServletRequest的对象req中获取获取了参数filePath的值(此时filePath的值可控);
(1)第一个判断条件把可操作的目标文件限制到了规定目录中(../../,再怎么跳最后还得跳到我规定的目录中);
(2)第二个条件我们可控;
(3)第三个条件要求filePath的值(全部转小写)必须以.pdf结尾;当这三个条件都满足时才会进入到if语句中;
4.这里我们假设if判断的第一个、第三个条件判断都不存在,fileAllPath我们完全可控,这时我们进入到了if语句中;在第50行的时候,程序读取了fileAllPath所指文件的内容;
5.下面的56行、while语句和62行;是将文件内容赋值到response输出流中的实现过程;再经过后边的处理,我们在响应包中就可以看到文件内容了;但需要注意第71行,程序在读完文件后会把原文件给删除掉。
漏洞利用
漏洞POC如下:
/servlet/~uapweb/nc.lfw.billtemplate.servlet.PrintTemplateFileServlet?filePath=filename
上面就是某系统任意文件读取漏洞的触发流程,是不是很简单!
原文始发于微信公众号(网络运维渗透):【漏洞分析】用友NC PrintTemplateFileServlet 任意文件读取漏洞
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论