| 关键词: XSS 用户 代码 浏览器 alert 属性 恶意 攻击 编码 函数 |
========== 实验环境 ========== Windows Server 2018 R2 DVWA ========== 实验环境 ========== XSS攻击,指黑客利用网站漏洞把恶意的脚本代码(通常包括HTML代码和JS脚本)注入到网页中,当用户浏览网页时,就会执行其中的恶意代码(控制用户浏览器),对受害用户采取Cookie数据窃取、会话劫持、钓鱼欺骗等各种攻击。 它对Web服务器没有直接危害,借助网站进行传播,使网站的用户受到攻击。 攻击者一般通过留言、电子邮件或其他途径向受害用户发送一个恶意的URL,当恶意URL被用户触发时,恶意脚本就会在受害者的计算机上执行。 造成XSS攻击的因素?
XSS漏洞的危害 攻击者通过注入如alert(/xss/)之类的JS代码来证明XSS漏洞的存在性,但没有真实地反映其危害性!
反射型XXS(非持久型XSS,一次性):主要用于将恶意脚本附加到URL地址参数中。 攻击者通过特定的手法,比如利用电子邮件,诱使用户去访问一个包含恶意代码的URL,当受害者触发时,恶意JS代码会直接在受害者主机上的浏览器执行。特点是,只在用户触发的时候,执行一次! 流程: 通常出现在网站的搜索栏,用户登入口,用来窃取客户端Cookie或进行钓鱼欺骗。 POC: ![]() 过滤掉了<sCr<scrscRiptipt>OonN'"<> DVWA low: ![]() 过滤掉了<sCr<scrscRiptipt>,其他没有过滤! 源码: ![]() 构造: 成功: ![]() medium: 源码: ![]() ![]() 也只进行了<script>过滤,替换了成空!攻击手段同low一样! ![]() high: ![]() ![]() impossible: ![]() ![]() 结论: 使用php中的htmlspecialchars函数把预定义的字符&、”、 ’、<、>转换为 HTML 实体, 防止浏览器将其作为HTML元素! 存储型XSS:也叫持久型跨站脚本,攻击者事先将恶意JS代码上传或存储到漏洞服务器中,只要浏览包含恶意JS代码的页面就会被执行。 ![]() 持久型XSS一般出现在网站的留言、评论等交互处,恶意脚本被存储到客户端或者服务器的数据库中,当用户浏览该网页时,服务器从数据库中读取恶意用户存入的非法数据,然后显示在页面中,在受害者电脑上的浏览器执行恶意代码。它不需要用户去单击URL进行触发,可以利用它渗透网站,挂马,钓鱼...... 利用此XSS还能编写XSS蠕虫,能够在网站中实现病毒的几何数级传播!XSS蠕虫会直接影响网站的所有用户,一个地方出现XSS漏洞,网站下的所有用户都有可能被攻击。 low: ![]() ![]() ![]() ![]() medium: ![]() ![]() high: ![]() ![]() impossible: ![]() 通过使用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) 被执行 ![]() meduim: 查看服务器端源码: array_ke |
| 本文出处: https://www.toutiao.com/i6873507407910142475/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|