根据《中华人民共和国刑法》第二百八十五条:【非法侵入计算机信息系统罪】 违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。
声明:本文仅为本地搭建部署学习,如有雷同,纯属巧合!


老弟问我能不能做一个类似的小程序,我简单的看了一下,肯定是可以做的。
原理:TB卖游戏资源,TB不允许出现游戏资源的名字,在WX小程序做一个选购系统,用户选购完会产生一个取件码,TB那边根据用户提供的取件码,给用户对应的游戏资源。
后台大概信息就是:
1.分类信息
2.商品信息
3.轮播图这些信息。
4.用户信息
前台需要的信息大概就是:
1.分类信息
2.商品信息
3.轮播信息
4.生成订单
5.生成取件码
6.用户唯一标识,使用微信openid做,可以无感获取。
如果开发的话,其实并不难。
我习惯性的对这个小程序进行了分析,抓包看了下小程序的接口信息。

当我看到”/addons/” 就很熟悉,很像fastadmin这套系统,fzdc 这个也有点印象。我直接去官网看看有没有fzdc这个插件。


我说怎么有点熟悉呢,原来我买过这个插件的授权。哈哈哈
那这个小程序就是用这套插件改的,所以我能测试的东西很多。
先测试抓包看到的这些接口试试:




这真是运气爆棚了,随手的测试,就直接爆出了数据库的信息,不知道数据库的端口有没有开放。
直接telnet试试

数据库端口是开放的,mysql的版本是5.7.44
再来分析下报错的原因以及修复方法:
/*
* 商品详情
*/
public function goodsDetail()
{
$goods_id = $this->request->post(“goods_id”); //商品id
$data = Goods::where([“id” => $goods_id, “state” => 1])->field(“id,title,images,type,json,price,switch,store_ids”)->find();
$data[‘image’] = cdnurl($data[‘image’], true);
if (empty($data)) {
$this->error(“数据不存在”);
}
这个goodsDetail方法的代码,考虑的不够严谨,导致崩溃爆出数据库的信息。
$goods_id = $this->request->post(“goods_id”); //商品id
这句取商品ID作为参数,没有考虑没传参数的情况,也没有限制接口请求方式。
报错的原因就是这里没有判断是否有goods_id的参数
接口的修复方法:
$goods_id = $this->request->post(“goods_id”); //商品id
if (empty($goods_id)) { //只要这里做这个参数的检查,就修复了这个问题
return json([‘code’ => 402, ‘msg’ => ‘参数不能为空!’]);
}
报错的修复方法:
可能由于部署系统的时候开启.env中的debug=true,在正式上线后并没有将debug改为false,所以导致遇到错误输出。
现在有数据库了,是否可以再利用数据库的信息继续往下探索呢?
注意:非法入侵系统,是违法犯罪,本文是本地部署的演示环境,如有雷同,纯属巧合!

登录数据库,发现admin表有两个账号,但是不知道后台登录地址,怎么办?因为fastadmin默认是随机产生后台地址的。
fastadmin这套系统,有一个admin_log表,用于记录管理的操作日志。

从日志中可以看出,后台登录地址是:main.php

经过对两个账号的弱口令测试,终于是进到了后台

拿到后台之后,其实还可以继续探索的,当然我已经想尽了方法,最终只停留在后台,并没有找到getshell的点,因为这是最新版fastadmin,低版本测试的漏洞,在最新版上被修复了。
大多数人只看到了小程序的界面,没人在意它是否安全。
我从抓包中的接口测试,到后台敏感信息泄漏,这段技术揭示了一个真相:“安全漏洞往往藏在细节里”
最后将发现的问题报告给腾讯应急响应中心,做一个合格的白帽子


评论(0)