xiuno bbs 后台Getshell漏洞

  • 发表于
  • Vulndb

官方介绍:

Xiuno 这个名字来源于圣斗士星矢白羊座的黄金圣斗士修罗,他的攻击速度和战斗力是十二宫最强的,他是速度和力量的化身;在佛教里面,修罗为六道之一,处于人道和天道之间的一道,半人半神,性情刚烈,好战斗。我们取其寓意,希望XIUNO变得越来越强,越来越快。

在 Xiuno BBS 的第一行代码开始(一共大约有4W多行代码,历时多年积累)对性能的追求就到了苛刻,完美,歇斯底里,神经质,作者本人经常因为权衡一个方案而陷入冥想状态,在千万级数据下,最终的程序执行速度基本控制在0.00x秒,是作者本人比较满意的。

漏洞描述:

xiuno后台在写入配置文件时出现漏洞,导致代码执行

1. 系统配置并非存放在数据库中,而是存放在conf.php中;
2. 使用数组的方法存放;
3. 有转义: ‘ =>\’ ;
4. ‘\’没有转义;
5. 插入\’会被转义为\\’,php中表示一个\,而单引号就逃脱了转义,因此可以闭合前面的数组;
6. 该漏洞在后台管理中多次出现,包括灯鹭插件的设置中也出现。

在admin/control/conf_control.class.php的on_base方法中:

相关代码省略。。。。

直接写入到了文件中,由于过滤不严,我们用’即可绕过单引号过滤,达到闭合单引号的目的。

设置 -> 基本设置 -> 站点名称 加上 \’,)&&phpinfo();/* (其他地方应该也可以,没测试)

x01
这样就在conf/conf.php中写入了如下代码:

return array ( ...... // 唯一识别ID 'app_id' => 'bbs' , // 站点名称 'app_name' => 'Xiuno BBS\\' ,)&&phpinfo();/*',

形成了return array() && phpinfo();
通过使用&&达到执行命令的目地.
x02

修复方案:

如果要将配置放入到文件中的话,做好过滤措施