### 简要描述: 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...
### 简要描述: 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);">](https://images.seebug.org/upload/201412/1107243166de9e3e3189c3eed7dd7e64f4ef0c8d.png) [<img src="https://images.seebug.org/upload/201412/11072505a42a1090c81a5cff1874519a9bfd8d7c.png" alt="2.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/11072505a42a1090c81a5cff1874519a9bfd8d7c.png) 第二处: [<img src="https://images.seebug.org/upload/201412/110725320b150efa1a0065cde49a195271e7f22e.png" alt="3.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/110725320b150efa1a0065cde49a195271e7f22e.png) 前台支付订单处,订单留言中填写xss代码。 后台处理订单,即可触发XSS,内容中包含用户名和密码 [<img src="https://images.seebug.org/upload/201412/11072600ac25a083050371cfe98c34eda52d64d5.png" alt="4.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/11072600ac25a083050371cfe98c34eda52d64d5.png) 第三处: 前台应聘处插入XSS。 [<img src="https://images.seebug.org/upload/201412/11072632da33257ef8d27433f4a02d63e54bed30.png" alt="5.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/11072632da33257ef8d27433f4a02d63e54bed30.png) 后台查看即可触发XSS: [<img src="https://images.seebug.org/upload/201412/11072703d44c27747bb11c9c0e9b92b47754d94f.png" alt="6.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/11072703d44c27747bb11c9c0e9b92b47754d94f.png) [<img src="https://images.seebug.org/upload/201412/110727155fdf8f11458d97478073cf1bce30b70e.png" alt="7.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/110727155fdf8f11458d97478073cf1bce30b70e.png) 第四处: 前台邮件订阅处(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);">](https://images.seebug.org/upload/201412/110728083c9f2d7bae6409b4b2761d7d581cefee.png) 后台邮件处即可触发。 [<img src="https://images.seebug.org/upload/201412/110728279e7adb868f76b911764fca1b3d89c5b4.png" alt="9.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/110728279e7adb868f76b911764fca1b3d89c5b4.png) [<img src="https://images.seebug.org/upload/201412/11072841637a744cc469a2c1579bb0b81fb68bfb.png" alt="10.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/11072841637a744cc469a2c1579bb0b81fb68bfb.png) 最后,既然都x进后台了,getshell我就不说了吧。模板处直接编辑文件写shell就ok了。基本上想干什么干什么了。 ### 漏洞证明: 如上。