[【通过】] Douphp后台注入漏洞

[复制链接]
Adam 发表于 2016-12-28 19:43:11 | 显示全部楼层 |阅读模式

正式成员|主题 |帖子 |积分 26

Douphp后台注入(DouPHP_1.3_Release_20160909:
最新版本已修复
后台存在多处漏洞,拿文章分类处举例:
进入后台后选择文章分类模块,点击添加分类
1.png

进入添加页面后,在分类名称一栏中插入数据test',(SELECT user()))#,其他随便添加即可,如下图:
2.png
提交完成后查看文章分类:
3.png

Payload已经插入,接下来是二次注入的利用

在文章分类页面删除我们刚刚添加的分类:
4.png
点击确认删除即可。

删除后进入操作记录模块:
5.png

原理:
在源码中/admin/article_category.php

分类删除的相关代码如下:
6.png
首先第140行从数据库中取出我们已经插入的数据,cat_name为注入的参数,这里赋值给$cat_name变量,然后在148行中与$_LANG['article_category_del']拼接作为参数传入create_admin_log()函数,来看create_admin_log()函数。

    function create_admin_log($action) {
        $create_time = time();
        $ip = $this->get_ip();
        
        $sql = "INSERT INTO " . $this->table('admin_log') . " (id, create_time, user_id, action ,ip)" . " VALUES(NULL, '$create_time', " .$_SESSION[DOU_ID]['user_id'] . ", '$action', '$ip')";
$this->query($sql);
}
$action为我们传入的参数,$_LANG['article_category_del']的值为删除文章分类:,拼接$cat_name变量后变成了删除文章分类:test',(SELECTuser()))#”,这就是我们传入的$action参数,然后为sql语句代码赋值那一行变成了:
$sql = "INSERT INTO " . $this->table('admin_log') . " (id, create_time, user_id, action ,ip)" . " VALUES(NULL, '$create_time', " .$_SESSION[DOU_ID]['user_id'] . ", '$action', '$ip')";
Sql语句变成了:
INSERT INTO ` admin_log `(id, create_time,user_id, action ,ip) VALUES (NULL, '创建时间',’你的ID’, '删除文章分类:test',(SELECT  user() ))#', '127.0.0.1');

test后面的单引号闭合了前面的删除文章分类前面的,SELECT  user()正好占据了127.0.0.1的位置,#号把后面注释掉了,将user()函数的执行结果插入了ip一列。




评分

参与人数 1酒票 +5 收起 理由
管理05 + 5 欢迎加入90!

查看全部评分

快速回复 返回顶部 返回列表