首页 > 其他分享 >XSS漏洞利用

XSS漏洞利用

时间:2024-04-02 16:29:15浏览次数:18  
标签:XSS DOM URL 恶意代码 用户 alert 利用 漏洞

  1. 反射型(非持续型)
  2. 存储型(持续性)
  3. DOM型
    XSS漏洞挖掘与绕过

XSS原理
xss又叫(css)跨站脚本攻击。因为与html中css样式同,所以称为xss。
属于web应用中计算机安全漏洞,是恶意的web访问者将脚本植入到提供用户使用的页面中,通常是使用JS编写的危险代码,当用户使用浏览器访问页面时,脚本会被执行,从而达到攻击者目的
XSS攻击最终目的是在网页中嵌入客户端恶意代码

反射型
反射型xss也称作非持久性、参数型跨站脚本。主要用于将恶意脚本附加到URL地址的参数中
漏洞特征:前端执行、不会储存在后端数据库,反射是一来一回的过程,具有一次性

我们呢可以构造一次链接,执行访问,原理是通过给别人发送这些带有恶意脚本的参数的URl,当这个URL地址被打开的时候,特定的这个参数代码会被浏览器解析,执行,如此就可以获得别人的cookie了,进而盗号登录

靶场DVWA在这里插入图片描述
反射型一来一回的,你输入什么(不为空)会跟你返回来

<script>alert("文本" )</script> 产生一个带有确认按钮对话康
<script>confirm("文本")</script>拥有确认和取消
<script>prompt("文本","默认值")</script>可以输入文字的框

执行这个会跟你弹窗,有弹窗就是XSS,有些网站即使你在输入的可以输入,但是不会有弹窗
在这里插入图片描述
这是源码,这个函数是检查数组中是否存在键名,存在返回true,&&后面是看变量的值是否为空
可以发现,没有对用户输入的数据进行过滤

反射型XSS形成的一个过程
攻击者构造出特殊的 URL,其中包含恶意代码。
用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器.用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。

存储型
此类XSS不需要用户单击特定URL就能执行跨站脚本攻击者事先将恶意JS代码上传或存储到漏洞服务器中
当受害者浏览器包含此恶意JS代码的页面就会执行恶意代码
漏洞特征:持久性,前端执行,储存在后端数据库
存储型 XSS 常出现在网站的留言版、评论、博客日志等交互处

存储型XSS数据交互过程:
用户输入数据->后端执行php代码->存入数据库某张表->返回数据给php页面->回显前端

靶场DVWA
在这里插入图片描述
在name中它限制我们的长度只有10,我们试着改改,能在前端改的尽量在前端改。前端修改是一次性的,不刷新或者啥的就会没有了
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
就会把数据存储到数据库中,等我下次再点击这个存储型漏洞时,就会出现弹窗

源码
在这里插入图片描述

第一行它判断了是否接受名为’btnSign’的post请求
isset函数:用于检测变量是否已设置并且非 NULL。
trim( )函数的作用:移除字符串两侧的空白字符或者其他其他自己定义的字符
stripslashes() 函数删除由 addslashes() 函数添加的反斜杠
mysqli_real_escape_string() 函数:转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集, 这里防止sql注入
die():输出一条消息,并退出当前脚本
mysql_query(query):执行一条mysql查询
mysql_error返回上一个mysql操作产生的文本错误消息

存储型XSS形成的一个过程
攻击者将恶意代码提交目标网站的数据库中
用户打开目标网站时,网站服务端将恶意代码从数据库取出,拼接在 HTML 中返回给浏览器。用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
这种攻击常见于带有用户保存数据的网站功能,如论坛发帖、商品评论、用户私信等。

DOM型
漏洞特征:一次性的、前端执行、不会储存在后端数据库, 程序执行不依赖与服务器端的数据
web server不参与,仅仅涉及到浏览器的XSS

DOM XSS的XSS代码不需要服务端解析响应的直接参与,触发XSS的是浏览器端的DOM解析

用户在客户端输入的数据如果包含了恶意JS脚本,而这些脚本没有经过适当的过滤,应用程序就可能受到基于DOM的XSS攻击。

自己弹自己–dom

DOM是JS操作网页的接口,全称为“文档对象模型”(Document Object Model)它的作用是将网页转为一个JS对象,从而可以用脚本进行各种操作(比如增删内容)

DOM节点
文档是由节点构成的集合,在DOM里存在许多不同类型的节点,主要分为3种:元素节点、文本节点、属性节点
1、元素节点
在“购物清单”例子中,< body >、< p>< u>之类的元素在文档中的布局形成了文档的结构,它们即是元素节点。
2、文本节点
文档通常会包含一些内容,这些内容多数日文本提供,如前面的例子中< p>包含着文本“欢迎购买它就是一个文本节点。
3、属性节点
元素或多或少都有一些属性,属性用于对素做出更具体的描述

