【实战】从SSRF到任意文件下载再到远程文件下载
2023-11-29 10:31:44 Author: NOVASEC(查看原文) 阅读量:9 收藏


△△△点击上方“蓝字”关注我们了解更多精彩
0x00 前言

一次渗透测试,看了好一会没啥成果。无意中发现了ssrf漏洞,根据PHP的报错信息,发现其实是远程文件下载漏洞,从而成功拿下服务器。

0x01 初看时,只是小小SSRF
首先,经典弱口令进入后台,围着这个站看了好久只找到sql注入,是postgres数据库,没办法拿shell。文件上传的位置也做了白名单限制

发现有报告下载功能,抓包发现请求了一个内网IP地址,第一反应是ssrf漏洞

测试下出网情况,发现服务器可以出网。

0x02 再看时,还是任意文件下载

本以为只是简单的SSRF漏洞,测试发现该接口居然还能读文件,也就变成ssrf+任意文件下载两漏洞

无意中发现,不加绝对路径也能读,此时的想法是:难道服务器自己会找文件?

0x03 看时,原来是Copy文件
带着疑问,我想着去读数据库配置文件,没找到这个文件导致网站报错了,根据报错这里发现了两个方法:copy和fopen。

首先解释下PHP中的copy方法。根据传入的参数不同,copy方法是可以从本地复制,也可以远程复制,然后将结果保存到其他文件。

仔细看这段报错,这里服务器copy了一个文件,如果这个文件存在就会保存到另一个文件夹下,然后使用fopen读取保存的文件。

这也就解释了为什么不需要绝对路径也能读取文件。

这是因为第一次读取/etc/passwd时,passwd被保存到了本地。当再次读取passwd时,则从保存的文件读取。相当于一个缓存作用。

尝试访问被保存的文件,发现是永久保存的。那么这个漏洞就变成了远程文件下载漏洞。

0x04 看透彻,直接Getshell

如果我在vps上放一个php的webshell,然后让它去下载,岂不是直接拿下。

直接下载php脚本,访问下文件发现能解析php

冰蝎连接后命令也能正常执行,不过权限不是root。由于不打内网,就不做进一步的操作了。愉快写报告。

0x05 总结

1、文件下载的功能点不要使用路径或url的形式。

2、PHP不要随意开启debug模式,你不开我还找不到文件落地在哪里。

感谢【Mi】先生投稿。

0x99 免责声明

在学习本文技术或工具使用前,请您务必审慎阅读、充分理解各条款内容。

1、本团队分享的任何类型技术、工具文章等文章仅面向合法授权的企业安全建设行为与个人学习行为,严禁任何组织或个人使用本团队技术或工具进行非法活动。

2、在使用本文相关工具及技术进行测试时,您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。如您仅需要测试技术或工具的可行性,建议请自行搭建靶机环境,请勿对非授权目标进行扫描。

3、如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。

4、本团队目前未发起任何对外公开培训项目和其他对外收费项目,严禁任何组织或个人使用本团队名义进行非法盈利。

5、本团队所有分享工具及技术文章,严禁不经过授权的公开分享。

如果发现上述禁止行为,我们将保留追究您法律责任的权利,并由您自身承担由禁止行为造成的任何后果。

END

如您有任何投稿、问题、建议、需求、合作、后台留言NOVASEC公众号!

或添加NOVASEC-余生 以便于及时回复。

感谢大哥们的对NOVASEC的支持点赞和关注

加入我们与萌新一起成长吧!

本团队任何技术及文件仅用于学习分享,请勿用于任何违法活动,感谢大家的支持!


文章来源: http://mp.weixin.qq.com/s?__biz=MzUzODU3ODA0MA==&mid=2247489198&idx=1&sn=32953b6d6a44b80abe964bb57376eca2&chksm=fad4cbb9cda342af69df8ebd06d41e38d29c5a9f5a5d0dbd22b635dfdda4fd4483931deb9ba3&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh