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

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.dtcms.com/a/288546.html

相关文章:

  • vscode环境下c++的常用快捷键和插件
  • tabBar设置底部菜单选项、iconfont图标(图片)库、模拟京东app的底部导航栏
  • 基于深度学习的日志分析系统实现方案,使用Python构建CNN模型进行日志诊断
  • 在NLP深层语义分析中,深度学习和机器学习的区别与联系
  • 苍穹外卖|项目日记(完工总结)
  • Mobile Neural Network (MNN) 3.2.1
  • docker-compose启动前后端分离项目(单机)
  • ABP VNext + Playwright E2E:前后端一体化自动化测试
  • 秒赤Haproxy配置算法
  • The law and schools
  • 锂电池充电芯片
  • 文档表格标题跑到表格下方,或标题跟表格空隔太大如何处理
  • 【项目分享】动手做一个TypeC转TTL模块(附带原理图)
  • Lock4j 使用说明
  • Input输入和Screen相关
  • 一键创建netcore8.0项目
  • 电机相关常见名词
  • 国产电科金仓数据库金仓KES V9 2025:AI时代的数据库融合标杆
  • Temperature 是在LLM中的每一层发挥作用,还是最后一层? LLM中的 Temperature 参数 是怎么计算的
  • 信息学奥赛一本通 1579:【例 5】皇宫看守 | 洛谷 P2458 [SDOI2006] 保安站岗
  • 明细列表,明细grid中的默认按钮失效,配置按钮失效
  • Solidity 中的`bytes`
  • [AI风堇]基于ChatGPT3.5+科大讯飞录音转文字API+GPT-SOVITS的模拟情感实时语音对话项目
  • min-max容斥学习笔记
  • 线性回归问题
  • MC0463四大名著-水浒签到
  • 智慧酒店房价牌系统,国际版,海外版 的设计与应用价值研究———仙盟创梦IDE
  • NX二次开发常用函数——从一个坐标系到另一个坐标系的转换(UF_MTX4_csys_to_csys )相同体坐标转化
  • 文献精读:青藏高原东北部青海湖流域沿海拔分布的蒸散量及其主要影响因素
  • 问津集 #1:Rethinking The Compaction Policies in LSM-trees