SRC挖掘之JS思路简单总结

JS思路简单总结

一、通过FindSomething找接口

BP跑接口

FS能找到接口之后,接下来:

  1. 首先是不能直接放到bp里面去,可以自己手动拼接几个试一试,比如特殊情况vue的前端是有资源定位符/#/之类的
  2. 然后就是在跑bp的时候遇到类似于这种/afterSales/v1/:afterSaleOrderId/repairpay里面的id值我们需要自己随机添加值进去,不然直接就是404页面
  3. 然后就看bp跑出来到底有什么,这个只是个大体的测试,筛选出我们具体要测试的站

image-20241217141639212

我们可以看到这里我们拼接参数的时候,返回包告诉我们有个参数为空

这里首先我们得想到的是我们需要构造参数并且传值,所以就可以试着POST和GET方法传参,POST一般是json格式

{
    "spuNo":123486748
}

GET请求

/api/products/spu_skus/v3?spuNo=12345646

这里我们可以去找一找有没有其他的接口是类似于这个接口传参的,

image-20241217141746525

通过这个接口的传参,我们就可以大致的试一试我们的接口的传参了

image-20241217141829568

可以看到这里我们就可以成功看到这个接口的作用了,虽然没什么大用,总体就是这个思路。

手动拼接接口

上面的bp批量跑接口有时候会看不清楚到底回显的是什么,比如他是回显的html里面的内容,bp回显304

一、这里需要注意的就是我们这里需要的是关键词的匹配能力

常见的与权限相关的关键词

  1. menu/list

  2. system/xxx

  3. manage

  4. xxxManager

  5. api/admin

  6. permission

首先访问此页面

image-20241217141926368

这里使用bp跑接口响应包没有东西,/system/dataMananger所以手动拼接访问

image-20241217142025461

这里就可以对发布内容上传修改,相当于拿到管理员权限。

二、就是对里面参数的处理

  1. 第一个就是需要去除我们的带有:,=的路径
  2. 将类似于Code,deptnum,permissionum的字段改为数字。

使用opnnutipleurl对路由接口测试

  1. 这里需要复制完整的url路径,批量测试
  2. 正确显示的一般就是我们的路由,接口会直接跳转到首页面

二、通过JS找接口参数

例子一

首页界面

image-20241004172846331

我们进入这个站会发现这里存在的是没有任何功能点的

我们抓取这个页面的包之后我们就开始分析一下

image-20241217142118784

image-20241217142233124

这里需要敏感一点,看到数值就去改一改

"ret":"-2"====>"ret":"0"

可以看到这里多了个功能,但是这个功能点会自动跳转另外的一个站,所以就直接不考虑

image-20241004215720813

其余的参数比较的复杂也就没啥深究的必要了,继续看其他的

/system/getPermissionConfigure

image-20241217142309470

这个就得十分注意我们的参数,这里是list

这里是为空的情况

  • 没有任何菜单对普通用户开放

  • 代表普通用户获取配置的菜单列表为空

  • 通过js找对应的菜单名

  • 第一种:根据请求的接口来找

    • /system/getPermissionConfigure
  • 第二种:搜权限相关的关键字

  • permission

    menu

image-20241004232020516

这里搜索关键词就会看到这里就会出现很多参数名

"list" : [ 
"home_page",
"msgpush_resource",
"msgpush_plan",
"url_whitelist_management",
"msgpush_plan_monthly_count",
"channel_message_user",
"msgpush_channel_follow",
"channel_message_user",
"operate_account_manage",
"account_renovation",
"channel_message_user",
"operate_account_manage",
"account_renovation",
"real_time_data_monitoring_list",
"push_data_analysis",
"plan_data_analysis_new",
"data_analysis",
"real_time_data_monitoring_statistics",
"shop_message_user",
"brand_shop_account",
"shop_rule_permission",
"shop_white_permission",
"shop_fans_permission",
"permission",
"channel_message_permission",
"account_white_permission",
"content_blacklist_management",
"msg_box_top_right",
"msg_box_icon",
"msg_box_config",
"msg_box_bulletin",
"msg_box_white_list",
"msg_box_icon_revision_config",
"single_channel_strategy",
"channel_groups_strategy",
"crowd_strategy",
"msg_access_management",
"crowd_management",
"material_management",
"trigger_condition_management",
"task_management",
"scene_strategy",
"user_stratified_strategy",
"task_group_strategy",
"whole_frequency_strategy",
"scene_configuration",
"cangjingge_configuration",
"channel_message_permission",
"template_management"
]

