0x1 发现漏洞

一开始是在浏览器控制台网络请求处发现了个/getfile接口,通过查看url接口大致能看出是用于请求Json文件的

88974-loxm4zw8bh.png

正常请求打开看一下URL响应内容,确实是用于加载json文件的

42221-fb2qilwdod.png

尝试在原有URL上添加一个内容发现会爆出真实路径在/var/pvc/category/

67834-052m10jah76t.png

这里我是打算说试试看填个/etc/paasswd发现提示信息有误

41959-yn8jqursd2f.png

经过测试发现是要满足 abc.abc这种带点的文件名格式

12851-6l4aml3dvtg.png

一开始想的是读取系统里面自带的符合条件的文件,然后我提取了系统里面自带的文件作为字典,这里成功读取到了证书文件啥的,但是读取这些文件也没有危害。

/getfile?file=../../etc/ssl/certs/ca-certificates.crt2 
/getfile?file=../../etc/ca-certificates.conf

12851-6l4aml3dvtg.png

0x02任意文件读取

后面在本地环境里面测试一下,发现要满足这个条件并不难,找一个存在的且满足条件的文件夹然后利用../../去读取即可,例如我这里创建了个test.dir来测试发现刚好能满足当前场景,接下来只需要找到系统自带的满足条件的文件夹即可。

cat /root/../root/test.dir/../../etc/passwd

12851-6l4aml3dvtg.png

接下来在centos系统中通过find来筛选出满足条件的自带文件夹作为字典

find /etc -type d -name '[!.]*.*' > dict

12851-6l4aml3dvtg.png

随后使用Burp去fuzz一下,成功读取到了/etc/passwd文件

/getfile?file=../../etc/logrotate.d/../../etc/passwd

12851-6l4aml3dvtg.png

尝试了一下读取 /etc/shadow发现可以读取,但是没有密码信息,那推测这个环境可能是个容器环境,

/getfile?file=../../etc/logrotate.d/../../etc/shadow

12851-6l4aml3dvtg.png

通过读取环境变量,成功获取数据库跟使用的外部api服务的key等信息

12851-6l4aml3dvtg.png

Last modification:May 7, 2025
  • 本文作者:Juneha
  • 本文链接:https://blog.mo60.cn/index.php/archives/src-file-read-vul.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
  • 法律说明:
  • 文章声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任,本人坚决反对利用文章内容进行恶意攻击行为,推荐大家在了解技术原理的前提下,更好的维护个人信息安全、企业安全、国家安全,本文内容未隐讳任何个人、群体、公司。非文学作品,请勿过度理解,根据《计算机软件保护条例》第十七条,本站所有软件请仅用于学习研究用途。
如果觉得我的文章对你有用,请随意赞赏,可备注留下ID方便感谢