DOM型原理
XSS原理客户端的脚本程序可以通过DON动态地检查和修改页面内容
程序执行不依赖于服务器端的数据,从客户端获得DOM中的数据并在本地执行
浏览器用户可以操作DOM中的一些对象 。例如:URL、location
用户在客户端输入的数据如果包含了恶意javaScript脚本,而这些脚本没有经过适当的过滤和消毒应用程序就可能受到基于DOM的XSS攻击

三种类型的XSS区别

DOM与前两个不同是:漏洞发生原因跟服务器解析无关,纯粹是JS代码读取了URL内容导致

dom-xss取决于输出位置,并不取决于输出环境,因此domxss既有可能是反射型的,也有可能是存储型的

因此检测JS代码中可能触发DOM型XSS的属性如下
document.referer属性
window.name属性
location 属性
innerHTML属性
documen.write 属性(可以在当前执行我们script标签之后,去插入任意的HTM源码)

靶场:pikachu
在这里插入图片描述
遇到这么一个输入框,点击一下回显,再点击这个超链接时啥都没直接上最简单的语句
在这里插入图片描述

<script>alert(1)</script>

也没啥,但是当你鼠标放在超链接上时你会发现它会把语句完整的回显出来,说明他进行过拼接,但是点击超链接后,会弹出403错误,然后我们可以看看源码
在这里插入图片描述
在这里插入图片描述
找到what do you see关键字,看看怎么写的
这里有dom值,在最后的div标签引用了dom值
当我们的js代码执行后会将这个a标签和我们输入的字符串连接起来
输入任意数值点击提交,会在表单下面新生成一个 < a >标签,输入的数值保存在 href 属性中
在这里插入图片描述
后半段的代码不用看,主要是这里,假设拼接在href里面,首先先把href的值闭合掉,添加单引号或则里面用#
然后可以使用onclick函数

#' onclick="alert(111)"

扩展

鼠标事件:
onclick:在鼠标左健点击弹起之后触发的事件,即一次完整的鼠标点击过程。过程完成瞬间触发函数。
onm ousedown:事件会在鼠标按键被按下时发生。
onm ouseup:事件会在松开鼠标按键时触发。
onm ouseover:属性在鼠标指针移动到元素上时触发。
onm ouseout: 属性在鼠标指针移动到元素外时触发。
onm ouseenter:属性在鼠标指针移动到元素上时触发,

onmouseover和onmouseenter唯一的区别是 onm ouseenter 事件不支持冒泡 。
onmouseleave:属性在鼠标指针移动到元素外时触发,
onmouseout和onmouseleave唯一的区别是 onm ouseleave 事件不支持冒泡 。

在这里插入图片描述
DOM型XSS形成的一个过程
攻击者构造出特殊的 URL,其中包含恶意代码。用户打开带有恶意代码的 URL。用户浏览器接收到响应后解析执行,前端JavaScript 取出 URL 中的恶意代码并执行。恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。

DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。

XSS漏洞挖掘与绕过

数据交互(输入/输出)的地方最容易产生跨站脚本。因此,我们最重要的是考虑哪里有输入、输入的数据在什么地方输出,一般常会对网站的输入框、URL参数、COOKIE、POST表单、HTTP头内容进行测试。

手工测试XSS

  • 找到测试点(搜索框、留言板)
  • 根据测试流程首先实验一些特殊符号的输入。发现可以正常输出,说明后台并没有进行相关的过滤,例子:'<>?"&/6666
  • 如果有过滤则进行相关的绕过、

XSS常见POC

  • 常见XSS语句标签,< script>
    < script>alert(1)</ script>
    < script src=http://baidu.cn/xss/xss.js></ script>
    '>< script>alert(1)</ script>

  • 常见XSS语句标签,< img>
    < img src=x οnerrοr=alert(‘xss’)> 单引号被过滤可以用/
    < img src=javascript:alert(1)> 版本,E7.0|IE6.0 才能执行
    < img src=# οnmοuseοver=“alert(1)”>
    src应该接路径,x明显不是路径那么通过前面的错误会触发onerror函数

  • 常见XSS语句标签,< input>
    < input οnclick=alert(3)>

  • 常见XSS语句标签,< a>
    “> < a href=javascript:alert(‘xss’)>xss
    “>< a href=”” οnclick=“alert(1)”>xss

XSS漏洞绕过方式

大小写绕过 < ScRiPt>alert(1)</ ScRiPt>
双写绕过 <sc< script>ript>alert(/xss/)</ script>
反引号绕过 ``绕过单双引号的过滤
关闭标签(利用<>关闭标签) ">< script>alert(1)</ script>
超链接标签 < a href=>1</ a>
图片链接绕过< img src=1 οnerrοr=alert(1)>
编码绕过(八进制、十进制、十六进制编码、html实体编码、url编码、base64)空格、回车、换行符、tab、混淆

