1s,精准定位加密算法。

admin 2024年11月24日14:42:56评论12 views字数 4068阅读13分33秒阅读模式
1s,精准定位加密算法。

啰啰嗦嗦

北京时间2023-03-12 07:05:32,天刚蒙蒙亮。窗外传来工地哒哒的"马蹄声",懒觉是睡不成了。脑子里闪过上次开源的前端Url抓取插件,没有考虑到实际生产问题,翻车了!而后我对脚本进行了二次优化,css排版已得到一定的改良,这次附上gayhub地址:

https://github.com/Captain0X/HunterUrls

1s,精准定位加密算法。

1s,精准定位加密算法。

正文

作为一名命途多舛的脚本小子,时常面临着满脑子骚操作,洞却挖不到的尴尬局面,是人性的扭曲还是道德的沦丧?欢迎收看今晚20点走近科学之––《脚本小子の疑惑》

1s,精准定位加密算法。

噢,扯远了!

既然都挖不到洞,干脆把挖洞姿势公布出来,让师傅们去把挖洞姿势发扬光大,那么结局就是这样:

我  →  公开姿势  →  师傅们  →  拿下漏洞

等于

我  →  拿下漏洞

1s,精准定位加密算法。

嗯~~~~~~骚话打住,开工!

1s,精准定位加密算法。

在安全测试过程中,时常遇到js加密数据,这是一件令人掉头发的事情。面对诸多出洞的不确定性和追求挖洞的效率问题,许多人会只直接放弃逆向加密算法,转战下一个突破点。但是,挖洞本身不就是在不确定性中寻找确定性吗?我的想法是,别人无法到达的地方,便是突破的最优选择。

这次推荐的是整套爆破装备,从js逆向到验证码ocr识别一把嗦!

1s,精准定位加密算法。

js加密定位

1.安装谷歌油猴插件
插件下载地址:

https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo

1s,精准定位加密算法。

2.新建脚本

1s,精准定位加密算法。

3.把github的js代码粘贴进去,代码地址:
https://github.com/Captain0X/hacker_tools/blob/main/crack_encrypt.js

这些代码来自于一名我不认识的大佬,是我同事发给我的,非常感谢这位不知名的大佬,如涉及侵权,请私信联系我删除,谢谢。

1s,精准定位加密算法。

4.启动脚本

1s,精准定位加密算法。

1s,精准定位加密算法。

5.打开目标:https://login.captainxu.repl.co/
这是我随便敲的一个简约登录页面,密码使用AES ECB模式进行加密,打开F12调试器,注意观察console的输出,输入账号密码

1s,精准定位加密算法。

6.此时看到console输出了加密算法名称和密钥,是不是1秒出结果?是不是很丝滑?

1s,精准定位加密算法。

Tips:平时不需要用到这个脚本时请关闭脚本,否则会干扰正常的登录请求。

这就完了?且慢!既然把登录都搞了,这不顺带爆淬(cui第四声)一顿验证码?

可拷,非常可拷~

1s,精准定位加密算法。

作为脚本小子,只有站在巨人的肩膀上,才能看得更远。这次使用鼎鼎大名的验证码识别依赖库:ddddocr。此前已经有师傅把它封装成burpsuite插件,我就开新路子吧。

1s,精准定位加密算法。

进阶

首先使用python Flask快速封装加密算法和图片验证模块,做一个小型的爆破接口,高度自定义的模块,灵活运用,如有条件的师傅可搭配代理Ip,开挂模式,专治各种水土不服的登录页面!在此我只写爆破接口雏形代码,由于加密算法种类和模式较多,考虑到灵活性问题,我就不展开了。大家要是不懂如何将js的算法转换成python的算法,我给大家安排了私人助手。

助手领取地址→

https://chat.openai.com(需要科学上网才能访问)

1s,精准定位加密算法。

脚本思路

以下内容属于python代码部分,需要具备基本的代码能力方能看懂。

