数据人与超自然意识 发表于 2024-7-28 23:14:41

网络安全----小程序渗透测试反编译审计漏洞

一、什么是反编译审计漏洞

微信小程序反编译渗透测试是一种针对微信小程序的安全测试方法,是在通过对小程序源代码的反编译和分析,发现潜伏的安全漏洞,并对其举行渗透测试以验证其安全性的一种方法。
二、测试流程及其步骤



[*]反编译小程序:利用适当的工具对微信小程序举行反编译,将其源代码还原成可读的形式,以便举行后续分析和测试。
[*]源代码审查:仔细审查小程序的源代码,查找潜伏的安全漏洞,例如代码中的XSS漏洞、未经授权的访问点、不安全的数据处理等。
[*]逻辑分析:分析小程序的业务逻辑,了解其工作原理和数据活动,找出大概存在的逻辑漏洞和不当授权等问题。
[*]渗透测试:基于发现的漏洞和问题,对微信小程序举行渗透测试,实验利用这些漏洞举行攻击,例如实验执行XSS攻击、SQL注入、CSRF攻击等,以验证漏洞的存在性和影响水平。
 
三、小程序渗透测试详细步骤

1.小程序的发现

在一样平常生活中,利用微信自带的小程序搜索功能可以轻松地找到我们必要的小程序。微信会根据用户输入的关键字,依次搜索小程序的名称、简介以及开发者信息,并返回与关键字匹配度较高的相关小程序。下图展示了用户搜索含有“微信”关键字的小程序时客户端返回的搜索结果:
https://img-blog.csdnimg.cn/direct/d0b6b8009721484fa92f40c3a0952a6c.png
在渗透测试工作中,单独通过逐个搜索的方式来探求目标小程序显然效率太低,且无法搜集到所有相关的小程序。因此,我们必要一种更为方便、高效的方法来获取小程序搜索结果。
一种大概的解决方案是实验修改微信搜索请求的数据包,以便一次性返回大量的搜索结果,或者多次获取充足数量的搜索结果。当然,这必要我们通过抓包工具捕获到相关的网络数据包。下图是抓取到的数据包的简化版本,已删除其他非关键参数。https://img-blog.csdnimg.cn/direct/780b6954b78c4a94bc363db18d152939.png
可以看到这是一个向“https://mp.weixin.qq.com/wxa-cgi/innersearch/subsearch” POST数据的请求包,POST的内容中含有“query”、“cookie”、“subsys_type”、“offset_buf”这四个参数。“query”内容为用户搜索的内容,可以为任意值;“cookie”参数是当前微名誉户的校验信息,具有一定的有效期,但能保持在很长一段时间内不会过期;“subsys_type”则为一个固定值,恒即是“1”;“offset_buf”参数较为关键,控制详细搜索多少个小程序、返回多少小程序信息。我来带大家分析一下“offset_buf”参数为什么我认为比较关键:参数内容是一串JSON数据,我们可以把他拆分成“server”、“index”、“client”三组来分析。第一组“server_offset”表现服务器从第几个小程序中开始搜索,我们将参数保持不变为“0”即可;“server_limit”表现服务器最多查询多少个小程序,在普通用户的搜索中恒为“120”,这也就表明了为什么我们在搜索一些小程序关键字时总是搜索不全,并不是没有更多的相关小程序了,而是服务器不会继承搜索了。第二组“index_step”表现每一次查询多少个值,这个值肯定是越大越好,以便于我们能一次查完;“index_offset”可以明白为用户目前已经查询了多少个小程序,我们将他设置为恒为“0”即可。第三组“client_offset”表现微信客户端上已经显示了多少个微信小程序,我们无需去理会,也直接设置为恒为“0”即可,“client_offset”则是每次查询返回多少个小程序结果,这里我们设置为实际想查询的数量。

我们便可构造参数来编写自定义微信小程序搜索的脚本,其Python程序源码如下:
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
import requests
import json

