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

打印 上一主题 下一主题

主题 580|帖子 580|积分 1740

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

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



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

1.小程序的发现

在一样平常生活中,利用微信自带的小程序搜索功能可以轻松地找到我们必要的小程序。微信会根据用户输入的关键字,依次搜索小程序的名称、简介以及开发者信息,并返回与关键字匹配度较高的相关小程序。下图展示了用户搜索含有“微信”关键字的小程序时客户端返回的搜索结果:

在渗透测试工作中,单独通过逐个搜索的方式来探求目标小程序显然效率太低,且无法搜集到所有相关的小程序。因此,我们必要一种更为方便、高效的方法来获取小程序搜索结果。
一种大概的解决方案是实验修改微信搜索请求的数据包,以便一次性返回大量的搜索结果,或者多次获取充足数量的搜索结果。当然,这必要我们通过抓包工具捕获到相关的网络数据包。下图是抓取到的数据包的简化版本,已删除其他非关键参数。

可以看到这是一个向“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程序源码如下:
  1. #!/usr/bin/env python
  2. # -*- encoding: utf-8 -*-
  3. import requests
  4. import json
  5. def Get_Apps(query, number, cookie):
  6.     headers = {
  7.         "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"
  8.     }
  9.     url = "https://mp.weixin.qq.com/wxa-cgi/innersearch/subsearch"
  10.     params = {
  11.         "query": query,
  12.         "cookie": cookie,
  13.         "subsys_type": 1,
  14.         "offset_buf": json.dumps({
  15.             "page_param": [
  16.                 {
  17.                     "subsys_type": 1,
  18.                     "server_offset": 0,
  19.                     "server_limit": int(number) + 30,
  20.                     "index_step": number,
  21.                     "index_offset": 0
  22.                 }
  23.             ],
  24.             "client_offset": 0,
  25.             "client_limit": int(number)
  26.         })
  27.     }
  28.     response = requests.post(url=url, params=params, headers=headers).json()
  29.     App_Id_List = []
  30.     App_Name_List = []
  31.     try:
  32.         App_Items = response['respBody']['items']
  33.         for App_Item in App_Items:
  34.             App_Id = App_Item['appid']
  35.             App_Name = App_Item['nickName']
  36.             App_Id_List.append(App_Id)
  37.             App_Name_List.append(App_Name)
  38.     except KeyError:
  39.         print("无法获取小程序信息,请检查参数是否正确。")
  40.         return [], []
  41.     return App_Id_List, App_Name_List
  42. if __name__ == '__main__':
  43.     query = input("请输入要搜索的微信小程序名称: ")
  44.     number = input("请输入要返回的小程序数量: ")
  45.     cookie = input("请输入你获取到的Cookie信息: ")
  46.     App_Id_List, App_Name_List = Get_Apps(query, number, cookie)
  47.     if App_Id_List and App_Name_List:
  48.         print("返回的小程序名: {}".format(",".join(App_Name_List)))
  49.         print("返回的小程序ID: {}".format(",".join(App_Id_List)))
  50.     else:
  51.         print("信息获取失败,请检查!")
复制代码
2.获取小程序源码


打开文件夹

返回上一级目录

这些wx开头的就是小程序文件

获取其小程序源码

3.反编译小程序
反编译必要工具:unveilr  (工具链接会放在文末)
将unveilr 解压,然后在当前目录打开cmd

复制小程序路径,运行反编译文件

乐成会在刚才的小程序文件夹目录下生成一个__APP__的文件夹,这内里的就是小程序的源码

3、审查源代码

这里必要用到微信开发者工具(直接百度搜索微信开发者工具,选择对应版本就可以)

安装好之后,打开微信开发者工具,选择小程序——>导入


选择刚才的__APP__文件夹


导入时间,选择不利用云服务, AppID 自动获取,项目名称自己起一个

我这里是之前已经打开过了,以是会提示
点击确定,就可以举行调试了
现在就可以审查源代码了
4、渗透测试

一般我们会看app.js文件和app.json文件,js文件包含小程序调用的JS文件。 json文件包含小程序的路径,一般可以用来测试未授权访问。

到这里前期的准备工作就算竣事了,大家就可以利用反编译出来的源码举行渗透了,实在就雷同web渗透过程中,找前端源码一样。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表