前言
自己最近写了一个前端加密对抗练习靶场,包含非对称加密、对称加密、加签以及禁止重放的测试场景,比如AES、DES、RSA,用于渗透测试加解密练习。希望可以帮助到最近在学习这块知识的师傅,靶场函数很简单,和实战相比还是差的有点多,不过应该够入门了
项目地址:https://github.com/SwagXz/encrypt-labs
Burp插件:https://github.com/f0ng/autoDecoder
1、AES固定key
第一种比较简单,key和iv写死,直接略过看第二种
2、AES服务端获取key
选择AES服务端获取Key选项
可以看到按钮处定向到fetchAndSendDataAes方法
跟进方法分析函数,客户端会先请求server_generate_key.php获取返回包中的key和iv,如果session不变,key和iv也不变
访问server_generate_key获取到base64编码后的key与iv
使用autoDecoder先配置自带的方法,红框的配置要注意配置好
主页面配置,仅登录所以关键字写了password
在Repeater测试解密是否成功
然后进入intruder进行爆破登录尝试
成功爆破
3、RSA加密
跟进查看函数,使用了RSA对整个数据包进行了加密,靶场相对简单,看代码就能看出来是
{"username":"","password":""}
但在实战中,函数参数都复杂些,较难看出如何传参的,这时候就需要打断点取调试,快速找到参数
打断点观察变量的值,获取参数
获取不到私钥,所以只能加密,无法解密;由于靶场只覆盖了登录模块,不包含越权测试,所以不知道私钥也行;之后再重复刚才在autodecoder的操作
在intruder进行爆破测试
4、AES+RSA加密
先看下数据包,一般这种格式的都是对称+非对称组合加密,每次请求包的key都会变化,然后我们去看加密方法函数
方法函数先生成了aes和iv随机值,之后再对key与iv进行了rsa加密,在无法获取私钥的前提下我们就无法进行解密测试了