首先你要自己实现python加密算法,然后返回加密结果给登录请求函数。

分析测试页面的登录请求流程:

1.创建请求会话

2.获取验证码,识别验证码

3.对密码参数进行加密

4.发起登录请求,将请求结果返回给burpsuite,在Intruder中筛选你的菜

上~~!python代码flask_api.py:

# -*- coding: utf-8 -*-''' @author : Captain0X @time : 2023/3/7 8:54 '''import base64import ddddocrfrom requests import Sessionfrom Crypto.Cipher import AES'''环境要求:python 3.7以上请安装以下依赖库pip install pycryptodome==3.9.9pip install ddddocr'''#初始化验证码识别模型dcr=ddddocr.DdddOcr()def pkcs7padding(text):    """明文使用PKCS7填充,padding:凑篇幅的文字 """    need_size = 16    text_length = len(text)    bytes_length = len(text.encode('utf-8'))    padding_size = text_length if (bytes_length == text_length) else bytes_length    padding = need_size - padding_size % need_size    padding_text = chr(padding) * padding    return text + padding_textdef AES_Encryption(secret_key=None,text=None):    if (secret_key is None) or len(secret_key) == 0:        secret_key = "1234567812345678"    text = pkcs7padding(text)    aes = AES.new(secret_key.encode("utf-8"), AES.MODE_ECB)    en_text = aes.encrypt(text.encode('utf-8'))    result = str(base64.b64encode(en_text), encoding='utf-8')    return resultdef get_code(sec):    '''获取并识别验证码'''    api="https://login.captainxu.repl.co/code?0.43988416665399943"    img_bytes=sec.get(api).content    code_text=dcr.classification(img_bytes=img_bytes)    print("验证码识别结果:",code_text)    return code_text,secdef login_encrypt(user, pwd):    # 设置 http和https访问都是用HTTP代理    proxy_url = "http://127.0.0.1:10809"    proxies = {        "http": proxy_url,        "https": proxy_url,    }    sec=Session()    #用代理就开启下面这个代码    # sec.proxies=proxies    sec.headers={'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'sec-ch-ua': '"Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'sec-fetch-dest': 'document', 'sec-fetch-mode': 'navigate', 'sec-fetch-site': 'same-origin', 'sec-fetch-user': '?1', 'upgrade-insecure-requests': '1', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'}    #获取验证码识别结果    code_text,sec=get_code(sec)    #登录接口    api="https://login.captainxu.repl.co/login"    password = AES_Encryption(secret_key="passw00dpassw00d", text=pwd)    data={"username":user,"password":password,"auth_code":code_text}    print(data)    #发起登录请求    resp=sec.post(api,data=data)    #返回请求结果和响应头到burpsuite    return str(resp.headers)+"n"+resp.textfrom flask import Flask, requestapp = Flask(__name__)#定义一个登录接口@app.route("/login", methods=['GET'])def call_login():    user = request.args.get("user")    pwd = request.args.get("pwd")    result=login_encrypt(user, pwd)    return resultif __name__ == '__main__':    #本地服务 ip 端口    app.run('127.0.0.1', 5666)

粗略审计整套流程,不过几十行代码。现在在burpsuite构造本地验证码识别接口请求包,参数只有用户名和密码,验证码和加密都封装在本地接口中,无须再做处理,接下来运行一下butpsuite爆破!

  1. 启动本地接口服务

1s,精准定位加密算法。

2.测试前Repeater发送下数据包是否正常返回

1s,精准定位加密算法。

3.启动Intruder

1s,精准定位加密算法。

成功登陆!

(完)

1s,精准定位加密算法。

(转载请私聊,免费传播。本文中涉及到的知识仅用于网络安全评估测试,切勿用作其他用途。)

原文始发于微信公众号(森柒柒):1s,精准定位加密算法。

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月24日14:42:56
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   1s,精准定位加密算法。https://cn-sec.com/archives/1763778.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息