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

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

附上源码#

链接: 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

 

原文地址:https://www.cnblogs.com/-qing-/p/10693139.html