首页 网络安全 网站防护 查看内容

XSS绕过及防御(Web漏洞及防御)

2020-10-23 09:38 |来自: 互联网 2950 0

摘要: XSS攻击,指黑客利用网站漏洞把恶意的脚本代码(通常包括HTML代码和JS脚本)注入到网页中,当用户浏览网页时,就会执行其中的恶意代码(控制用户浏览器),对受害用户采取Cookie数据窃取、会话劫持、钓鱼欺骗等各种攻击。
关键词: XSS 用户 代码 浏览器 alert 属性 恶意 攻击 编码 函数

========== 实验环境 ==========

Windows Server 2018 R2

DVWA


========== 实验环境 ==========


XSS攻击,指黑客利用网站漏洞把恶意的脚本代码(通常包括HTML代码和JS脚本)注入到网页中,当用户浏览网页时,就会执行其中的恶意代码(控制用户浏览器),对受害用户采取Cookie数据窃取会话劫持钓鱼欺骗等各种攻击。

它对Web服务器没有直接危害,借助网站进行传播,使网站的用户受到攻击。

攻击者一般通过留言、电子邮件或其他途径向受害用户发送一个恶意的URL,当恶意URL被用户触发时,恶意脚本就会在受害者的计算机上执行。


造成XSS攻击的因素?

  1. Web浏览器的设计不安全,浏览器只执行和解析JS等脚本,不会判断数据和程序代码是否恶意。
  2. 输入和输出的交过过程中,没有做好安全防护。
  3. 团队协作开发,水平参差不齐,难免存在问题。
  4. 意识性不强
  5. 触发恶意代码的手段多样,无法做到完全防御
  6. XSS漏洞注入点多样

XSS漏洞的危害

攻击者通过注入如alert(/xss/)之类的JS代码来证明XSS漏洞的存在性,但没有真实地反映其危害性!

  1. 网络钓鱼,盗取用户账号。
  2. cookies窃取,伪造身份进行对网站的操作。
  3. 劫持用户(浏览器)会话,执行任意操作,如非法转账等。
  4. 利用JS弹出广告页面,刷流量。
  5. 网页挂马
  6. 恶意操作
  7. 客户端攻击
  8. 获取客户端信息(用户的浏览记录、IP、开放的端口)
  9. 控制受害者电脑向其他网站进行攻击
  10. 结合其他漏洞,如CSRF漏洞,实施进一步操作。
  11. 提升用户权限,渗透网站。
  12. 传播跨站脚本蠕虫


反射型XXS(非持久型XSS,一次性):主要用于将恶意脚本附加到URL地址参数中。

攻击者通过特定的手法,比如利用电子邮件,诱使用户去访问一个包含恶意代码的URL,当受害者触发时,恶意JS代码会直接在受害者主机上的浏览器执行。特点是,只在用户触发的时候,执行一次!

流程:

通常出现在网站的搜索栏,用户登入口,用来窃取客户端Cookie或进行钓鱼欺骗。


POC

<sCr<scrscRiptipt>ipt>OonN'"<>

过滤掉了<sCr<scrscRiptipt>OonN'"<>

DVWA

low:

过滤掉了<sCr<scrscRiptipt>,其他没有过滤!

源码:

构造:

<input onfocus=alert(/xss/) autofocus>

成功:

medium:

源码:

也只进行了<script>过滤,替换了成空!攻击手段同low一样!

<input onfocus=alert(/xss/) autofocus>


high:

impossible:

结论:

使用php中的htmlspecialchars函数把预定义的字符&、”、 ’、<、>转换为 HTML 实体

防止浏览器将其作为HTML元素!


存储型XSS:也叫持久型跨站脚本,攻击者事先将恶意JS代码上传或存储到漏洞服务器中,只要浏览包含恶意JS代码的页面就会被执行。

持久型XSS一般出现在网站的留言、评论等交互处,恶意脚本被存储到客户端或者服务器的数据库中,当用户浏览该网页时,服务器从数据库中读取恶意用户存入的非法数据,然后显示在页面中,在受害者电脑上的浏览器执行恶意代码。它不需要用户去单击URL进行触发,可以利用它渗透网站,挂马,钓鱼......

利用此XSS还能编写XSS蠕虫,能够在网站中实现病毒的几何数级传播!XSS蠕虫会直接影响网站的所有用户,一个地方出现XSS漏洞,网站下的所有用户都有可能被攻击。


low:

<sCr<scrscRiptipt>ipt>OonN'"<>


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

medium:

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


high:

<img src=1 onerror=alert(/xss/)>


impossible:

Message: <sCr<scrscRiptipt>ipt>OonN\'\"<>

通过使用htmlspecialchars函数,解决了XSS,但是要注意的是,如果htmlspecialchars函数使用不当,攻击者就可以通过编码的方式绕过函数进行XSS注入,尤其是DOM型的XSS。


DOM型XSS:通过修改页面的DOM节点形成的XSS,并不会将payload上传到服务器,没有与服务器端进行交互,如果DOM中的数据没有经过严格确认,就会产生DOM—based XSS漏洞

可能触发DOM型XSS的属性

document.referer

window.name

location

innerHTML

documen.write


low:

查看页面源代码:

document属于window 的一个子对象

window.location 包含 href 属性,直接取值赋值时相当于 window.location.href

window.location.href 当前页面完整 URL

document.location 包含 href 属性,直接取值赋值时相当于 document.location.href

document.location.href 当前页面完整 URL

decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码

插入的 javascript 代码可以在 decodeURL(lang) 被执行


http://192.168.10.128/DVWA-master/vulnerabilities/xss_d/?
default=English<script>alert(/xss/)</script>


meduim:

查看服务器端源码:

array_ke

本文出处: https://www.toutiao.com/i6873507407910142475/
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部