众测SRC | 如何通过js搜索未授权接口
本文由
创作,已纳入「FreeBuf原创奖励计划」,未授权禁止转载
一、前言
之前在挖某SRC,和carrypan师傅交流了一番,发现他在js接口里面收获颇多,找到很多敏感信息与未授权访问,本着学习的心态我开始研究如何高效地寻找目标网站js中存在的接口
贴一张SRC的收获图片:
二、思路历程
接口路径收集可能很多人会先想到URLFinder,这个工具确实不错
虽然也能自定义规则,但是没有详细参考文档。于是我就选择了资产灯塔ARL里面的插件wih
使用文档参考:https://tophanttechnology.github.io/ARL-doc/function_desc/web_info_hunter/
这里为了单独使用wih功能,直接从docker启动版本里面把wih文件拉出来
wih自带的规则文件wih_rules.yml,其中有一条内置规则为匹配路径,默认是不开启该规则的
修改路径规则的enable为true,关闭其他剩下的规则
根据wih命令,-a为自动保存,-c和-P调整并发数
可能是为了适配ARL,所有是按域名来保存的,这样对我们来说很不友好,不方便查看
好在wih还有一个json格式导出的功能,但是只是打印结果,不是输出json,于是就要写一个python脚本来协助处理一下数据
主要处理的步骤如下:
1、读取wih的json结果,匹配路径等信息
2、拼接域名和路径并请求,返回状态码和长度(后来我注释掉了这段功能代码,因为请求很可能会被封禁,不利于后续的测试)
3、输出所有结果,并整合进一个html页面中方便查看
代码如下,需要将wih和wih_rules.yml放在同一目录下面:
import argparse import subprocess import json import re import requests import time from concurrent.futures import ThreadPoolExecutor import os from datetime import datetime import glob # 在 run_command 函数中保存输出和链接 def run_command(target): command = f"./wih -t {target} -r wih_rules2.yml -J -c 10 -P 10" result = subprocess.getoutput(command) # 使用正则表达式提取JSON结果 json_matches = re.findall(r'\{.*\}', result, re.DOTALL) # 使用正则表达式提取JSON if json_matches: for json_match in json_matches: try: json_data = json.loads(json_match) # 对JSON字符串进行处理 # 例如,打印JSON中的特定字段 # print(json_data) output, check_links = get_size(json_data) # 保存输出 target_name = target.replace('https://', '').replace('/', '') # 处理目标域名,去掉可能包含的路径信息 output_filename = f"result/{target_name}_outpu
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
文章目录