### 简要描述:
依旧过滤不严。
### 详细说明:
这次写两个把。。 - - 这两个同一文件的 哈哈。
依旧是越权。
\app\group\action\admin\group.php
无需管理 只需要一个前台注册账户就能访问。
真正的管理后台在\app\system\action\
但是为毛这admin目录下的文件都能做很多事?
[<img src="https://images.seebug.org/upload/201402/1517582124d2a1f069c065c976e0c73d4e70e107.jpg" alt="1.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/1517582124d2a1f069c065c976e0c73d4e70e107.jpg)
注入第一枚。
```
case "add_do":
$userid = intval($_POST['userid']);
$strUser = $db->once_fetch_assoc("select * from ".dbprefix."user_info where userid='$userid'");
$arrData = array(
'userid' => $userid,
'groupname' => t($_POST['groupname']),
'groupdesc' => tsClean($_POST['groupdesc']),
'isrecommend' => intval($_POST['isrecommend']),
'addtime' => time(),
'ispost' => intval($_POST['ispost']),
);
$groupid = $db->insertArr($arrData,dbprefix.'group');
//更新group_user索引关系
$groupUserNum = $db->once_num_rows("select * from ".dbprefix."group_user where userid='$userid' and groupid='$groupid'");
```
'groupdesc' => tsClean($_POST['groupdesc']),
tsclean 就是又调用了 cleanJs函数
```
function cleanJs($text) {
$text = trim ( $text );
$text = stripslashes ( $text );
// 完全过滤注释
$text = preg_replace ( '/<!--?.*-->/', '', $text );
// 完全过滤动态代码
$text = preg_replace ( '/<\?|\?>/', '', $text );
// 完全过滤js
$text = preg_replace ( '/<script?.*\/script>/', '', $text );
// 过滤多余html
$text = preg_replace ( '/<\/?(html|head|meta|link|base|body|title|style|script|form|iframe|frame|frameset)[^><]*>/i', '', $text );
// 过滤on事件lang js
while ( preg_match ( '/(<[^><]+)(lang|data|onfinish|onmouse|onexit|onerror|onclick|onkey|onload|onchange|onfocus|onblur)[^><]+/i', $text, $mat ) ) {
$text = str_replace ( $mat [0], $mat [1], $text );
}
while ( preg_match ( '/(<[^><]+)(window\.|javascript:|js:|about:|file:|document\.|vbs:|cookie)([^><]*)/i', $text, $mat ) ) {
$text = str_replace ( $mat [0], $mat [1] . $mat [3], $text );
}
return $text;
}
```
cleanJs cleanJs 只过滤js。
[<img src="https://images.seebug.org/upload/201402/15180222567da5d9206a84f8ddfea05c7d7959c8.jpg" alt="1.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/15180222567da5d9206a84f8ddfea05c7d7959c8.jpg)
看看所执行的语句
[<img src="https://images.seebug.org/upload/201402/1518025500f27866fec60160536910b5b4d886d4.jpg" alt="2.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/1518025500f27866fec60160536910b5b4d886d4.jpg)
都懂的。
____________________________________________________________________
注入第二发
```
case "edit_do":
$groupid = intval($_POST['groupid']);
$new['group']->update('group',array(
'groupid'=>$groupid,
),array(
'groupname' => t($_POST['groupname']),
'groupdesc' => tsClean($_POST['groupdesc']),
'userid' => intval($_POST['userid']),
'ispost' => intval($_POST['ispost']),
));
qiMsg("小组信息修改成功!");
break;
```
tsclean 我就不再贴了嘛; 上面都有。 Update row未过滤。
### 漏洞证明:
[<img src="https://images.seebug.org/upload/201402/15180657b08805cb88be9fb8a462c316102a0029.jpg" alt="3.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/15180657b08805cb88be9fb8a462c316102a0029.jpg)
然后再访问
http://127.0.0.1/thinksaas/index.php?app=group&ac=admin/group&ts=list
[<img src="https://images.seebug.org/upload/201402/15180730ffb5ecb0ff0fb85e880721f1b913def5.jpg" alt="4.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/15180730ffb5ecb0ff0fb85e880721f1b913def5.jpg)
话说我的@咋不见了。
暂无评论