漏洞程序:phpwind
漏洞影响版本:phpwind_v9.0.2.170426_utf8
phpwind在后台的备份功能上,存在SQL注入漏洞。可对数据库进行任何的操作。由于需要拿到后台,所以影响范围相对来说还是比较小的。
该代码位于 src/applications/backup/admin/BackupController.php
中,可以看到是调用了backupTable这个方法。
跟踪一下这个函数,看看会进行什么操作。
backupTable
这个函数,首先执行DROP其数据表,然后对其进行CREATE创建表对表进行数据插入,进行备份。
那么我们是否可以利用该操作,达到我们想要的目的呢?比如在Mysql数据库的表里插入一个新的用户? 其Payload如下:`; insert into mysql.user(Host,User) values('localhost', 'ceshi');`;
前面的`; 为了闭合代码中的SQL语句中的`字符。
后面的`; 让前面的和我们构造的SQL语句合并一起执行。
点击备份,我们先抓包看看。
可以看到,这些都是我们需要备份的数据表,何须这么多?只留一个备份表参数就行了,然后构造payload再发包。
可以看到,已经出现了语法错误。
放包后,页面上也弹出了报错提示。
此时,我们已经成功将ceshi这个用户添加到了mysql数据库中的user表中。
其实这个漏洞还是比较鸡肋的,首先需要拿到后台,才可以有备份功能,拿到了后台说不定可以上传漏洞getshell了。又或许可以用sqlmap中的—os-shell去写shell,还需要dba权限。