XSS漏洞:利用多次提交技巧实现存储型XSS

目录

搭建环境

XSS攻击

测试


xss系列往期文章:

初识XSS漏洞-CSDN博客

利用XSS漏洞打cookie-CSDN博客

XSS漏洞:xss-labs靶场通关-CSDN博客

XSS漏洞:prompt.mi靶场通关-CSDN博客

XSS漏洞:xss.haozi.me靶场通关-CSDN博客

本篇文章将会给大家分享一篇关于存储型XSS攻击的一个实验,并且这也是xss攻击的一个利用技巧,如果想了解的小伙伴就请继续往下看吧,ヾ(◍°∇°◍)ノ゙

搭建环境

实验环境:appcms:(http://www.appcms.cc/)

本来这个网站是用来进行测试的一个网站,但是现在无法进行访问了,因此这里我们可以去github上下载一个该网站的源码将网站放在本地来进行访问

下载地址:source-trace/appcms: http://www.appcms.cc/ (github.com)

下载完成后我们就可以在浏览器中输入该网站的路径来访问

注:这里需要开启Apache/Nginx+Mysql服务才可以正常进入

可以访问目录/install来安装需要的数据库和设置管理员账号密码:

点击安装

设置数据库的账号密码和后台登录账号密码

网站一般都会有一个管理员后台登录的页面,因此这里我们可以输入网址地址/admin来进行管理员账号登录

可以看到这里网站需要我们将admin文件夹名称修改一下为了保证安全,我们来修改一下

然后在访问这个文件:

可以看到这里就来到了后端登录页面,这里我们直接输入刚才创建时的账号,密码和安全码来进行登录:

可以看到成功的登录到了网站的后台管理员页面:

到此,前期的准备工作就已经准备完毕了

XSS攻击

这里我们可以利用该网站的评论功能,因为一般情况下网站用户的输入的评论都会被存储到对应的后台数据库中

在网站的首页我们点击进入这个产品的页面中:

可以看到这里的评论我们是可以提交内容的,那么可以来试试看提交的内容在后台是怎么展现的:

可以看到是正常显示在后端中的,那么不妨来试试在评论中提交一下弹窗代码

通过后端管理也是可以看到的,这里还是进行了接收,但是却并没有进行弹窗,说明这里是无法利用的

这里介绍一下通过多次提交+注释符的利用方式来进行xss攻击

比如下面这段JS代码:

<script>/*123454233312411*/alert('1') /*123123123243432*/</script>

执行结果:
 

可以看到使用这种方法我们可以使用/* */这对注释符,将所有的误用的数据注释掉,最后只剩下我们需要进行弹窗的代码即可。

那么我们不妨大胆一些,试试分多次提交看看是否可以成功:

但是不能打无准备的仗,这里我先将需要传入的数据进行规划,分三次提交,因为那个评论的展示顺序是越新的放在最上面,因此将最后的注释符我第一个进行提交:

第一次提交:*/alert(1)/*

第二次提交:*/</script>

第三次提交:<script>/*

这样这最后他们在数据库中还是可以拼接在一起的,并且还会将一些别的东西注释掉,最后会只剩下一个

<script>alert(1)</script>

下面开始实践

 

最后这里我需要模拟管理员登录到管理员后台,通过点击管理评论来触发存储型 xss漏洞

但是这里却并没有实现弹窗,这里查看了一下评论页面的前端代码发现代码确实传入进去了,但是被限制在了<div>标签中

再分析了一下这里的代码发现这里有一个ip地址

我们可以使用Burpsuite抓包,使用X-Forword-For来修改这里的ip地址来尝试逃出div的限制事项上面想要实现的效果,那么我们还是再次尝试一次:

因为X-Forwarde-For最大字符长度为20个字符,所以我们如何需要注入的xss payload 长度大于20需要分多次提交

第一次提交:

评论区提交:*/alert(1)/*

抓包提交:X-FORWARDED-FOR:*/</script>

第二次提交:抓包提交:X-FORWARDED-FOR:<script>/*

提交完成后的页面就会变成这样子: 

测试

然后现在如果模拟管理员去访问后台管理评论,点击评论管理页面就会直接进行弹窗!!! 

这就是利用appcms这个评论提交的这里的存储型漏洞点来演示了一下非常简答的利用多次提交来实现存储型xss攻击的小技巧

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

磁盘分区机制

lsblk查看分区 Linux分区 挂载的经典案例 1. 虚拟机增加磁盘 点击这里&#xff0c;看我的这篇文章操作 添加之后&#xff0c;需要重启系统&#xff0c;不重启在系统里看不到新硬盘哦 出来了&#xff0c;但还没有分区 2. 分区 还没有格式化 3. 格式化磁盘 4. 挂载 5. 卸载…

汇编语言----X86汇编指令

目录 1.汇编指令的构成 2.X86架构CPU中包含的寄存器 3.常见的x86汇编指令 &#xff08;1&#xff09;算数运算 &#xff08;2&#xff09;逻辑运算 &#xff08;3&#xff09;其他 4.AT&T格式 5.选择语句&#xff08;分支结构&#xff09; 6.循环语句 &#xff0…

huggingface学习 | 云服务器使用hf_hub_download下载huggingface上的模型文件

系列文章目录 huggingface学习 | 云服务器使用git-lfs下载huggingface上的模型文件 文章目录 系列文章目录一、hf_hub_download介绍二、找到需要下载的huggingface文件三、准备工作及下载过程四、全部代码 一、hf_hub_download介绍 hf_hub_download是huggingface官方支持&…

Linux中的共享内存

定义&#xff1a; 共享内存允许两个或者多个进程共享物理内存的同一块区域&#xff08;通常被称为段&#xff09;。由于一个共享内存段会称为一个进程用户空间的一部分&#xff0c;因此这种 IPC 机制无需内核介入。所有需要做的就是让一个进程将数 据复制进共享内存中&#xff…

力扣精选算法100题——串联所有单词的字串(滑动窗口专题)

本题链接——串联所有单词的字串 本题和找到字符串中所有字母异位词题目非常相似&#xff0c;思路都是一样。通过自己的大脑能发现其中的相似之处。 第一步&#xff1a;了解题意 就按实例来分析吧&#xff0c;这样更通俗易懂。 words["ab","cd","ef…

mysql从库重新搭建的流程

背景 生产环境上的主从集群&#xff0c;因为一些异常原因&#xff0c;导致主从同步失败。现记录下通过重做mysql从库的方式来解决&#xff0c;重做过程不影响主库。 步骤 1、在主库上的操作步骤 备份主库所有数据&#xff0c;并将dump.sql文件拷贝到从库/tmp目录 mysqldump …

Flutter 综述

Flutter 综述 1 介绍1.1 概述1.2 重要节点1.3 移动开发中三种跨平台框架技术对比1.4 flutter 技术栈1.5 IDE1.6 Dart 语言1.7 应用1.8 框架 2 Flutter的主要组成部分3 资料书籍 《Flutter实战第二版》Dart 语言官网Flutter中文开发者社区flutter 官网 4 搭建Flutter开发环境参考…

vue3-模版引用

模版引用 ref 属性 场景&#xff1a;需要直接访问底层 DOM 元素。 方法&#xff1a;使用特殊的 ref 属性。 <input ref"input">ref 属性 允许我们在一个特定的 DOM 元素或子组件实例被挂载后&#xff0c;获得对它的直接引用。 访问模板引用 小 Demo: 当 i…

Go 知识iota

Go 知识iota 1. 介绍2. 特性3. 原理4. 你真的理解了吗 1. 介绍 iota 是一个预定义的标识符&#xff0c;用于声明枚举常量。它在 const 声明中使用&#xff0c;表示连续的未类型化整数。其值从0开始&#xff0c;const声明块每增加一行&#xff0c;iota的值就会自增1&#xff0c…

优化您的服务请求,增强用户体验和服务交付

您的服务请求模板是否像一个复杂的迷宫&#xff0c;给您的团队带来延误和困惑&#xff1f;您的技术人员是否厌倦了为了解最终用户的需求而与他们来回奔波&#xff1f;强大且可定制的请求模板可能正是您所需要的&#xff01; 服务交付团队&#xff08;尤其是 IT&#xff09;的…

javascript入门分享(附:javascript基础入门视频教程)

javascript入门分享&#xff08;附&#xff1a;javascript基础入门视频教程&#xff09; 一、javascript入门了解 JavaScript&#xff08;简称“JS”&#xff09;是一种具有函数优先的轻量级&#xff0c;解释型或即时编译型的编程语言。 虽然它是作为开发Web页面的脚本语言而出…

Node.js Stream.pipeline() Method

Why Stream.pipeline 通过流我们可以将一大块数据拆分为一小部分一点一点的流动起来&#xff0c;而无需一次性全部读入&#xff0c;在 Linux 下我们可以通过 | 符号实现&#xff0c;类似的在 Nodejs 的 Stream 模块中同样也为我们提供了 pipe() 方法来实现。 未使用 Stream p…