Unc1e
Unc1e
OneThink前台注入分析

本文首发于先知社区OneThink前台注入分析
谢绝未授权转载
OneThink前台注入进后台分析
在某次授权的渗透过程中,我遇到了OneThink,那么经过一番审计和尝试,最终实现了OneThink < 1.1.141212时的任意进后台,由于之前没有系统审计过tp3系列的注入问题,所以这里也是简单回顾一下对对onethink的前台注入问题审计的过程,各位大佬轻喷~
开始审计:以OneThink 1.0.131218为例,本地搭建起one.think

图片.png

打开源码文件夹,好家伙,踏破铁鞋无觅处,得来全不费工夫——thinkphp3.2.3的框架,那岂不是,
图片.png

咱们一起回顾下它sql注入时参数的传递过程

上边简单进行了数组合并,再跟进find(), 将$option变量传入$this->db对象的select函数,

进入select函数,关注到它的里面使用到了buildSelectSql方法

图片.png

$options变量的学问就在其中,

这个parseSql里面,起到注入作用,最重要的就是parseWhere方法

图片.png
跟进parseWhere方法,425行将$where拆成$key$val,在后面几个地方传入parseWhereItem()
图片.png
parseKey是一个取值方法,没实际意义
图片.png

下面就是注入发生的地方了,好好分析一下这个parseWhereItem()函数
图片.png

首先,$val来源于上面的$where变量,是咱们可控的;
其次,这里正则判断有大问题,没有使用^ $来定界,导致xxINxx这种形式也能通过判断,val[0]IN后面实际可构造出任意内容,后续进行了拼接,导致sql注入。

那么确定存在注入问题,这里咱们看看前台登录地址处,具体怎么注入

注入分析

payload1-in注入

图片.png

实际执行SQL语句

payload2-exp注入

图片.png

实际执行SQL语句

payload3-between注入

图片.png

ok,现在有了注入,我们就能使用联合查询,来绕过后台用户登录,实现”万能密码”的效果。但在这之前,还需要分析完整的登录逻辑。

登录逻辑分析

使用FileMonitor工具,得到后台登录处的SQL语句

而数据表onethink_ucenter_member的结构如下图,有11列,那么联合注入就需要构造11个参数union select 1,2,3,4,...,11

图片.png

接着发现登录处的链接为http://one.think/index.php?s=/admin/public/login.html,跟入源码
图片.png

跟进UcenterMemberModel类,进入login函数

继续跟进,发现登录的关键逻辑

整理知道:一个用户要成功登录,得过两道坎:

  1. 用户名验证。即要通过$username的验证,并使得查询出的$user['status']大于零,所以关注$user = $this->where($map)->find()这一条,跟进where()方法,追到\ThinkPHP文件夹下了,这是注入点。
  2. 密码验证。即还要使得think_ucenter_md5($password, UC_AUTH_KEY)等于查询出的$user['password']$password其实就是咱们登陆时输入的密码,我们跟进think_ucenter_md5

得出结论:如果输入值为空值,那么加密函数返回的结果也为空值——舒服了,根本不必用到hash计算嘛!所以密码验证这一步也搞定了,只需要让POST上去的密码为空即可!

图片.png

图片.png

网络不是不法之地。虽然已经可以进后台了,但依然不知道管理员的账号密码,有一些登录界面没有验证码,所以这里再提供一种对接SQLMAP的思路(非改tamper),供大家参考

对接sqlmap:Flask参数转发

首先注入点位置如下图inejct.png

那么经过这个转发脚本,原本复杂的参数被简化,你只需要在本地对http://127.0.0.1:5000/?id=1跑sqlmap即可。原理上其实与写tamper脚本相同,都是让sqlmap能够识别出“简化过的”注入参数。

REV.png

reference

首页      WEB安全      OneThink前台注入分析

发表评论

textsms
account_circle
email

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

  • Unc1e博主

    其实后台还有个写shell的点,只不过大哥不让我发出来罢了🐕

    2月前

Unc1e

OneThink前台注入分析
本文首发于先知社区OneThink前台注入分析 谢绝未授权转载 OneThink前台注入进后台分析 在某次授权的渗透过程中,我遇到了OneThink,那么经过一番审计和尝试,最终实现了OneThink < 1.1…
扫描二维码继续阅读
2020-08-08
%d 博主赞过: