准备写一个专题系统,专门破解Hack the box上的机器。
工具必备:KALI LINUX,建议使用最新版,Firefox(我比较喜欢在Firefox做一些安全类的测试,所以后续也以Firefox作为默认浏览器)
Day1入门测试:我们进入官网https://www.hackthebox.eu/,然后点击右上角的Join now,会重定向到邀请码界面,这是官网给的一个入门测试,试试自己的水平。https://www.hackthebox.eu/invite
(1)唯一的提示就是Want some help下面的Click Here,点击后提示可以检查下console.
(2)那我们用F12调出调试器,查看console标签。它说这个页面加载了一个有趣的js文件,如下图。
(3)切换到调试器窗口,找下JS
看到有一个inviteapi.min.js,看文件名很像,但是右侧的代码不是很好看,点击最下面的大括号优化下代码显示。
(4)这个代码很难读,有经验的一眼就知道,没经验的我们到网上搜一下,发现都说是一个混淆后的代码,如下图:
(5)打开第一个可以解密的链接,把JS代码粘贴进去,点击解密,得到下面的代码
function makeInviteCode() {
$.ajax({
type: "POST",
dataType: "json",
url: '/api/invite/how/to/generate',
success: function(a) {
console.log(a)
},
error: function(a) {
console.log(a)
}
})
}
关键的数据是两个,一个是提交数据的方法是POST,一个是URL:/api/invite/how/to/generate
(6)转到Network标签卡,把上面的URL粘贴到主网站的后面,回车
https://www.hackthebox.eu/api/invite/how/to/generate发现报错了,原因是方法是GET,而我们解密出来要用POST,在请求上右键,选择Edit and Resend
(7)这时响应变成了由405变成了200OK,切换到Response,发现一个data字段,和一个加密算法是ROT13
【TIPS】这里有时候注册可能是Base64,解码过程见(10)
(8)ROT13就是凯撒加密的一种变体,就是按字母表的顺序将第1个与第13字母掉换,第2个与第14个掉换,以此类推,我们直接在网上搜下ROT13解密,将data的内容复制并解密得到In order to generate the invite code, make a POST request to /api/invite/generate
(9)同样还是POST方法,换成了一个新的URL,按照上面的方法再来一次,我们又得到一个编码,以等号结尾,这是一个base64编码的特征。
(10)在KALI中输入echo TFNQUVgtR1RUVEgtUE9JTVctQ1pKRU8tSEhLVVY= | base64 -d
得到原始字符串
(11)退回到Join now的页面,将这个字符串输入到invite code中,点击Sign up,出现了Congratulations! 成功了,继续完成注册过程即可。
知识点汇总:
(1)利用F12带来的各种功能debugger、network(可以Edit and Resend)等(虽然Burp可以实现 以上所有功能)
(2)eval(function(a,b,c,d,e))是javascript压缩和加密常用的手段,可以在线解密
(3)ROT13是凯撒密码的变体,每个字母的位数对应字母表中其后的第13位,依次类推
(4)利用echo xxx | base64 -d 解码