0x1 发现漏洞
一开始是在浏览器控制台网络请求处发现了个/getfile
接口,通过查看url接口大致能看出是用于请求Json文件的
正常请求打开看一下URL响应内容,确实是用于加载json文件的
尝试在原有URL上添加一个内容发现会爆出真实路径在/var/pvc/category/
下
这里我是打算说试试看填个/etc/paasswd
发现提示信息有误
经过测试发现是要满足 abc.abc
这种带点的文件名格式
一开始想的是读取系统里面自带的符合条件的文件,然后我提取了系统里面自带的文件作为字典,这里成功读取到了证书文件啥的,但是读取这些文件也没有危害。
/getfile?file=../../etc/ssl/certs/ca-certificates.crt2
/getfile?file=../../etc/ca-certificates.conf
0x02任意文件读取
后面在本地环境里面测试一下,发现要满足这个条件并不难,找一个存在的且满足条件的文件夹然后利用../../去读取即可,例如我这里创建了个test.dir
来测试发现刚好能满足当前场景,接下来只需要找到系统自带的满足条件的文件夹即可。
cat /root/../root/test.dir/../../etc/passwd
接下来在centos系统中通过find来筛选出满足条件的自带文件夹作为字典
find /etc -type d -name '[!.]*.*' > dict
随后使用Burp去fuzz一下,成功读取到了/etc/passwd
文件
/getfile?file=../../etc/logrotate.d/../../etc/passwd
尝试了一下读取 /etc/shadow
发现可以读取,但是没有密码信息,那推测这个环境可能是个容器环境,
/getfile?file=../../etc/logrotate.d/../../etc/shadow
通过读取环境变量,成功获取数据库跟使用的外部api服务的key等信息