由于传播、利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人承担,Cyb3rES3c及文章作者不承担任何责任。如有侵权烦请告知,我们将立即删除相关内容并致歉。请遵守《中华人民共和国个人信息保护法》、《中华人民共和国网络安全法》等相关法律法规。
二次注入+任意文件读取
全局搜索特征函数file_get_contents
在avatar.php文件中发现一处读取SESSION内容的file_get_contents函数,跟踪查看$_SESSION[‘avatar’]的值来自何处
在updateAvatar.php文件中发现后端将$avatar变量的值传递给$_SESSION[‘avatar’]
分析第19行的SQL更新语句发现存在注入,利用单引号和注释就可以向数据库中写入数据,而avatar.php文件在用户登录时被访问
所以利用思路就是在编辑用户信息处上传图片,利用可控参数向数据库写入文件信息,然后利用用户登录访问写入数据库的文件信息,达到任意文件读取。
',user_avator = '../sys/config.php' WHERE user_name = 'user7'#.png
数据库写入失败
将文件名修改为十六进制
',user_avatar = 0x2e2e2f7379732f636f6e6669672e706870 WHERE user_name = 'user7'#.png
写入成功
访问avatar.php文件就能读到/sys/config.php文件中的内容
SSRF漏洞
由于file_get_contents函数中的参数可控,所以存在SSRF漏洞
将十六进制内容修改为https://www.baidu.com
',user_avatar = 0x68747470733a2f2f7777772e62616964752e636f6d WHERE user_name = 'user7'#.png
写入成功
访问avatar.php文件,读到了https://www.baidu.com的内容
重装漏洞
每次在访问网站前后端都会去判断是否存在/sys/install.lock文件,如何没有该文件就会初始化安装网站
将install.lock删除或者重命名后访问网站就会看到泄露的系统信息
创建数据库的地方存在配置文件写入漏洞
在install.php文件中,后端直接将用户输入的参数写入/sys/config.php配置文件中
将数据库名修改为Poc
安装成功后/sys/config.php配置文件被修改了
访问index.php文件就执行phpinfo()函数
文章内容如有描述不当之处,欢迎留言指正!
原文始发于微信公众号(Cyb3rES3c):记一次对VAuditDemo的白盒审计