• 对某黑产微盘交易系统的代码审计


    对某黑产微盘交易系统的漏洞挖掘

    附上源码#

    链接: https://pan.baidu.com/s/1KDISzDnOFlThR9CD4AjQJQ 提取码: 6rsw

    安装好是这样的:

    登录后台:

    http://192.168.190.147/admin/index/index.html

    admin   2807016..

    进后台 添加了一个用户名为123 密码为test1234的用户 方便我们测试。

    这次从功能测试到审计

    0x01 注入漏洞

    随便点击一个进去 测试后发现这个pid参数存在注入

    http://192.168.190.147/index/goods/goods/pid/23'/token/6f2a0b00bceb07ed7a327f392d7f0755.html

    这里用的thinkphp框架的路由 入口文件+模块/控制器/操作

    所以此处注入对应的文件在 index模块(aplication应用目录)下的goods控制器的goods操作(函数)

    这里因为我们是功能测试出来pid这个变量貌似有注入,所以我们关注这个变量走向即可

     

    Input方法是接收这个参数变量 不多讲

    可以看到在接收了PID变量后带入了GetProData函数,看看这个函数怎么定义的

    GetProData函数中的235行开始到237行进行了数据库查询操作,可以看到变量pid237直接带入where函数作为pi.pid参数的值进行查询,没有任何过滤导致注入,直到这里我们才确定是真的有注入

     关于tp5自带的数据库查询方法函数大佬们可以多看看手册即可

    0x02 后台登录绕过漏洞

    后台地址:http://192.168.190.147/admin/index/index.html

     

    我们先登录正常管理账号。

     

     

     

    抓包分析

     

     

     

    发现有两个请求的包

     

    第一个:

     

    Forward第一个后,抓取到第二个:

    测试发现第一个包发送后第二个包中的cookie里面有个denglu 里面带着有个参数uid,很有可能是用户的标号,极有可能后台通过第二个包判断登录权限,我们重新打开一个没有登录的页面

    denglu=think%3A%7B%22otype%22%3A%223%22%2C%22userid%22%3A%221%22%2C%22username%22%3A%22admin%22%2C%22token%22%3A%223c341b110c44ad9e7da4160e4f865b63%22%7D

     

    我们带上那个正常包的cookie字段中的denglu这个参数

    登录成功,但是不确定是否有漏洞,因为这里的uidusername可以伪造,但是有个token参数,如果是随机生成那么是不存在越权,所以我们继续看源码确定漏洞。


    找到admin下的login控制器

    往下找 可以看到这处

    这里的token只是对一个字符串”nimashabi”进行md5加密,也就说是固定的,所以我们cookie加那个固定的denglu参数直接可以越权,存在漏洞

     

    0x03 后台Getshell

    Getshell部分我们重点关心上传点和写入文件之类的功能。后台发现此处有个上传点,这里是修改前台相关信息和图标的。

     

    我们查看元素,看看接收文件上传的php在什么位置

    /admin/setup/editconf.html

     

    Admin模块下的setup控制器的editconf函数,找到对应位置

    可以看到这里没有任何类型判断 直接上传

     

    我们来测试一下,上传一个一句话后访问前台

    0x04前台越权改密码

     

    我们首先注册两个用于来测试,一个账号名为”客户”,一个为”黑阔”

    我们来前台修改密码,尝试csrf漏洞

     

     

    先登录”客户”账号,登录成功后点击修改密码,抓包

     

    来到这里修改

     

    因为格式问题 填写账号手机号的时候先改成手机号的长度,抓包

    这里手机号就代表用户名,我们这里登录的是手机号为1”客户”帐号,尝试把手机号改成2(另一个名为“黑阔”账号的手机号就为2),新密码改成111111,关于手机验证码在真实环境中爆破即可

     

    我们来看下源码,确认漏洞。

     

    因为刚才那个修改的密码的包请求的是这个html,我们看看这个模块里表单提交的地址是什么

    找到了修改密码操作的位置 login/repass

    关键代码 首先是接收post过来的值 里面包含我们手机号,先带入数据库查询手机号是否存在

    其次对验证码校验,这个我们可以爆破,最后直接修改密码,存在漏洞。

    0x05 前台getshell

    因为前面0x02可以绕过登录,只需要cookie加上那个管理的信息就可以,加上0x02可以直接上传 ,我们直接构造管理员的上传包可以直接getshell

     

  • 相关阅读:
    php函数
    php循环语句(二)
    php循环语句(一)
    php魔术常量
    php超级全局变量
    php数组函数
    php数组
    php条件语句(二)
    php条件语句(一)
    shell 中的判断
  • 原文地址:https://www.cnblogs.com/-qing-/p/10693139.html
Copyright © 2020-2023  润新知