本文将复现phpwind后台备份功能SQL注入漏洞

0x01 漏洞概述

漏洞程序:phpwind

漏洞影响版本:phpwind_v9.0.2_utf8_20170401

phpwind在后台的备份功能上,存在SQL注入漏洞。可对数据库进行任何的操作。由于需要拿到后台,所以影响范围相对来说还是比较小的。

0x02 代码分析

该代码位于 src/applications/backup/admin/BackupController.php中,可以看到是调用了backupTable这个方法。

跟踪一下这个函数,看看会进行什么操作。

4.png

backupTable这个函数,首先执行DROP其数据表,然后对其进行CREATE创建表对表进行数据插入,进行备份。

5.png

0x03 漏洞复现

那么我们是否可以利用该操作,达到我们想要的目的呢?比如在Mysql数据库的表里插入一个新的用户?
其Payload如下:`; insert into mysql.user(Host,User) values(‘localhost’, ‘ceshi’);`;

前面的`; 为了闭合代码中的SQL语句中的`字符。

后面的`; 让前面的和我们构造的SQL语句合并一起执行。

点击备份,我们先抓包看看。

3.png

可以看到,这些都是我们需要备份的数据表,何须这么多?只留一个备份表参数就行了,然后构造payload再发包。

2.png

可以看到,已经出现了语法错误。

1.png

放包后,页面上也弹出了报错提示。

此时,我们已经成功将ceshi这个用户添加到了mysql数据库中的user表中。

6.png

0x04 总结

其实这个漏洞还是比较鸡肋的,首先需要拿到后台,才可以有备份功能,拿到了后台说不定可以上传漏洞getshell了。又或许可以用sqlmap中的—os-shell去写shell,还需要dba权限。