渗透测试过程中,加解密的应用

前言

年前参与的一个项目测试出了许多漏洞,客户就开始用千奇百怪的方式去修复漏洞。

这次遇到了一个比较典型的案例,客户将数据全部加密,企图告诉我漏洞已修复,你找不到能够利用的参数漏洞点。

image

最开始的时候,发现一个漏洞,就是分公司的成员,在查看分公司信息时,抓包后发现,存在一个参数名叫companyCode,即公司代码

通过修改companyCode的值后发现,可以以当前分公司的权限,去查到到母公司以及其他分公司的员工信息。

image

因此今天开始复测漏洞

过程分析

使用之前的在测试过程中积累的账号弱口令成功登入至目标系统(客户未提供测试账号)

再次来到之前的越权功能点进行抓包测试

image

发现整个请求数据体是被加密了,目前加密方式未知。

看数据的结构,大概率是AES算法,数据以base64格式输出。

再次抓包该功能点,发现密文发升了变化,因此有大概率是RSA算法,数据以base64格式输出。

较小概率是AES算法,被加密的数据中含有时间戳等随机字符串。

image

此处无法通过关键字定位,因为关键字(也就是参数名)也被加密了。

因此直接看该接口数据包的堆栈过程。

压栈信息如下:

image

此处根据经验判断

无用的堆栈文件是jquery-1.10.2.min.js

此处可以一个一个堆栈慢慢分析

通过分析,找到了密文所处的堆栈

image

跟进到该堆栈,并设置断点,重新触发该过程中的请求

image

在scope中找到了明文数据jsonparam和密文数据jsonStr

通过关键字搜索,找到了jsonStr的声明
image

可以发现jsonStr是通过函数queryhouduancanshu进行加密的。

分析该加密算法的流程

jsonparam先进行url编码,在进行unescape解码,在用btoa进行base64编码后得到了vasbtoa

vasbtoa字符串的下标是5时,插入一段长度为6的code字符串,在进行base64编码就得到了最终的密文。

将该加密算法整个复制粘贴下来

image

利用该密文重新发包

image

发现,越权漏洞并没有修复。

编写解密算法脚本

image

密文数据也被成功还原。

最后提交报告,并和客户沟通,告知加密并不能解决问题。

image

总结

加密可以通过堆栈信息来定位,也可以通过关键字定位,但是尽量多根据堆栈来分析。

加密并不能修复漏洞,只是会提高漏洞的利用难度和黑客的攻击成本。

Author: jdr
Link: https://jdr2021.github.io/2022/03/03/渗透测试过程中,加解密的应用/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.