添加之后修改响应包就OK了

image-20241004232218820

这里修改之后只会弹出来一瞬间,深究一下原因

image-20241217142435927

image-20241004232356828

这里很明显还是简单验证了一下,所以我们就有了上面的修改响应header的话

image-20241004231947012

PS:这个站鉴权比较死,如果鉴权很松这个站就通了

例子二

首先拿到这个站,发现这个站弹窗是下面这样的

image-20241217142540517

然后尝试登录,发现还是存在

image-20241001230437084

这里就尝试去抓一抓判断是否有权限的包

image-20241217142652784

尝试很久发现还是一无所获

最后发现有很多接口在首页,但是拼接之后还是初始界面,抓包也是一样。

这里就不能傻乎乎的登录去测,这里一来就有鉴权的包,那么我们就可以直接使用,首页刷新获得鉴权包

image-20241002000155033

很明显这里有一个api.m.xx.com所以我们就直接看看

image-20241002000316337

这里我们可以看到functionId,这个参数在JS里面就十分的敏感,功能id嘛,我们这里的ID是没有用的,所以换一个思路

我们直接去JS里面找

image-20241002000625765

这里就直接找到了

我们后面就直接筛选这个 wl(“

image-20241002000820085

挨个尝试就会发现这个jdh_nethp_marketcrm_callDetailExport

image-20241217142814144

image-20241002000931851

image-20241002000956572

三、接口构造技巧

功能定位接口---js检索

image-20241006132444505

这里有一个证书查询的页面,我们可以思考一下这里的功能点都对应什么样的接口

  • 身份信息对应一个POST的接口
  • 这个查询接口估计是GET型的接口

这里我们就需要猜测的是这个功能点的接口是啥样的,定位的是关键词

cert  Certificate  query  idcard  sendsms

查看findsomething

image-20241006133452495

这里我们只是发现了隐藏的接口,我们还是得继续看一看这个接口的传参是怎么样的

Js检索

image-20241006133802776

这里可以看到四个参数

idcardNo
phoneNo
smsCode
ifAgreeClause

相关接口检索接口image-20241006134550651

保存接口可以找到/v4/scrm/api/crowd

  1. /v4/scrm/api/crowd
    看能否获取crowd人群这个数据的其他相关操作接口
  2. /scrm/api/crowd
    进一步扩大范围检索
  3. /api/crowd
    再次扩大检索范围
  4. /crowd

这样去寻找接口发现是找不到的,但是一般这里都会有接口信息,这里的可能就是保存接口的操作信息是没有和我们的检索的东西挨在一起,所以我们直接就关键字检索

crowd,create,add,save这些的接口一个一个去看

image-20241006140909174

这里只是找到了接口,但是这里是post方式,所以我们就得找参数

如何获取这个参数呢?

  1. 查看相关接口的参数,查看里面的参数的值
    • 这里的估算功能点(/v4/scrm/api/crowd/countByCondition),里面还是会有很多的参数
    • 但是会有没有的参数,比如人群名称
    • image-20241006141313924
  2. 因为json里面是没有参数的限制的,无效参数不会报错,所以我们就可以写一个fuzz字典,爆破一下

查询接口访问测试小trick

未授权访问

"pageNo":1,
"pageSize":10

GET请求就get

POST接口就直接json

{
    "pageNo":1,
    "pageSize":10
}

常见js搜索关键字

type:"POST"
type: "GET"
post("
get("
ashx
?ashxurl:
url:"
url:'
path:
path:"
path:'
action?dataparams

场景适用

  1. 数据的某些应该有的功能点,而页面未展示

    • 例如数据的增删改查,少了某一项
  2. 没有突破点的页面

    • 例如无法登录的平台,或者进了后台无法使用,再比如空白页面等
  3. 没有权限的某个功能

    • 某个功能需要更高权限或等级,有可能只是前端限制,完全可以尝试拼接去寻找突破口
posted @ 2024-12-17 14:30  tammy66  阅读(158)  评论(1)    收藏  举报