在实际攻防中经常用到一些漏洞模块去测试目标是否存在对应漏洞,比如下列模块:
exploit/windows/smb/psexec
exploit/multi/http/tomcat_mgr_upload
exploit/windows/smb/ms08_067_netapi
exploit/windows/smb/ms17_010_eternalblue (永恒之蓝)
exploit/windows/rdp/cve_2019_0708_bluekeep_rce (BlueKeep)
exploit/windows/smb/smb_doublepulsar_rce (DoublePulsar)
exploit/multi/http/apache_mod_cgi_bash_env_exec (Shellshock)
但是经常遇到Exploit completed, but no session was created”,漏洞利用完成但是无法创建会话(利用完成意思是msf利用流程走完,但不代表利用成功!),如上图所示的问题,原因有哪些?
例如目标为32位Windows架构的服务器,但是我们使用的是64位的payload,所以利用失败,会话无法创建。
漏洞使用前尽可能多的搜集目标信息,确保漏洞利用模块使用的payload适配架构能和目标架构匹配。
确保会话成功创建需要正确配置RHOST/LHOST/SRVHOST,比如目标地址为192.168.0.2,但是你在配置RHOST参数值的时候写成了192.168.0.3,那必然无法利用成功。其他参数同理,具体配置情况可以在模块在使用show options命令查看具体参数说明。
确保漏洞利用模块参数配置正确!
这种情况一般适用测试人员使用Vmware等虚拟机安装并使用kali里面的msf。
虚拟机网络适配一般情况:
如果你使用的是NAT模式,虽然你能访问(远程)目标机器,但是(远程)目标机器却无法访问你,所以导致会话创建失败。
目标和kali处于用一个网段的情况:修改VM虚拟机为桥接连接
目标处于公网但是kali处于本地网络(一般家庭网络或不具备公网ip的机器):使用端口转发工具将本地流量转发到公网确保目标机器和我们的kali能访问互通,常用工具网站:
Ngrok.com
Portmap.io
Pagekite.net
所有这些云服务都提供免费的基本端口转发(注册后),能够使用这些解决方案中的任何一个接收meterpreter或shell会话。设置完成后,您可以在反向负载(LHOST)中使用分配的公共IP地址和端口。请注意,如果您使用带有SRVHOST选项的漏洞利用程序,则必须设置两个单独的端口转发.
payload上传到目标服务器后但是服务存在AV/EDR等,payload就会被查杀,所以导致会话创建失败。
免杀!免杀!免杀!
可以使用自带的编码器进行混淆操作,逃避杀软检测,但是国内杀软基本将msf加入套餐,成功率非常小。二是尝试去github搜索免杀开源工具,一般360、火绒绕过还是没问题的。
msf为开源利用框架,内置的漏洞利用脚本为社区人员贡献,所以脚本质量参差不齐,所以可能它本身就存在问题无法利用,或者说开发者测试不够全面,考虑不周,有些环境没考虑测试到,所以导致利用失败!
一是升级或降级你的MSF版本,比如MSF5升级为MSF6试一试
二是利用其他脚本进行测试获取shell!
有时候用MSF扫描探测发现目标存在某一漏洞版本的系统,比如e-office 9上传漏洞,但是他打了补丁,版本信息未更新,所以也有可能导致利用失败!
放弃!
当然你也可以研究目标系统,挖掘新的漏洞!
kali机器或者目标机器存在防火墙都可能出现无法创建会话的问题。
比如目标机器不出网或者防火墙设置了严格出站规则,那么目标机器是无法和我们的kali建立主动通信的,也是我们常说的反向连接.
msf中反向shell模块:meterpreter/reverse_https
这时候我们可以使用正向连接方式进行反弹shell,建立会话。
msf中正向shell模块:
shell/bind_tcp
shell/bind_tcp_rc4
meterpreter/bind_tcp
meterpreter/bind_tcp_rc4
简单理解就是正向不行就换反向shell,如果都不行就暂时换个思
路!
参考:https://www.infosecmatter.com/why-your-exploit-completed-but-no-session-was-created-try-these-fixes/