Py爬虫之 js逆向实战:某案例

发布于:2024-04-24 ⋅ 阅读:(34) ⋅ 点赞:(0)

目录

前言

一.如何定位:

二.进行破解加密

1.抓关键点

2.换个对象(旁站侧击)

3.直击痛点

4.努力换来成功

三.总结

四,重要声明


前言

        在渗透学习的过程中,我们在测试未收权访问中,包括我们进行fuzz,都是需要获取js文件中的接口,然后进行进一步利用的,当然说这么多的根本原因是,越来越发现网络安全是一个全栈的学习路线,需要学习各种各样的知识,来提高自己的挖掘和利用能力,于是有了今天的这篇文章.

一.如何定位:

直接看这段url:

把params单独拿出来进行分析:  

jsv: 2.5.1
appKey: 
t: 1555565888273
sign: 804fd2bd78b737702144e7d5f655de33
api: 
v: 1.0
type: jsonp
dataType: jsonp
callback: mtopjsonp1
data:{"smAreaId":330111,"csaInfo":"0_0_0_0_0_0_0_0_0_0_0","csa":"0_0_0_0_0_0_0_0_0_0_0","logical":"HD"}

        经过观察对比,发现数据中变化的参数是sign和t ,很明显t就是13位时间戳,而sign是经过加密形成的,既然确定了位置,那么就好办了,我们只要找到加密算法,并解决就可以了。

二.进行破解加密

        简单思路和进行代码审计一样的开始一样的流程,找到关键参数(函数),打断点,找出执行流程,当然最后一点不太一样,代码审计的话是通过构造palyload,然后通过搭建站点,或是进行palyload利用,但是js逆向不一样是通过用自己的代码实现它。

首先打开任何一个流量器的F12中的网络,然后刷新页面,出现下面的请求的就可以了。

1.抓关键点

        数据中变化的参数是sign和t,那么就在这些返回数据中查找sign这个参数。但是因为因为是这个参数应用的比较多经过查找,sign这个参数太多了,直接查找,不仅浪费很多时间,而且效果也不好,果断放弃. 

       和渗透的思路类似,主站不好打,找子域名打,子域名不好搞,搞旁站,总有可以利用和渗透的点 

2.换个对象(旁站侧击)

        我们可以寻找其他的参数,看一下上面的params的那些参数,和渗透中小程序和wab渗透中比较关键的点一样,AK果然在哪都是比较重要的。

 

        顺着AK找到了这个,通过查看发现相似度较高,当然不能完全确定,和渗透一样,有时候需要通过其他的接口获取的信息来,让我们更进一步的扩大危害和确定获取信息的准确性。

        看到这里我们确认sign就是u,而u是通过p函数将多个参数处理获得的,我们找到p函数来进行进一步判断:

 

                这里我们将p函数进行处理一下,如果不会处理的话,可以利用chatgpt进行处理,然后在Pycharm中测试一下p函数进行了什么操作,看到这一下就兴奋了,这不就是熟悉了MD5吗,果断处理,通过脚本进行验证一下

 

import hashlib

def md5_hash(string):
    md5 = hashlib.md5()
    md5.update(string.encode('utf-8'))
    return md5.hexdigest()


string = "hello world"
hash_value = md5_hash(string)
print(f"md5 hash of '{string}' is: {hash_value}")

        看结果是一样的,p函数其实就是多个参数进行的一段md5加密,直接用md5替换它就ok了,基本上到这里就整个过程就有清晰的思路了, sign就是几个参数组成的字符串进行md5加密。 

3.直击痛点

        直接找到参数的起始位置就好了,主要是四个参数,n.data,a,o.tokens,s,通过打断点看一下这些参数都是什么牛马,最后经过我的对比发现,n.data就是url中的params的data o.token两次请求都是一样,可以当固定参数,a是时间戳,s是固定参数,这些参数比较少也容易分析,就不展示了. 

4.努力换来成功

        经过长时间的测试,发现o.token这个参数终于变化了。另一方面因为cookie设置了时间所以也会过期,变化的参数分别是m_h5_tk_enc和m_h5_tk,其他参数修改并不影响请求。通过两条变化一起看,发现o.token参数其实就是_m_h5_tk这个参数的一部分。 

 继续不断调试,进行进一步查看

 通过执行流程发现这段是异步设置cookie参数,继续寻找

 

最终找到失败的请求,发现他们返回了set-cookie。

这样问题解决了呀,直接更新一下cookie就可以进行操作了.

三.总结

        整个发现流程就是通过找关键参数,然后进行整个调式流程,首先发现参数sign加密方式为通过四个参数的MD5加密而成,其中o.token参数其实就是_m_h5_tk这个参数的一部分,o.token直接是从cookie中读取的,过期时会存在set-cookie,更新一下就可以操作啦.

四,重要声明

        这里大家有需要的话可以看一下下面的这个,毕竟在爬虫逆向以及渗透中代理池对我们来说还是很重要的,当然,大家甄别一下,如果大家使用ip池过程中出现问题,以及下面的图片所属的数探联盟的产品出现任何问题,都于本人及本博客无关.