科威盒子导航系统代码审计过程总结

原创 2018年04月15日 11:35:31

前言
还是要从bugku上的一道实战题目说起,其实事后才发现,自己在错误的道路上越走越远,故有此文。


0x01 官方思路
题目地址:http://120.24.86.145:9006
一波目录扫描,发现1.zip文件,果断下载解压,是网站源码。其中有包含flag的文件名flag-asd.txt,访问之即得答案。
0x02 漏洞搜集
事实上大多数人都会从这里开始,首先搜集科威盒子相关漏洞信息,主要有以下两个:

  1. SQL注入漏洞
  2. 任意文件下载漏洞
    通过注入漏洞可以顺利得到后台账号密码,这里就不多说了,admin/a1234567直接登录后台。

0x03 审计之旅
因为代码就功能层逻辑结构比较简单,先是通篇扫了一下,主要发现几个鸡肋漏洞。

  1. 任意tpl文件上传覆盖
    漏洞发生在admin/skin_edit.php页面。
<?php
require_once 'inc.php';

$type = !empty( $_GET['type'] ) ? trim( $_GET['type'] ) : "";
$name = !empty( $_GET['name'] ) ? trim( $_GET['name'] ) : "";
...
} elseif( $type == "ok" )
{
    $path = ROOT.'/templates/'.$name.'/'.$_GET['aa'].'.tpl';
    file_put_contents( $path ,$_POST['content']);
    $templates->assign("msg","修改模板成功!");
    $templates->display( templates ( 'msg.tpl' ) );
}
?>

type、name和aa变量均可控,因此可以修改任意模版文件。
这里存在一个小tips,由于路径可控,可以利用windows下的命名规则绕过上传,比如上传aa=1.php:,windows下会生成1.php但是却无法写入文件,但是P牛写过在IIS下,可以利用<<<向写入内容。

  1. 科威框架解析
    科威也是封装了底层框架,就在快要放弃之际,偶然发现在templates_c目录下发现大量php文件,并且里面内容为模板信息。再次点燃希望。

科威每次都是使用类似MVC的模式进行加载,每次都会读取tpl模版文件处理后并展示,整个逻辑框架如下:
1.png

我先是测试了直接向tpl文件中写入php代码,但它在编译时会过滤<?php、?>等敏感字符,就js加载php也被过滤掉了,这里尝试后未解。
0x03 峰回路转
在审计的过程中,include/smarty/Smarty_Compiler.class.php编译文件中的模版tags处理函数引起了我的兴趣,主要代码如下:

function _compile_tag($template_tag)
{
 ....
    switch ($tag_command) {
        case 'include':
            return $this->_compile_include_tag($tag_args);

        case 'include_php':
            return $this->_compile_include_php_tag($tag_args);
 ...

主要意思是如果模板文件中出现include_php标签,则会调用文件包含函数。后面就不做过多分析,就是将任意文件进行include()包含,从而引发文件包含漏洞。
0x04 漏洞利用
首先上传一个test.tpl文件,注意文件路径,这里以/admin/为例,内容为php执行代码:

<?php phpinfo();?>

3.png

再修改/admin/templates/index.tpl文件为,构造include_php标签为:

<!--Kw[include_php file="test.tpl"]-->

4.png

访问/admin/index.php,即加载恶意执行代码
5.png

0x05 后记
也没有必要提供什么修复方案了,反正科威好像早就关门了。主要是学习下审计,锻炼下能力吧。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vspiders/article/details/79947816

科威网址导航系统3.0

  • 2009年11月02日 12:21
  • 842KB
  • 下载

代码审计的思路

seay 代码审计中总结: 常见的代码审计思路有以下四种:  1) 根据敏感关键字回溯参数传递过程 2) 查找可控变量,正向追踪变量传递过程 3) 寻找敏感功能点,通读功能点代码 4) ...
  • duangduang2020
  • duangduang2020
  • 2016-01-19 17:50:02
  • 439

科威盒子导航系统代码审计过程总结

前言还是要从bugku上的一道实战题目说起,其实事后才发现,自己在错误的道路上越走越远,故有此文。0x01 官方思路题目地址:http://120.24.86.145:9006一波目录扫描,发现1.z...
  • vspiders
  • vspiders
  • 2018-04-15 11:35:31
  • 202

小白的代码审计之路(一)

此文由猪八戒SRC,代码审计小鲜肉“呆呆的骗子大婶”倾情奉献~欢迎勾搭! 更多内容请访问i春秋查看 一、导语 从乙方转为做甲方后,安全将不再仅仅是利用工具、扫描等...
  • wodafa
  • wodafa
  • 2017-03-16 09:45:37
  • 1214

代码审计:审计思路之实例解说全文通读

在我的新书《代码审计:企业级web代码安全架构》发布之际,借用这篇文章跟大家分享下代码审计的一些思路,目前该书已经可以在淘宝和京东等网站购买。 本文章首发在freebuf。   根据敏感关键字来...
  • ru_li
  • ru_li
  • 2016-05-03 14:58:58
  • 2213

代码审计方法与准备

代码审计方法与准备
  • XavierDarkness
  • XavierDarkness
  • 2017-09-19 15:11:05
  • 1362

科威PLC编程软件 黄石科威PLC软件

  • 2016年04月30日 10:42
  • 3.05MB
  • 下载

代码审计工具简单汇总

一:php工具 使用zend studio、Phpstorm等工具可以分析调试PHP程序,UE经过配置之后也可以调试执行PHP程序。 二:seay、RIPS、Findbugs、Fortif...
  • duangduang2020
  • duangduang2020
  • 2016-01-18 19:21:22
  • 951

PHP代码审计-常见危险函数

PHP代码执行函数eval & assert & preg_replace 包含函数:require、include、require_once、include_once 命令执行函数:exec、sys...
  • XavierDarkness
  • XavierDarkness
  • 2017-09-20 15:53:17
  • 256

科威PLC资料(编程手册)

  • 2009年07月19日 13:54
  • 214KB
  • 下载
收藏助手
不良信息举报
您举报文章:科威盒子导航系统代码审计过程总结
举报原因:
原因补充:

(最多只允许输入30个字)