Js在漏洞挖掘中的作用-接口篇

admin 2024年8月12日14:42:42评论11 views字数 3831阅读12分46秒阅读模式

(以下仅个人观点与理解,各位师傅有不同的理解也欢迎批评和指正)

师傅们在Src漏洞挖掘时,经常会涉及到需要审计Js来寻找一些突破口或者可以利用的点,那么Js中我们一般需要获取什么信息呢

其实在我看来,实战的漏洞挖掘中审计Js一般是获取如下几个信息

1、Js中存在指纹信息

这里的指纹信息包括前后端框架和插件的版本号信息,Github项目地址等,这时候就可以尝试寻找对应项目的nday或审计源码来寻找突破口

2、Js泄露接口信息

Js中存在一些网址或接口信息,特别是一些没展示到页面中的隐藏功能的接口,这些隐藏的接口很有可能存在各种常见的漏洞,例如越权,未授权等,这也是我目前非常喜欢测的一个点

3、Js泄露敏感信息

这个也挺常见的,就是Js中包含一些敏感信息,例如账密,个人信息等,从而突破了某些资产,进行深度利用等

4、Js逆向加解密数据

通过Js调试来解密站点的一些数据,例如破解sign,数据包中的密文等,获取对应的明文内容,很可能这些明文内容就存在越权等漏洞

由于1和3相对来说比较简单,所以JS漏洞挖掘篇我们主要讲接口和Js逆向,今天先给师傅们分享一下Js中的接口利用,也就是如何有目的性的去寻找Js中的相关接口,以及哪些场景下我们需要去尝试从Js中获取对应信息来利用(总不能每个页面都打开Js来翻吧)

Js在漏洞挖掘中的作用-接口篇

01、场景一

Js在漏洞挖掘中的作用-接口篇

先来看这样一个页面,思考一下,在这个页面上,我们是否需要去翻找Js来做进一步的尝试和利用,为什么呢

Js在漏洞挖掘中的作用-接口篇

又或者说,让师傅们在这个页面进行测试,会测哪些洞呢?

首先就是一些肉眼可见的洞

Js在漏洞挖掘中的作用-接口篇
Js在漏洞挖掘中的作用-接口篇

数据修改处的越权

数据查看处的越权

数据新增处的越权

数据上线处的越权

这些相信师傅们都会去测吧,那除了这些呢,是否还有可以测的点呢?

Js在漏洞挖掘中的作用-接口篇

我在给师傅们讲越权漏洞时,最主要的就是提醒要牢记数据的增删改查操作,将网页的所有内容都看做是一条条数据,现在明白要测什么漏洞了吗

这里数据的增改查在网页中都有对应的功能,那么师傅们想一下,是否会有删除的接口呢,虽然网页中没有提供删除的功能点,那我们是否可以通过构造删除的接口尝试调用这个功能,如果存在这个接口的话并且可以调用的话,这种隐藏的接口,是否存在问题的可能性会更大一些呢?

假如此处新增数据的接口如下

/api/page/add

上面我们分析得到页面并没有提供删除数据的UI,所以我们尝试构造删除数据的请求,findsomething或者Js寻找以下关键字,寻找的方法就是像下面这样不断扩大检索范围

1、/api/page

看能否获取page这个数据的其他相关操作接口

2、/page

进一步扩大范围检索,因为/api接口有可能在Js中未与/page连接,导致1关键字搜索不到,后文会有对应案例

3、根据语义进行猜测关键字

例如这里我们要找的是删除接口,可以尝试检索如下关键字

deldeleteremove......(其他带有删除含义的关键字)

比如最后找到了一个下面这样的接口

/api/page/del

就可以尝试拼接相关的参数,比如page的id值等来测试一下越权漏洞或其他相关漏洞

Js在漏洞挖掘中的作用-接口篇

02、场景二

Js在漏洞挖掘中的作用-接口篇

再来看一个页面

Js在漏洞挖掘中的作用-接口篇

同样思考一个问题,这个页面需要去寻找Js吗,为什么?

Js在漏洞挖掘中的作用-接口篇

首先这个页面我们是不能正常进去的,因为无法获取到授权码,而我们挖洞想要的是什么,自然是绕过授权码进入该系统或者拿到系统内的数据,简单来说就是我们想要寻求突破口,所以这时候才要去看findsomething或者审计Js来尝试获取信息进一步测试

首先是findsomething,经过测试并无可以利用的点,而此时也没有一个要寻找的目标关键字,那我们就只能通过查找Js中的接口关键字来寻找隐藏的接口

下面是我常用的几个接口关键字,用于寻找Js中的接口信息

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

最终在Js检索url:这个关键字时,找到了这样一个接口

Js在漏洞挖掘中的作用-接口篇

post/posts/page?circleId?id=

拼接上id值之后,成功获取内部员工交流信息

Js在漏洞挖掘中的作用-接口篇

遍历id之后获得大量内部敏感信息,如下

Js在漏洞挖掘中的作用-接口篇

Js在漏洞挖掘中的作用-接口篇

03、场景三

Js在漏洞挖掘中的作用-接口篇

第三个场景是下面这样一个功能点,作用就是商家端给自己的客户进行分群,方便进行定向营销,推广等操作

Js在漏洞挖掘中的作用-接口篇

这里我们尝试新建一个人群,如下

Js在漏洞挖掘中的作用-接口篇

大武当,发现新建人群功能无法使用,提示试用期内无法创建人群,也就是新建人群这个功能,需要购买正式版的服务才可以使用

Js在漏洞挖掘中的作用-接口篇

