对某webvpn系统加解密分析

一.起

是最近在实战中遇到的一个webvpn系统,有不少高校在运用,但是登录进来后发现简直没有公开任何内网资产,都是国内外的期刊或者公共图书馆资源,于是想着能不能经过webvpn排查出更多内网中的资产面,于是便有了这篇文章。

二.承

以前遇到的一些vpn系统,在前台就有快速跳转的功用
图片[1]-对某webvpn系统加解密分析-孤勇者社区
点击访问后,url地址传给效劳器,由效劳器端停止加密,随后运用302重定向到加密后的地址:
图片[2]-对某webvpn系统加解密分析-孤勇者社区
假如我们要经过webvpn对目的内网中的http效劳停止爆破的话,就能够经过,写脚本,调用上面的加密接口,取得响应包中的Location字段来取得加密地址,判别该地址能否胜利访问的方式停止爆破。
但是这次遇到的webvpn系统却没有提供前台输入url地址直接跳转的功用,只能访问导航中给出的一些等公共资源
图片[3]-对某webvpn系统加解密分析-孤勇者社区
而且点击跳转后有没有看到效劳器加密解密的过程,估量是在前端完成的url加密
图片[4]-对某webvpn系统加解密分析-孤勇者社区
还是先看一下网站构造,发现援用了aes-js.js文件,盲猜运用了aes加密。
图片[5]-对某webvpn系统加解密分析-孤勇者社区
由于该系统没有运用webpack打包,js也没有停止混杂或加密,所以给我们的调试工作带来了不少便当。
普通正常状况下遇到混杂的js代码,我都会先用工具搜索一下字符串,假如运气好可能一些密钥key就直接硬编码在了js里
图片[6]-对某webvpn系统加解密分析-孤勇者社区
但是这次没这么容易扫到什么敏感信息,那还是直接上F12大法吧
搜索encrypt字样,定位到portal.js文件,能够确认系统的加密是运用的aes-js库,而且定义AES加密形式是cfb
图片[7]-对某webvpn系统加解密分析-孤勇者社区
但是没有发现关键的key和iv,那就先找找key
图片[8]-对某webvpn系统加解密分析-孤勇者社区
原来是经过api获取的
图片[9]-对某webvpn系统加解密分析-孤勇者社区
经过burp抓包也得以考证,如今获取到了key和iv,我们再来认真剖析下加密算法详细是如何完成的
图片[10]-对某webvpn系统加解密分析-孤勇者社区
text是待加密的明文参数,由于aes加密中请求明文的字节长度是16位的倍数,所以先运用textRightAppend()办法判别text字节长度,决议需不需求追加0来填充,然后将明文、key和iv运用toBytes()办法转换成utf-8编码的byte数组,new了一个aesCfb对象,运用上述的key和iv停止cfb形式的aes加密,由于没有声明填充形式,我们猜想是运用的默许的PKCS5Padding,又由于给定的密钥是16位,所以数据块应是128,最后将加密密文先转成十六进制字符串再slice一下,即只截取明文字符串两倍长度的密文字符串,和转成十六进制的iv拼接好,就构成了最终的密文。

晓得了加密算法,我们再搜索encrypt字样看看哪里调用了加密算法
图片[11]-对某webvpn系统加解密分析-孤勇者社区
经过函数名encryptUrl能够大约猜到是对url停止加密的函数
图片[12]-对某webvpn系统加解密分析-孤勇者社区
分离console调试的结果,大约能够得知这样一个加密过程:首先生成协议名-端口,假如是https则不需求加上端口号,再得到encrypt()办法加密的主机地址,最后保存原有的url途径和query参数。
我们继续搜索encryptUrl字样找到调用了该办法的go函数
图片[13]-对某webvpn系统加解密分析-孤勇者社区
不难看出这个函数主要是用于完成跳转的,关于传入的url地址,分别用parseProtocol和parseHost办法别离出没有冒号双斜杠的协议名和主机地址,假如主机地址parse为空或失败的话,跳转到百度搜索,假如是http、https、ssh这些协议的话会先记载到历史,然后再跳转。

三.转

大约逻辑理分明了,我们先考证一下:
图片[14]-对某webvpn系统加解密分析-孤勇者社区
将“www.baidu.com”停止aes加密后得到“e7e056d2253161546b468aa395364056”,截取长度26,即“e7e056d2253161546b468aa395”
图片[15]-对某webvpn系统加解密分析-孤勇者社区
将iv string转hex后的结果“77726476706E69737468656265737421”
两者拼接 = “77726476706E69737468656265737421e7e056d2253161546b468aa395”
图片[16]-对某webvpn系统加解密分析-孤勇者社区
和控制台调试的结果分歧,考证胜利,证明我们的剖析没有问题。

四.合

最后要做的就是写个脚本停止爆破了

五.后话

后来对api停止深一步测试的时分发现,其实该系统还是配置了快速跳转的功用的,不过管理员默许关闭了,我们只需求修正一下响应包就能够胜利运用这个功用,点击跳转后实质上还是调用之前剖析的go()办法。

其实相似爆破还能够写油猴脚本,直接调用go()办法,会省下很多代码,但是脚本的优势也是很明显的,我们能够运用多线程,依据timeout和Location字段等方式判别目的能否可达。

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞10赞赏 分享
评论 共1条
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片
    • 头像代卡0