当前位置: 首页 > ops >正文

XSS的学习笔记

xss的原理

        跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。XSS攻击针对的是用户层面的攻击!

xss的分类

反射性xss

        反射型XSS 是非持久性、参数型的跨站脚本。反射型XSS JS 代码在Web 应用的参数(变量)中,如搜索框的反射型XSS。在搜索框中,提交PoC[scriptalert(/xss/)/script],点击搜索,即可触发反射型XSS。注意到,我们提交的poc 会出现在search.php 页面的keywords 参数中。

例题1

很明显输入的值被传到h标签里了

例题2

input表单的value得到值提交给h标签

可以看到<>在input中是正常的,到h标签中就被转义了,所以我们只能从input中想办法

写">闭合input,再写恶意代码,就OK了

例题3

 aaa传值给了submit

发现input也转义<>,

例题4

将<>直接转换成空格

还可以用on事件,

例题5

不可以用on事件

看源代码,确实过滤了,但是input却没有转义<>

构建一个a标签

例题6

替换了href

 

用大写的HREF就绕过了

用属性大写onfocus也是可以绕过的

例题7

替换很多变成空格

通过过滤关键字中间插入关键字的方式成功绕过

例题8

限制条件更加多,将"也过滤了

input value的值传给a标签,所以只要进行html实体编码就可以绕过input的限制,传给a标签的href属性,href在解析前html实体编码刚好解码

将javascript:alert(1)进行html实体编码

例题9

在8的基础上加上必须有http://的字段,所以在最末尾加上//http://就OK了

例题10

给了个值keyword,但是用函数过滤了<>,所以找input,只有t_sort有接受值,但是它hidden,所以我写了type覆盖了后面的。

 

存储型xss

        存储型XSS 是持久性跨站脚本。持久性体现在XSS 代码不是在某个参数(变量)中,而是写进数据库或文件等可以永久保存数据的介质中。存储型XSS 通常发生在留言板等地方。我们在留言板位置留言,将恶意代码写进数据库中。此时,我们只完成了第一步,将恶意代码写入数据库。因为XSS 使用的JS 代码,JS 代码的运行环境是浏览器,所以需要浏览器从服务器载入恶意的XSS 代码,才能真正触发XSS。此时,需要我们模拟网站后台管理员的身份,查看留言。

例题1

首先,该提交能入库

尝试在评论区评论

发现实体编码转义,标签变成普通字符

输入两次评论后发现,

这里我们可以看到并没有完成闭合,但是评论回显是倒序出现的,同时中间夹着我们本机的IP地址,这个IP我们是否可以进行利用,从而配合我们的评论完成XSS注入。其实是可以的,这里我们需要用到X-FORWARDED-FOR来进行HTTP请求端真实IP伪造,通过这个字段将IP地址进行伪造为我们使用的payload。 思路确定了,我们使用多次注入的方式,同测试一样完成我们的闭合,即:

正常payload:

<script>alert(11111)</script>

达成的效果(将中间的代码注释掉):

<script>/**/alert(11111)/**/</script>

多次注入:
<script>/*
*/alert(11111)/*
*/</script>

将payload多次拆分,使用两条留言完成注入:

第一次:
内容:*/alert(11111)
IP伪造为:X-FORWARDED-FOR: */</script>
第二次:
内容:随意都行
IP伪造为:X-FORWARDED-FOR: <script>/*

然后使用Burp进行抓包改包(伪造IP):

第一次

第二次

闭环形成,就等管理员审核

用xss hunter获取信息

http://172.16.100.1:3000/hook.js换成hunter提供的网址

DOM型XSS

DOM XSS 比较特殊。owasp 关于DOM 型号XSS 的定义是基于DOM XSS 是一种XSS 攻击,其中攻击
payload由于修改受害者浏览器页面的DOM 树而执行的。其特殊的地方就是payload 在浏览器本地修
DOM 树而执行, 并不会传到服务器上,这也就使得DOM XSS 比较难以检测。

例题1

查看源代码,发现js源代码
点进去
发现可以利用dom破坏的点
可以利用二层集合的关系覆盖window.defaultAvatar的原始数据
当再次输入新的没有头像的评论时就开始触发我们的xss
第二次随意评论

http://www.xdnf.cn/news/15801.html

相关文章:

  • ChatIM项目语音识别安装与使用
  • 拓展面试题之-rabbitmq面试题
  • [Python] -项目实战8- 构建一个简单的 Todo List Web 应用(Flask)
  • pip关于缓存的用法
  • Python Web框架详解:Flask、Streamlit、FastAPI
  • Pinia 核心知识详解:Vue3 新一代状态管理指南
  • 算法-递推
  • 在通信仿真场景下,Python 和 MATLAB 的性能差异主要体现在运行效率、并行计算、库支持、开发效率等方面。以下是基于最新资料的对比总结
  • AS32X601 系列 MCU 硬件最小系统设计与调试方案探析
  • Web-SQL注入数据库类型用户权限架构分层符号干扰利用过程发现思路
  • 基于SHAP的特征重要性排序与分布式影响力可视化分析
  • 两个路由器通过不同的网段互联
  • 【PTA数据结构 | C语言版】邻接矩阵表示的图基本操作
  • TD3与SAC强化学习算法深度对比
  • 六边形滚动机器人cad【7张】三维图+设计书明说
  • Github 贪吃蛇 主页设置
  • day057-docker-compose案例与docker镜像仓库
  • Fortinet FortiWeb sql注入导致RCE漏洞复现(CVE-2025-25257)
  • XSS漏洞总结
  • 前端基础知识Vue系列 - 11(Vue组件之间的通信方式)
  • CVE-2022-41128
  • 2024年全国青少年信息素养大赛Scratch编程挑战赛 小低组初赛
  • 深入解析Hadoop中的EditLog与FsImage持久化设计及Checkpoint机制
  • [学习] 双边带调制 (DSB) 与单边带调制 (SSB) 深度对比
  • 【工具变量】地级市城市包容性绿色增长数据(2011-2023年)
  • 明细列表,明细grid中的默认按钮失效,配置按钮失效
  • 深入解析Linux文件重定向原理与dup2系统调用
  • QT窗口(8)-QFileDiag
  • ServletConfig 接口详解
  • 在 Solidity 中,abi是啥