这web challenges根本停不下来啊, 超有成就感的! 花了近一个小时才完成这个挑战 明明同样是30分的题, 但为什么难度跟上一题差这么多呢 (/‵Д′)/~ ╧╧

HDC

blob.jpg
挑战得分为30分, 难度中等偏易, 由Thiseas编辑上传.

问题描述

We believe a certain individual uses this website for shady business. Can you find out who that is and send him an email to check, using the web site's functionality?
Note: The flag is not an e-mail address.
我们认为有人在用该网站达成一些不可描述的交易. 你能找出幕后黑手,并使用网站的功能向他发送电子邮件进行检查吗?
注: e-mail地址不是flag.


blob.jpg

解题思路

信息收集

打开网页, 又是一个登录界面(post-form表单), 显示"输入正确的身份和密码来访问公司控制面板":
blob.jpg


看了一下页面源代码, 其大部分html内容并没有异常, 唯一有疑点的地方是自带的两个js文件:
blob.jpg


"myscripts.js"看上去挺可疑的, 但打开后里面只有一个简单的doProcess函数, 其作用是上传登录表单:
blob.jpg


又瞄了一眼"jquery-3.2.1.js", 但看上去像是一个正常的JQuery文件.


不管怎么样, 先随便试几个弱密码组合. burpsuite抓包得出post表单字段为name1和name2, 分别对应着用户名和密码, 且页面被重定向至 ~/main/index.php:
blob.jpg

在尝试中逐渐崩溃

首先对登录页面尝试了sql注入, bypass失败, 页面被重定向至失败页面(失败页面的源代码为纯html, 没有任何可疑之处).

随后使用dirbuster对网站目录进行了扫描, 扫描了差不多10分钟, 并没有特殊的发现.

最后使用hydra进行暴力破解, 自创了一个简单的用户名字典, 扫了差不多10分钟, 没有任何收货, 下为命令行:

hydra -L username.txt -P /usr/share/wordlists/rockyou.txt docker.hackthebox.eu http-post-form "/:name1=^USER^&name2=^PASS^:Wrong" -s 36159

怎么tm这么难! (/‵Д′)/~ ╧╧

柳暗花明又一村

不服气的我重新看了一下页面源码, 突然意识到JQuery文件还没有仔细看(但谁会把这么大的文件都看一遍啊). 气不过, 直接把整个文件下了下来, 用 WinMerge 直接与JQuery官方原版3.2.1文件进行比较. 果然发现了猫腻:
blob.jpg

其文件底部多了一大片自定义函数, 其中最可疑的就是doProcess, 仔细研究发现这个函数的作用是为post-form表单name1和name2字段赋值, 其中的值很可能就是管理员的用户和密码!:

function doProcess() 
{var form=document.createElement("form");   form.setAttribute("method","post"); form.setAttribute("action","main/index.php");   form.setAttribute("target","view"); var hiddenField=document.createElement("input");    hiddenField.setAttribute("type","hidden");  hiddenField.setAttribute("name","name1");   hiddenField.setAttribute("value","TXlMaXR0bGU");    var hiddenField2=document.createElement("input");   hiddenField2.setAttribute("type","hidden"); hiddenField2.setAttribute("name","name2");  hiddenField2.setAttribute("value","cDB3bmll");  form.appendChild(hiddenField2);     form.appendChild(hiddenField);  form.appendChild(hiddenField2); document.body.appendChild(form);            window.open('','view'); form.submit();}

总的来说, 可能是这个网站的管理员为了图方便, 把网站的用户名和密码加在了JQuery文件中. 在网站上线后, 没有删除原doProcess函数, 反而选择在myscripts.js里将其override.

进入控制面板

直接用在doProcess里定义的值作为用户面和密码, 果然进入了其"公司"内部的控制面板:
blob.jpg

前面几个公司目标里的都是一些废话, 整个页面唯一有用的就是在Main Taks里的 "Send EMail" 和 "Mailbox of Special Customers". 其中Send EMail的作用就是在题目描述中所说用来个可疑人员发送邮件的"网站功能", 但问题是如何找到可疑人员?

将目光放在了"Mailbox of Special Customers"中, 点击那串奇怪的字符会重新回到控制面板主页.直接查看页面源码只能看到部分html, 因为网页使用了frame来进行动态加载, 但这不妨碍我用浏览器审查元素, 立即有了可疑发现:
blob.jpg
一个可疑的gif文件, 有就是在标题偏右的类似于文件的小图标, 竟然在叫做secret_area_的目录里, 这名字有点太过明显了吧. 随后在该目录里盲猜与邮件名单相关的文件(如mail.txt, email.txt, mailbox.txt, mails.txt, emails.txt等), 果然有意外收获:
blob.jpg
得到了一个人员和邮箱地址的名单, 至于谁是那个可疑人员我不在乎, 把所有人的邮箱全都发一遍就行了.

You R Under Investigation.

群发"邮件"的方式有很多, 老实的人可以选择一个一个的复制粘贴, 但聪明的人->我更喜欢用burpsuite自带的intruder功能.
首先对在控制面板的Send EMail功能进行抓包, 并将其发送到Intruder中进行配置: 清除所有变量, 然后在将name1添加为变量:
blob.jpg

随后提取出mails.txt中的email地址部分并导入Payload Option[Simple list]中:
blob.jpg

点击开始攻击, 随后在众多的response中找到唯一与众不同的哪一个(长度):
blob.jpg

Get flag!

双击该结果, 并在response标签中找到flag:
blob.jpg

30 points get!


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。