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

2024-06-04 5216阅读

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

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

二、测试流程及其步骤

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

     

    三、小程序渗透测试详细步骤

    1.小程序的发现

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

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

    在渗透测试工作中,单独通过逐个搜索的方式来寻找目标小程序显然效率太低,且无法搜集到所有相关的小程序。因此,我们需要一种更为方便、高效的方法来获取小程序搜索结果。

    一种可能的解决方案是尝试修改微信搜索请求的数据包,以便一次性返回大量的搜索结果,或者多次获取足够数量的搜索结果。当然,这需要我们通过抓包工具捕获到相关的网络数据包。下图是抓取到的数据包的简化版本,已删除其他非关键参数。网络安全----小程序渗透测试反编译审计漏洞 第2张

    可以看到这是一个向“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.获取小程序源码

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

    打开文件夹

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

    返回上一级目录

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

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

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

    获取其小程序源码

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

    3.反编译小程序

    反编译需要工具:unveilr  (工具链接会放在文末)

    将unveilr 解压,然后在当前目录打开cmd

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

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

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

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

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

    3、审查源代码:

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

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

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

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

    选择刚才的__APP__文件夹

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

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

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

    我这里是之前已经打开过了,所以会提示

    点击确定,就可以进行调试了

    现在就可以审查源代码了

    4、渗透测试:

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

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

    到这里前期的准备工作就算结束了,大家就可以利用反编译出来的源码进行渗透了,其实就类似web渗透过程中,找前端源码一样。


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]