这里提一嘴,看到这种灰色无法点击,不能使用的功能点,相信很多师傅也学过不少的思路和技巧,比如修改鉴权响应包让后端认为自己是正式版,或者前端删除disable之类的禁止属性,也就是很多人常说的前端越权,但其实在我看来,无论这种地方有哪些思路可以绕过,最终导致出现该漏洞的本质原因,就是这个功能的后端接口并没有限制用户使用,也就是没有做好鉴权,所以我测这些功能点,就更偏向于去寻找功能点对应的后端接口,去调用这个无法使用的功能点的后端接口,我觉得这样效率也很高(当然,只是我个人的看法)

所以这里我首先想到的就是去寻找“创建人群”这个功能对应的后端接口,由于该页面存在一个估算的功能,该功能是可以正常调用的,发现该功能的数据包如下(脱敏)

Js在漏洞挖掘中的作用-接口篇

通过这个数据包,我们可以得到什么呢?我们也就得到了“人群”这个数据的相关操作api,如下

/v4/scrm/api/crowd/

既然估算人群的接口位于该api下,那么新建人群的接口是不是也位于该api下呢,所以此时开始检索关键字,尝试获取新建人群的接口,检索顺序如下

1、/v4/scrm/api/crowd

看能否获取crowd人群这个数据的其他相关操作接口

2、/scrm/api/crowd

进一步扩大范围检索

3、/api/crowd

再次扩大检索范围

3、/crowd

继续扩大检索范围,发现仍然找不到新建人群的相关接口,所以基本断定新建人群的接口在Js中与/v4/scrm/api/crowd/为分离状态,所以导致了findsomething以及关键字都无法查询到,所以只能根据语义来猜

由于要找的是新建人群的接口,所以可以检索如下关键字

addcreatenew......(其他带有新增含义的路由)

4、add

未找到,切换下一个关键字

5、create

成功找到目标接口

在Js中检索create关键字时,找到如下新建人群的接口

createCrowd

Js在漏洞挖掘中的作用-接口篇

可以看到该接口在Js中确实是独立存在,也验证了我们上面的猜想,导致findsomething和路由关键字无法检索到该接口(这里直接检索我上面的隐藏接口关键字post("也可以找到该接口)

通过拼接该接口访问,结果如下(脱敏)

Js在漏洞挖掘中的作用-接口篇

可以看到接口调用成功,但传参存在问题,所以根据响应包中的回显一步步猜解传参(猜解传参的技巧以后再讲啦),最终成功调用该新建人群的接口(脱敏)

Js在漏洞挖掘中的作用-接口篇

这样也就实现了试用期无法使用该功能的限制

审核大大疑问之——接口哪来的

Js在漏洞挖掘中的作用-接口篇

最终这个洞因为资产原因降级的情况下也是获取了500元赏金,不多,但是比较好玩,也比较典型,所以给师傅们分享下,这也是我比较喜欢测的漏洞类型,因为我觉得Js找信息还挺好玩的哈哈

Js在漏洞挖掘中的作用-接口篇

04、总结

Js在漏洞挖掘中的作用-接口篇

上面给师傅们看了三个简单的场景,以及这些场景下我们为什么需要去审计Js来获取信息,下面总结一下哪些场景需要我们去分析Js和接口信息

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

例如数据的增删改查,少了某一项,就可以尝试寻找缺少的那一项对应的接口

2、没有突破点的页

例如无法登录的平台,或者进了后台无权限使用,再比如空白页面等等

3、没有权限的某个功能

某个功能需要更高权限或等级,有可能只是前端限制,完全可以寻找功能对应的后端接口尝试调用,这种漏洞在现在还是挺常见的

写这个文章呢,一个是因为太多太多师傅来和我说findsomething只会复制粘贴,GET跑一遍POST跑一遍,没东西就直接关了,其实在我看来,findsomething确实很好用,但也存在一些小瑕疵,不能完全依赖这个

首先就是findsomething找到的接口,你要先手动筛一遍,例如findsomething显示下面这俩接口

/user/getInfo/:uid/user/getInfo?uid=

总不能这样直接跑吧,第一个接口至少把:uid用个1代替,第二个接口给他传个1进去再跑嘛,师傅们觉得呢

又比如你Burp抓到的数据包如下

/api/user/list

然后你findsomething显示的接口是

/user/list

然后你跑findsomething的时候就把/api/user/list设置为变量来跑吗,这也不对吧

其次就是对于一些接口来说,findsomething是识别不到的,例如我上面新建人群那个接口,所以这时候就需要去Js中进一步寻找信息,最简单的就是我上面讲的,知道目标功能点的话,通过相关接口关键字或者猜解api含义去获取对应的隐藏功能接口

Js在漏洞挖掘中的作用-接口篇

05、杂谈

Js在漏洞挖掘中的作用-接口篇

(最后厚着脸皮再推一推我的课程,不感兴趣的师傅直接跳过就行)

Js在漏洞挖掘中的作用-接口篇

强力亲推:专属于大学生的SRC漏洞挖掘课程来啦!!

目前已经开课一个月了,课程也没有期数的说法,只要我还挖洞,就一直带着玩,每周一次一对一带挖,不定期小复盘,来的师傅们评价也还是不错哒,新学期马上开学了,祝师傅们也能在大学实现自己的经济自由,欢迎有兴趣的师傅们咨询!!

下面附上部分学员的评价啦

Js在漏洞挖掘中的作用-接口篇

Js在漏洞挖掘中的作用-接口篇

Js在漏洞挖掘中的作用-接口篇

Js在漏洞挖掘中的作用-接口篇

Js在漏洞挖掘中的作用-接口篇

原文始发于微信公众号(Daylight庆尘):Js在漏洞挖掘中的作用-接口篇

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月12日14:42:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Js在漏洞挖掘中的作用-接口篇http://cn-sec.com/archives/3058736.html

发表评论

匿名网友 填写信息