一次从Web站点到小程序的渗透测试经历

admin 2025年3月18日21:43:02一次从Web站点到小程序的渗透测试经历已关闭评论5 views字数 2511阅读8分22秒阅读模式
前言
某次项目上的一次从Web站点到小程序的渗透测试经历,写出来仅做思路分享。

一.Web渗透无果

开局拿到一个URL :https://diy.test.com/diy11,经典开局一个登录框:一次从Web站点到小程序的渗透测试经历

熊猫头看下js信息,发现处理的比较干净,没啥有效信息:

一次从Web站点到小程序的渗透测试经历

登录框处有滑块验证码,没法爆破账密。

那就先Fuzz目录看一下。

信息收集一波,我们得到该站点的域名或者接口如下:

https://diy.test.comhttps://diy.test.com/diy11https://diy.test.com/diy11/apihttps://diy.test.com/diy11/api/ex(最后这两条,是从登录接口https://diy.test.com/diy11/api/ex/login/得到的)

这里我们采用这样的策略进行Fuzz:

先使用OneScan对每级接口,使用常见目录进行简单的Fuzz,再考虑使用dirseach进行较为全面的Fuzz。

经过一番尝试。

使用OneScan,这里在/diy11/api接口下扫出来了actuator,可惜没有敏感的东西。

除此之外,就啥也没扫出来了。

一次从Web站点到小程序的渗透测试经历

OneScan没扫出来,那就只能dirsearch 启动了,全方位扫扫试下。

一次从Web站点到小程序的渗透测试经历

然后趁着扫目录的功夫,看下能否根据系统关键信息,找到历史Nday。

但这系统感觉像是三方公司开发的,比较小众,直接搜啥信息也搜不到。

所以决定先根据关键信息搜一下诸如开发公司等的信息。

但是可惜,根据Title,图标icon等指纹,Fofa也是啥也没找到。

一次从Web站点到小程序的渗透测试经历

Fofa没搜到,不甘心用鹰图等其他空间测绘平台搜,也没搜到。

这时候回头看目录扫描结果,发现从根目录到最深的/ex接口,什么有效信息都没扫出来:

一次从Web站点到小程序的渗透测试经历

脚本小子挠头,再回头看看细节吧。

一次从Web站点到小程序的渗透测试经历

二.小程序峰回路转
难道是公司自己开发的系统?不甘心又点开熊猫头,看看有无遗漏的信息。

看着看着,最终发现在域名一栏,发现有一个带着weixin前缀的域名:

weixin.test.com
一次从Web站点到小程序的渗透测试经历

这样一下子就想到,该Web站点,会不会存在小程序呢?

根据Web站点的标题:易*,在微信搜小程序。

OK啊,能搜到,而且图标、所属公司等一毛一样。

一次从Web站点到小程序的渗透测试经历

    如此,多了一个攻击面,遂转而测试小程序。

进去就是一阵点点点,把所有功能点了一遍后,查看数据包,发现一个很奇怪的数据包:

POST /diy11/api/ex/login/wx/addVisitor HTTP/1.1Host: diy11.test.comContent-Length81Xweb_xhr1User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like GeckoChrome/122.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090c11)XWEB/11581Connection: close{"userName":"test","phone":"13311111111","openId":"oZZ_I6x0jlJQXrLqnA5RiMoexrjo"}

    为什么说奇怪呢,因为他这里随便填写手机号和用户名,都能得到Token:

一次从Web站点到小程序的渗透测试经历

    妙就妙在。

这个小程序大多数地方,都存在鉴权,需要登录系统账号才能使用。

    但是呢。他又给了一个可以随便获取Token的接口。

迷惑操作……

一次从Web站点到小程序的渗透测试经历

    接着就是收获时刻,找到一个如下所示的数据包:

GET /diy11/api/mdm/mqr/report/supplier/list?pageNum=1&pageSize=20&materialSap=&baseCode=&addedBy=S003498&status=0&_t=1739499677227 HTTP/1.1Host: diy11.test.comAccept: application/json, text/plain, */*Accept-Language: zh-CNX-div-Header: {"id":"S003498","timestamp":1739499677228}User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF Connection: close

    拼接得到的Token:

Authorization: eyJ0eXAiOiJKV1QiLCJhbGci***.eyJ0b2tlbiI6Im9aWl9JNngwamxKUVhyTHFuQTVSaU1vZXhyam8iLCJleHAiOjE3Mzk1MDI***._zjIaebbFnRiZRDrIA-qu6O8HmMT4HjPSZXp066uA1U
这里注意,像JWT这种认证方式,在请求头一般都是:Authorization: Token或者Authorization: Bear Token的形式

    该请求包可能存在越权的地方在参数的addedBy=S003498,以及请求头的X-diy-Header: {"id":"S003498","timestamp":1739499677228}。

分别修改两处值测试一下,就发现越权点在X-diy-Header处。

返回信息中,含有供货公司信息,出货报告、合同等的链接:

一次从Web站点到小程序的渗透测试经历

    并且没有鉴权,可以直接访问:

一次从Web站点到小程序的渗透测试经历

    也就是说,我们可以Fuzz id参数,获得大量的供应商信息,出货报告、合同等。

传统功夫,点到为止!

其他七七八八的就不写了,主要是思路分享。

END

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月18日21:43:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一次从Web站点到小程序的渗透测试经历https://cn-sec.com/archives/3836441.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.