CmsEasy最新版5.5 存储型XSS导致GetShell

2014-12-11T00:00:00
ID SSV:94043
Type seebug
Reporter Root
Modified 2014-12-11T00:00:00

Description

简要描述:

n处XSS,我不信都插完打不到cookie,get不了shell -.-

详细说明:

第一处(只代码审计第一处,后面几处类似。都是没有过滤):

function login_false() { cookie::set('loginfalse',(int) cookie::get('loginfalse')+1,time()+3600); event::log('loginfalse','失败 user='.front::post('username')); front::flash(lang('登陆失败!')."<a href=''>".lang('backuppage')."</a>"); }

只要登陆失败,就会调用login_false函数,然后front::post来查询username后返回给event::log函数进行记录 继续跟进post

self::$post=$_POST;

程序把POST内容给了self::$post

static function post($var) { if (isset(self::$post[$var])) return self::$post[$var]; else return false; }

并且直接返回了post内容 继续跟进event::log函数

static function log($action,$remark){ $user = new user(); $username = cookie::get('login_username'); $row = $user->getrow(array('username'=>$username)); $uid = $row['userid']; $action = lang($action);$remark = lang($remark); $ip = front::ip(); $addtime = time(); $sql = "INSERT INTO `".config::get('database', 'prefix')."event` VALUES (null,'$uid','$username','$ip','$addtime','$action','$remark')"; $event = new event; $event->query($sql); }

程序直接把参数带入插入语句,无过滤,导致XSS 证明: 前台登陆,用户名填写<script>alert(document.cookie);</script>,密码随意 后台日志处,即可触发XSS,cookie内容中包括用户名和密码。

<img src="https://images.seebug.org/upload/201412/1107243166de9e3e3189c3eed7dd7e64f4ef0c8d.png" alt="1.png" width="600" onerror="javascript:errimg(this);">

<img src="https://images.seebug.org/upload/201412/11072505a42a1090c81a5cff1874519a9bfd8d7c.png" alt="2.png" width="600" onerror="javascript:errimg(this);">

第二处:

<img src="https://images.seebug.org/upload/201412/110725320b150efa1a0065cde49a195271e7f22e.png" alt="3.png" width="600" onerror="javascript:errimg(this);">

前台支付订单处,订单留言中填写xss代码。 后台处理订单,即可触发XSS,内容中包含用户名和密码

<img src="https://images.seebug.org/upload/201412/11072600ac25a083050371cfe98c34eda52d64d5.png" alt="4.png" width="600" onerror="javascript:errimg(this);">

第三处: 前台应聘处插入XSS。

<img src="https://images.seebug.org/upload/201412/11072632da33257ef8d27433f4a02d63e54bed30.png" alt="5.png" width="600" onerror="javascript:errimg(this);">

后台查看即可触发XSS:

<img src="https://images.seebug.org/upload/201412/11072703d44c27747bb11c9c0e9b92b47754d94f.png" alt="6.png" width="600" onerror="javascript:errimg(this);">

<img src="https://images.seebug.org/upload/201412/110727155fdf8f11458d97478073cf1bce30b70e.png" alt="7.png" width="600" onerror="javascript:errimg(this);">

第四处: 前台邮件订阅处(index.php?case=archive&act=email)插入xss代码,未进行邮件合法性判断和xss脚本过滤

<img src="https://images.seebug.org/upload/201412/110728083c9f2d7bae6409b4b2761d7d581cefee.png" alt="8.png" width="600" onerror="javascript:errimg(this);">

后台邮件处即可触发。

<img src="https://images.seebug.org/upload/201412/110728279e7adb868f76b911764fca1b3d89c5b4.png" alt="9.png" width="600" onerror="javascript:errimg(this);">

<img src="https://images.seebug.org/upload/201412/11072841637a744cc469a2c1579bb0b81fb68bfb.png" alt="10.png" width="600" onerror="javascript:errimg(this);">

最后,既然都x进后台了,getshell我就不说了吧。模板处直接编辑文件写shell就ok了。基本上想干什么干什么了。

漏洞证明:

如上。