根据《中华人民共和国刑法》第二百八十五条:【非法侵入计算机信息系统罪】 违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。

声明:本文仅为本地搭建部署学习,如有雷同,纯属巧合!

 

 

老弟问我能不能做一个类似的小程序,我简单的看了一下,肯定是可以做的。

原理: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,低版本测试的漏洞,在最新版上被修复了。

 

大多数人只看到了小程序的界面,没人在意它是否安全。

 

我从抓包中的接口测试,到后台敏感信息泄漏,这段技术揭示了一个真相:“安全漏洞往往藏在细节里”

 

最后将发现的问题报告给腾讯应急响应中心,做一个合格的白帽子

 

 

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。