校园网 WebVPN 访问网址的对应域名需要进行 AES+CFB 加密。如果不知道某个链接的加密后的网址,想用 WebVPN 访问是比较困难的。好在加密用的是 AES 对称方式加密,github 上有现成的代码可以帮我们执行加解密的过程,因此只要用某种方法套出加密用的 key 和 iv 就行了。
经过简单的测试,可以发现网页 html 部分的链接是写死的,推不出 key 和 iv。但是网页还存在 js 部分。简单分析可知,网页的 js 代码是在 WebVPN 的虚拟机中运行的,并且通过 js 修改网页上的链接时,链接的指向会自动进行加密。
因此,我们可以找一个可以通过内部 js 改变链接指向的网页,可以通过按钮或是其它方式触发。接着,给这个超链接元素打上断点。
接着,用某种方式改变这个超链接的指向
这时会进入到修改此链接部分的 js 调用中。
找到全局变量的部分(这里是 范围
),找到 Window
变量,其中有 __vpn_host_crypt_iv
和 __vpn_host_crypt_key
两个变量,它们的值就是加密用到的 key 和 iv。