def Get_Apps(query, number, cookie):
    headers = {
      "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.11(0x17000b21) NetType/WIFI Language/fr"
    }
    url = "https://mp.weixin.qq.com/wxa-cgi/innersearch/subsearch"
    params = {
      "query": query,
      "cookie": cookie,
      "subsys_type": 1,
      "offset_buf": json.dumps({
            "page_param": [
                {
                  "subsys_type": 1,
                  "server_offset": 0,
                  "server_limit": int(number) + 30,
                  "index_step": number,
                  "index_offset": 0
                }
            ],
            "client_offset": 0,
            "client_limit": int(number)
      })
    }

    response = requests.post(url=url, params=params, headers=headers).json()
    App_Id_List = []
    App_Name_List = []
    try:
      App_Items = response['respBody']['items']
      for App_Item in App_Items:
            App_Id = App_Item['appid']
            App_Name = App_Item['nickName']
            App_Id_List.append(App_Id)
            App_Name_List.append(App_Name)
    except KeyError:
      print("无法获取小程序信息,请检查参数是否正确。")
      return [], []

    return App_Id_List, App_Name_List

if __name__ == '__main__':
    query = input("请输入要搜索的微信小程序名称: ")
    number = input("请输入要返回的小程序数量: ")
    cookie = input("请输入你获取到的Cookie信息: ")

    App_Id_List, App_Name_List = Get_Apps(query, number, cookie)

    if App_Id_List and App_Name_List:
      print("返回的小程序名: {}".format(",".join(App_Name_List)))
      print("返回的小程序ID: {}".format(",".join(App_Id_List)))
    else:
      print("信息获取失败,请检查!")
2.获取小程序源码

https://img-blog.csdnimg.cn/direct/5853cb76d4d34c3e9529f42cb87ce1bf.png
打开文件夹
https://img-blog.csdnimg.cn/direct/4621ed6176394dc4996b6450616c0ba3.png
返回上一级目录
https://img-blog.csdnimg.cn/direct/6dc8d296fefc43b7ab99e1b55aee59b3.png
这些wx开头的就是小程序文件
https://img-blog.csdnimg.cn/direct/cb0b2403f0914dd0877d66512a84dd3b.png
获取其小程序源码
https://img-blog.csdnimg.cn/direct/1702e7a0736549ad8bbf9b1ed9b1ee16.png
3.反编译小程序
反编译必要工具:unveilr  (工具链接会放在文末)
将unveilr 解压,然后在当前目录打开cmd
https://img-blog.csdnimg.cn/direct/580bfc25c2a648229d57404043916e6d.png
复制小程序路径,运行反编译文件
https://img-blog.csdnimg.cn/direct/ee53d33b8ce5454c9b9accf8e425ac80.png
乐成会在刚才的小程序文件夹目录下生成一个__APP__的文件夹,这内里的就是小程序的源码
https://img-blog.csdnimg.cn/direct/38d47019239749688be46b5c2867fc80.png
3、审查源代码:

这里必要用到微信开发者工具(直接百度搜索微信开发者工具,选择对应版本就可以)
https://img-blog.csdnimg.cn/direct/15b8d5ffe7ed41c896f78ee8c74959fa.png
安装好之后,打开微信开发者工具,选择小程序——>导入
https://img-blog.csdnimg.cn/direct/84f522fe494949839aebed8b8a343ace.png

选择刚才的__APP__文件夹

https://img-blog.csdnimg.cn/direct/ded7cfd7fd234c90a471fae487753e35.png
导入时间,选择不利用云服务, AppID 自动获取,项目名称自己起一个
https://img-blog.csdnimg.cn/direct/74a64997f98b4ac6bfcfe08268bba722.png
我这里是之前已经打开过了,以是会提示
点击确定,就可以举行调试了
现在就可以审查源代码了
4、渗透测试:

一般我们会看app.js文件和app.json文件,js文件包含小程序调用的JS文件。 json文件包含小程序的路径,一般可以用来测试未授权访问。
https://img-blog.csdnimg.cn/direct/7e59b9540f7748048c7161cc67e4bade.png
到这里前期的准备工作就算竣事了,大家就可以利用反编译出来的源码举行渗透了,实在就雷同web渗透过程中,找前端源码一样。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 网络安全----小程序渗透测试反编译审计漏洞