XSS漏洞之防御手段

  • CSP内容安全策略
    Content Security Policy
    禁止加载外域代码,防止复杂的攻击逻辑。
    禁止外域提交,网站被攻击后,用户的数据不会泄露到外域。禁止内联脚本执行(规则较严格,目前发现 GitHub 使用)
    禁止未授权的脚本执行(新特性,Google Map 移动版在使用)
    网站通过发送CSP头部告诉浏览器什么是被授权执行,以及什么是被禁止

  • 通过设置HttpOnly防止cookie被窃取

  • 输入输出检查(包括前端js和后端php)

输出编码主要有URL、HTML、JS
在这里插入图片描述在这里插入图片描述
可以采用白名单验证或者黑名单验证方法。

  • 白名单验证:对用户提交的数据进行格查,只接受指定长度范围内、采用适当格式和预期字符的输入,其余一律过滤

  • 黑名单验证:对包含XSS代码特征的内容进行过滤,如"<“、”>“、“script”、”#"等

  • ·对所有输出字符进行HTML编码
    ‘<’ 转成& lt;
    ‘>’ 转成& gt;
    ‘&’ 转成& amp;
    " 转成& quot;
    ’ 转成& #39;

标签:XSS,DOM,URL,恶意代码,用户,alert,利用,漏洞
From: https://blog.csdn.net/2302_79885863/article/details/137208959

相关文章

  • 业务逻辑支付漏洞
    支付原理支付漏洞原理支付漏洞绕过思路支付原理在业务安全方面,支付原理主要涉及到支付过程中的身份验证就、风险控制和交易保障等方面。具体来说,支付机构通常会采用多种手段来确保支付过程的安全性身份验证:支付机构会对买家和卖家的身验证,以确保只有合法的用户才能进......
  • 【漏洞复现】用友U8-Cloud FileServlet接口存在任意文件读取漏洞
    免责声明:文章来源互联网收集整理,文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者......
  • 中国联通提供漏洞扫描服务有哪些优势
    产品优势1.强大的漏洞管理平台:Tenable.SC中国联通选择与业界权威的Tenable合作,引入其旗舰产品Tenable.SC作为漏洞管理核心平台。Tenable.SC以其卓越的性能和市场领先地位,赢得了监管机构的广泛认可,被誉为扫描速度最快、扫描准确率最高的产品。在Gartner连续多年的报告中,Tenable......
  • vue中表单修改提交前利用watch找出新数据和原来数据之间的改动
    <template><div><[email protected]="submitForm"><inputv-model="formData.name"type="text"placeholder="Name"><inputv-model="formData.email"type......
  • intigrit-0422原型链配合xss
    题目链接:https://challenge-0422.intigriti.io/页面如下:查看源代码该窗口由iframe实现直接打开源地址查看源码这段代码可以为html页面添加内容functionmain(){constqs=m.parseQueryString(location.search)letappConfig=Object.create(n......
  • 利用甘特图实现精细化项目管控
    在项目管理中,通过精细化管控,项目经理能够有效规划、监督和协调各项任务,从而最大限度控制风险,优化资源配置,并确保按时、按质、按量完成项目目标。而在众多项目管理工具中,甘特图无疑是实现精细化项目管控的利器。zz-plan是一个非常好用的在线甘特图制作工具,一个好用的甘特图......
  • Gitlab渗透的深入利用及知识点总结
    一、版本探测http://url/assets/webpack/manifest.json 将该json与GitHub某个数据库比对https://github.com/righel/gitlab-version-nse/blob/main/gitlab_hashes.json获取对应的版本信息二、常见漏洞给一个大佬总结的很全的清单:https://www.moonsec.com/7495.html这里......
  • 红队笔记10:pWnOS2.0打靶流程-whatweb指纹识别-searchsploit搜索漏洞利用getshell(vulnh
    目录开头:1.主机发现和端口扫描2.80端口- whatweb指纹识别-searchsploit搜索漏洞并利用whatweb指纹识别:searchsploit搜索历史漏洞:什么是perl?SimplePHPblog登录成功-图片上传getshell3.提权-敏感文件泄露密码泄露尝试登录 4.总结:开头:学习的视频是哔哩哔哩红......
  • shiro的rememberMe各种漏洞一刀切解决
    rememberMe的低版本AES固定密码导致的漏洞,高版本仍然有被爆破,穷举的风险等。这种东西总是在安全检测的时候被拿出来说事儿,然而项目中并未开启rememberMe,也就是说压根不需要这个功能。那此时采用重写代码来直接杜绝这东西即可,任凭它怎么检测,已经没有这个口子了。跟踪源码会发现,......
  • 【漏洞复现】海康威视频编码设备接入网关存在信息泄露漏洞
    一、漏洞简介杭州海康威视数字技术股份有限公司视频编码设备接入网关存在信息泄露漏洞,攻击者可利用该漏洞获取敏感信息。二、影响版本HIKVISION-视频编码设备接入网关三、资产测绘fofa:app="HIKVISION-视频编码设备接入网关"特征四、漏洞复现地址>>>漏洞详情及批量......