做这web challenges根本停不下来啊, 超有成就感的! 花了近一个小时才完成这个挑战 明明同样是30分的题, 但为什么难度跟上一题差这么多呢 (/‵Д′)/~ ╧╧
HDC
挑战得分为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.
解题思路
信息收集
打开网页, 又是一个登录界面(post-form表单), 显示"输入正确的身份和密码来访问公司控制面板":
看了一下页面源代码, 其大部分html内容并没有异常, 唯一有疑点的地方是自带的两个js文件:
"myscripts.js"看上去挺可疑的, 但打开后里面只有一个简单的doProcess函数, 其作用是上传登录表单:
又瞄了一眼"jquery-3.2.1.js", 但看上去像是一个正常的JQuery文件.
不管怎么样, 先随便试几个弱密码组合. burpsuite抓包得出post表单字段为name1和name2, 分别对应着用户名和密码, 且页面被重定向至 ~/main/index.php:
在尝试中逐渐崩溃
首先对登录页面尝试了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文件进行比较. 果然发现了猫腻:
其文件底部多了一大片自定义函数, 其中最可疑的就是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里定义的值作为用户面和密码, 果然进入了其"公司"内部的控制面板:
前面几个公司目标里的都是一些废话, 整个页面唯一有用的就是在Main Taks里的 "Send EMail" 和 "Mailbox of Special Customers". 其中Send EMail的作用就是在题目描述中所说用来个可疑人员发送邮件的"网站功能", 但问题是如何找到可疑人员?
将目光放在了"Mailbox of Special Customers"中, 点击那串奇怪的字符会重新回到控制面板主页.直接查看页面源码只能看到部分html, 因为网页使用了frame来进行动态加载, 但这不妨碍我用浏览器审查元素, 立即有了可疑发现:
一个可疑的gif文件, 有就是在标题偏右的类似于文件的小图标, 竟然在叫做secret_area_的目录里, 这名字有点太过明显了吧. 随后在该目录里盲猜与邮件名单相关的文件(如mail.txt, email.txt, mailbox.txt, mails.txt, emails.txt等), 果然有意外收获:
得到了一个人员和邮箱地址的名单, 至于谁是那个可疑人员我不在乎, 把所有人的邮箱全都发一遍就行了.
You R Under Investigation.
群发"邮件"的方式有很多, 老实的人可以选择一个一个的复制粘贴, 但聪明的人->我更喜欢用burpsuite自带的intruder功能.
首先对在控制面板的Send EMail功能进行抓包, 并将其发送到Intruder中进行配置: 清除所有变量, 然后在将name1添加为变量:
随后提取出mails.txt中的email地址部分并导入Payload Option[Simple list]中:
点击开始攻击, 随后在众多的response中找到唯一与众不同的哪一个(长度):
Get flag!
双击该结果, 并在response标签中找到flag:
30 points get!
Comments | NOTHING