在撰写这篇文章之前,我先简单分享下hack the box实验感受。hack the box是一个在线渗透平台,模拟了真实环境且难度较大,而且用户注册该网站时需要绕过关卡并获取邀请码,涉及审查元素、base64解密、发送post请求等操作,挺有意思的。这是一篇基础性文章,将讲述注册过程、遇到的难点及入门案例,希望对您有所帮助。同时,该网站题目细节不便于透露,更好地让大家去尝试,所以只会分享一些思想。
作者作为网络安全的小白,分享一些自学基础教程给大家,主要是关于安全工具和实践操作的在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔~
PS:本文参考了B站、安全网站和参考文献中的文章,并结合自己的经验和实践进行撰写,也推荐大家阅读参考文献。
下载地址:https://github.com/eastmountyxz/NetworkSecuritySelf-study
前文学习:
[网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例
[网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登录加密入门笔记
[网络安全自学篇] 三.Burp Suite工具安装配置、Proxy基础用法及暴库示例
[网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密
[网络安全自学篇] 五.IDA Pro反汇编工具初识及逆向工程解密实战
[网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向破解
[网络安全自学篇] 七.快手视频下载之Chrome浏览器Network分析及Python爬虫探讨
[网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster工具
[网络安全自学篇] 九.社会工程学之基础概念、IP获取、IP物理定位、文件属性
[网络安全自学篇] 十.论文之基于机器学习算法的主机恶意代码
[网络安全自学篇] 十一.虚拟机VMware+Kali安装入门及Sqlmap基本用法
[网络安全自学篇] 十二.Wireshark安装入门及抓取网站用户名密码(一)
[网络安全自学篇] 十三.Wireshark抓包原理(ARP劫持、MAC泛洪)及数据流追踪和图像抓取(二)
[网络安全自学篇] 十四.Python攻防之基础常识、正则表达式、Web编程和套接字通信(一)
[网络安全自学篇] 十五.Python攻防之多线程、C段扫描和数据库编程(二)
[网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站暴库防护
[网络安全自学篇] 十七.Python攻防之构建Web目录扫描器及ip代理池(四)
[网络安全自学篇] 十八.XSS跨站脚本攻击原理及代码攻防演示(一)
[网络安全自学篇] 十九.Powershell基础入门及常见用法(一)
[网络安全自学篇] 二十.Powershell基础入门及常见用法(二)
[网络安全自学篇] 二十一.GeekPwn极客大赛之安全攻防技术总结及ShowTime
[网络安全自学篇] 二十二.Web渗透之网站信息、域名信息、端口信息、敏感信息及指纹信息收集
[网络安全自学篇] 二十三.基于机器学习的恶意请求识别及安全领域中的机器学习
[网络安全自学篇] 二十四.基于机器学习的恶意代码识别及人工智能中的恶意代码检测
[网络安全自学篇] 二十五.Web安全学习路线及木马、病毒和防御初探
[网络安全自学篇] 二十六.Shodan搜索引擎详解及Python命令行调用
[网络安全自学篇] 二十七.Sqlmap基础用法、CTF实战及请求参数设置(一)
[网络安全自学篇] 二十八.文件上传漏洞和Caidao入门及防御原理(一)
[网络安全自学篇] 二十九.文件上传漏洞和IIS6.0解析漏洞及防御原理(二)
[网络安全自学篇] 三十.文件上传漏洞、编辑器漏洞和IIS高版本漏洞及防御(三)
[网络安全自学篇] 三十一.文件上传漏洞之Upload-labs靶场及CTF题目01-10(四)
[网络安全自学篇] 三十二.文件上传漏洞之Upload-labs靶场及CTF题目11-20(五)
[网络安全自学篇] 三十三.文件上传漏洞之绕狗一句话原理和绕过安全狗(六)
[网络安全自学篇] 三十四.Windows系统漏洞之5次Shift漏洞启动计算机
[网络安全自学篇] 三十五.恶意代码攻击溯源及恶意样本分析
前文欣赏:
[渗透&攻防] 一.从数据库原理学习网络攻防及防止SQL注入
[渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法
[渗透&攻防] 三.数据库之差异备份及Caidao利器
[渗透&攻防] 四.详解MySQL数据库攻防及Fiddler神器分析数据包
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。
Hack The Box是一个在线平台,允许测试您的渗透技能和代码,并与其他类似兴趣的成员交流想法和方法。它包含一些不断更新的挑战,并且模拟真实场景,其风格更倾向于CTF挑战。
注册登录之后如下图所示,包括地图炮(attack maps)、在线人数及设备、Web渗透真实场景等。
官方网址:https://www.hackthebox.eu/
那么,开始我们的注册和学习吧!哪有这么简单,注册是很有意思的,Let’s go!
第一步,访问网站主页并点击“JOIN”按钮,跳转至获取邀请码界面。
主页中间有个“JOIN”超链接,点击之后会进入邀请码页面,注册需要一个邀请码。
第二步,该邀请界面也可以直接通过“https://www.hackthebox.eu/invite”访问,但是邀请码是什么呢?
我们右键浏览器“审查元素”或按下F12查看源代码。
在“https://www.hackthebox.eu/js/inviteapi.min.js”脚本中发现“makeInviteCode”的提示。
第三步,打开控制台Console,并输入命令“makeInviteCode()”,输出结果如下图所示。
在控制台执行“makeInviteCode()”函数会回显一个base64的字符串。
代码如下,enctype通常为"ROT13"或者"BASE64",表示加密方式,所以接下来我们要通过Base64解密该data。
{0: 200, success: 1, data: {…}}
0: 200
data:
data: "SW4gb3JkZXIgdG8gZ2VuZXJhdGUgdGhlIGludml0ZSBjb2RlL.....mVyYXRl"
enctype: "BASE64"
__proto__: Object
success: 1
__proto__: Object
第四步,通过在线网站解密该字符串,如下图所示。
解密后的结果如下所示,它居然还不是邀请码,而是让你发送一个POST请求到指定页面。注意,在SQL注入、XSS注入等渗透中,发送自定义拼接的POST请求是非常重要的一个知识点。
In order to generate the invite code,
make a POST request to /api/invite/generate
GET请求和POST请求区别
- GET和POST是HTTP协议中的两种发送请求的方法,最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。
- GET是从指定的资源请求获取数据,像数据库的查询操作一样,不会修改增加数据,也不会影响资源的状态;而POST是向指定的资源提交要被处理的数据,是用于可能修改指定资源的请求,会像数据库的删除、增加、修改数据一样,可以影响资源的状态。
- 安全方面,GET数据通过URL传递,数据是会直接暴露在URL上,并且数据会保留在浏览器历史中,是能被缓存且可收藏为书签的,所以安全性非常低;POST数据则是放在Request body(报文的请求体)中,数据不会保留在浏览器历史或Web服务器日志,不能被缓存且不可收藏为书签,所以POST的安全性要比GET的安全性高。
- GET请求和POST请求都有自己的语义,不能随便混用。在发送密码或其他敏感信息时绝对不要使用GET请求!同时在发送数据时,GET 请求向URL添加数据,URL的长度是受限制的(URL最大长度是2048个字符);而POST请求是无限制的。GET只接受ASCII字符,而POST没有限制。
第五步,发送POST请求并获取返回值。
如果在Linux或MAC系统,使用curl post发送请求。
curl -X POST https://www.hackthebox.eu/api/invite/generate
由于作者电脑是Windows系统,采用其他方法,发送POST请求,如Python代码、OWASP Mantra浏览器发送。
OWASP Mantra 是由 Mantra 团队开发,面向渗透测试人员、Web 开发人员和安全专业人员的安全工具套件 (基于浏览器, 目前是 Chromium 和 Firefox ),包括扩展程序和脚本集合。
在OWASP Mantra浏览器中输入网址和选中“Enable Post data”按钮,发送post data为“1”,得到如下图所示的返回值,它还是使用base64加密的邀请码。
返回值如下:
{
"success":1,
"data":{
"code":"UEVYVUktTUxZRkstRlZVVVEtTU1DTUstT1NLRkk=",
"format":"encoded"},
"0":200
}
第六步,通过在线网站解密Base64,自此终于获取了我们的邀请码。
输入验证码,点击“Sign Up”。
第七步,在注册页面输入用户名、密码、邮箱,并完成注册。
注册页面:https://www.hackthebox.eu/register
您可能会想,我为什么不进行目录爆破,直接获取注册界面然后进行注册呢?哈哈,其实我也尝试了,它会提示如下图所示错误,让你您进行获取邀请码。
问题
作者在注册过程中遇到一个问题,而且花费了很长时间才解决。虽然很多人会觉得很容易解决,但对于网络安全初学者的我来说,还是挺难的。如果您是初学者,别担心、别气馁,一步一个脚印的前行。
该问题是我们注册时,由于看不到验证码,总提示“The g-recaptcha-response field is required.”。怎么解决呢?您应该懂吧!
但作者的PC端计算机访问Google始终失败,最后是通过手机端完成的。然后填写用户名、邮箱、密码,做下Googel人机验证 ,验证通过就好了。
最后,打开QQ邮箱点击链接确认即可登录。
登录网站,显示如下图所示主页。
主页包括地图炮(attack maps)、在线人数及设备、Web渗透真实场景等。
Hack The Box is an online platform allowing you to test and advance your skills in cyber security. Use it responsibly and don’t hack your fellow members.
网站中间显示了基本统计信息:
点击某个团队,能看到它们的相关信息,如下图所示。
点击“Access”中获取一些入门知识。
机器(Machines)和挑战(Challenges)是最常用的界面,如下图所示。它能显示激活机器(Active Machines)和释放机器(Retired Machines),释放机器需要VIP能激活。每个机器独有对应的难度和分数。
Challenges包含了各种类型的题目,类似于CTF。
这里我们选择Web题目,可以看到题目的难度值、评分。
我们随机选择一个题目,并且点击“Start Instance”,安装之后会显示网址和端口。
复制网址和端口,即可做题。
同时,该网站包括讨论区,但切记别透露题目的核心完成步骤。
如下图所示:
终于登录成功,是不是有点兴奋呢?接着我们分线一个小案例——Cartographer。
访问网址如下图所示:
这是一道SQL注入题目,我们将用户名和密码设置为万能密码admin、‘or’='or’均失败,那试试 ‘=’ 呢?
也可以尝试分析源码或BurpSuite分析。
成功之后会进入下面的界面,还需要进一步提取Flag。
接着尝试,参数试试设置flag呢?最终后去的flag如下所示。
按照格式输入Flag提交即可,如:HTB{I love CSDN}。
写到这里,这篇文章分享结束,我们拿下了first blood。非常推荐大家去试试hack the box。同时更多细节大家自己去尝试,我们也不泄露最终结果。
这篇基础性文章就此结束,希望文章对您有所帮助。非常感谢师弟他们的推荐,也觉得自己的技术好浅,要学的知识好多。如果您是安全初学者,一步一步学习,多实践多尝试,大牛都是慢慢练成的。
转眼,自己已经写了400多篇文章了,非常值得纪念,今后也希望帮到更多的读者。最后,希望博友们多看看来时的路,生活不止有编程和论文,还有太多精彩需要我们去感受,祝好~
(By:Eastmount 2020-01-09 晚上8点写于武汉 http://blog.csdn.net/eastmount/ )
参考文献:
[1] https://www.hackthebox.eu/
[2] hack the box 注册 - mixboot
[3] hackthebox 入门攻略 - 搜狐
[4] Hack The Box 注册 - espandy
[5] http://dispa1r.cn/2018/05/20/hack-the-box-1/
[6] HackTheBox HackBack渗透笔记 - Kir[A]
[7] http://www.tjuscswyz.cn/