1 - 安装 reverse-sourcemap
需要配置好npm环境 (runoob教程)
使用命令(需要代理) npm install --global reverse-sourcemap
进行安装
2 - 寻找xxx.js.map
如果有sourcemap的话,在js最后会有注释:
//# sourceMappingURL=xxxxxxx.js.map
比如这里我要下载MarketSearch.js.map
(MarketSearch.js
是与站点同名的js,应该是主要的js文件)
-
在开发者工具中搜索
.js.map
(位置1) -
找到
MarketSearch.js.map
所在的js (位置2) -
找到对应的链
URL
(位置3)
-
一般来说,静态文件会挂载在当前域名下,但不排除其他站点挂载的情况,所以需要找到对应的
URL
,比如这里就不同站 -
这里
MarketSearch.js
的URL
记为xxx.xxx/mulu/MarketSearch.js
3 - 下载xxx.js.map并获取所有webpack打包文件
curl -O http://xxx.xxx/mulu/MarketSearch.js.map
http://xxx.xxx/mulu/MarketSearch.js.map
下载MarketSearch.js.map
reverse-sourcemap --output-dir ./MarketSearch MarketSearch.js.map
即可获取所有webpack打包文件4 - 使用IDE/其他编辑器寻找接口
ctrl+shift+f
4-1 搜索接口
url
,这种情况需要我们可以访问到某些接口,比如非SSO的登录4-1-1 借鉴先验请求的url
xxx.xxx
存在登录接口,通过尝试,发现会调用/MarketSearch/api/login
接口/MarketSearch/api/login
,/api/login
,/login
/api/login
的时候,就可以找到接口对应的代码4-1-2 直接搜索
4-1-2-1 根据请求方法搜索接口
get/post
方法进行访问的,所以这是一个很好的关键词post
get
4-1-2-1 根据猜测命名规则搜索接口
admin
,superadmin
,manage
之类的关键词比较常见5 - 寻找动态定义的接口
MarketSearch/api/login
,上面我们通过搜索,只发现了/MarketSearch/api/user/login
接口,这里介绍一下如何寻找该接口。login
,可以看到在index.ts
中对登录进行了定义index.ts
,可以看到这里定义了用到的视图,继续跟踪Login
视图,命名为Login_1
,路径在./Login
Login.tsx
,可以看到根据vse_client_1.defaultMainView.Login
视图,创建了对应的元素,vse_client_1
定义为vse-client
vse-client
目录,寻找defaultMainView
视图的定义Login
视图,可以看到api_1
路径在./api
,且Login
视图定义了游客登录
和用户登录
两个登录方式,这里跟踪用户登录
登录方法用户登录
使用了LoginModal
模态框LoginModal
模态框,可以看到登录的行为通过yield api_1.api.login(input)
来实现api_1 = ./api
,input
则是ItemKey
生成的表单中用户填写的数据(username & password
)api_1.api.login
-
key是键值,比如这里调用的是
api.login
,则key === login
-
对于每一个
vse_share_1.Api
定义的接口 -
-
如果传入的
key
与其中一个接口相同,且不为constructor
(通过prototype
原型读取,所以需要排除构造函数),则向下继续 -
login
传入__awaiter_
-
通过
axios_1.default.post(`/${NAMESPACE}/${vse_share_1.ShareConfig.apiPrefix}/${key}`, args)
发起请求 -
跟踪
vse-share
,寻找ShareConfig
-
-
查看命名空间的定义
-
-
跟踪
../share
-
-
${NAMESPACE} === MarketSearch
-
${vse_share_1.ShareConfig.apiPrefix} === api

-
${key} === login
-
args === input
,即,由ItemKey
生成的json{username:"xxx",password:"xxx"}
api
名称,动态生成url
路径,避免了静态存储api
路径,使得寻找api
接口需要花费的精力大大提升。(web安全狗流泪)福利视频
原文始发于微信公众号(迪哥讲事):发现Webpack中泄露的api
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论