WebGoat——LAB跨站脚本攻击

LAB:Cross Site Scripting跨站脚本攻击
一、题目
Stage1:执行一个存储式的跨站脚本攻击。
作为TOM,在编辑个人简历的页面“街区”
信息一栏中,实施一个存储式跨站脚本攻击。验证用户“Jerry”受到这一攻击的影响。
PS:用户的密码是账号名的首字母。

二、课程主题
WebGoat——LAB跨站脚本攻击
课程计划:如何实现跨站脚本攻击
概念:输入验证是一个很好的方法,尤其是验证那些以后将用作操作系统命令、脚本和数据库查询的输入。尤为重要的是,这些内容将会永久的存放在那里。应当禁止用户创建消息内容。用户的信息被检索时,可能导致其他用户加载一个不良的网页或不良的内容。当一个未经验证的 用户输入一个HTTP响应时,XSS攻击也可能会发生。在一个反射式XSS攻击中,攻击者会利用脚本精心制作一个URL并通过将其发送到其他网站、电子邮件、或其他方式骗取受害者点击它。
总体目标:
在这个练习中,目标是执行存储和反射XSS攻击,这种攻击可以通过在web应用程序中调整代码来防护这种攻击。

三、操作步骤
(1)登录用户名Tom Cat(employee),密码为tom。
WebGoat——LAB跨站脚本攻击
(2)选中Tom Cat,点击“ViewProfile”按钮。
WebGoat——LAB跨站脚本攻击

(3)在地址栏中,输入攻击语句< script>alert(“hacked”);< /script>
WebGoat——LAB跨站脚本攻击

点击“UpdateProfile”按钮,并登出系统。
此时的页面效果:
WebGoat——LAB跨站脚本攻击
WebGoat——LAB跨站脚本攻击
当其他用户登录进系统时,查看Tom的简历,便会弹出以上内容,至此,攻击实现。

Stage2 使用输入验证阻止存储式XSS攻击
WebGoat——LAB跨站脚本攻击

步骤2的目标是对Stage1中出现的漏洞进行修复,在数据被写入数据库之前阻止存储式跨站攻击脚本,并且验证David用户不会受到攻击的影响。
这一题需要在开发版中完成。

操作步骤:
通过将放置在org.owasp.webgoat.lessons.CrossSiteScripting包中的UpdateProfile.java类中添 加如下代码,可防止此类攻击。

String regex = “[\s\w-,]*”; String stringToValidate = firstName+lastName+ssn+title+phone+address1+address2+ startDate+ccn+disciplinaryActionDate+ disciplinaryActionNotes+personalDescription;
Pattern pattern = Pattern.compile(regex); validate(stringToValidate, pattern);

这段验证代码只允许\s = whitspace: \t\n\x0B\f\r,\w = word: a-zA-Z_0-9 通过验证。使用其他字符将会抛出验证异常。

Stage3 存储型XSS攻击重访问
一、题目
雇员“Bruce”的个人信息在预载入时携带了存储型 XSS 攻击代码。验证 David 帐号仍然受影响,即使 Stage2 中做过相关的修复。
二、操作步骤
以用户 David,密码 david 登录,然后浏览 Bruce 的信息,即可完成。

此步骤更多的是完成一个验证的任务。

WebGoat——LAB跨站脚本攻击
Stage4 使用输出编码阻止存储型XSS
一、题目
修改代码功能,从数据库中读取数据后阻止跨站攻击代码。同时回到 Stage3 验证 David 用户不受 Bruce 个人信息页面攻击影响。

二、操作步骤
WebGoat——LAB跨站脚本攻击
本题需要在开发版中完成。
解决思路:
在 org.owasp.webgoat.util.HtmlEncoder 类中添加一个 encode(String s)静态方法。这个方法更改所有字符串中的特殊字符。
使用org.owasp.webgoat.lessons.CrossSiteScriptin g class 类中的 getEmployeeProfile 这个方法。用 HtmlEncoder.encode(answer_results.getString (someString))替换所有 answer_results.getString(someString),即可完成。

Stage5 反射型XSS
一、题目
使用雇员搜索页面漏洞构造一个包含反射型 XSS 攻击代码的 URL。验证另一位雇员访问该 URL会受影响。
二、操作步骤
以用户名 Larry,密码 larry 登录。点击“SearchStaff”,在搜索框中,添加如下一段代码即可完成: < script>alert(“dangerous”);</ script>
WebGoat——LAB跨站脚本攻击
Stage6 使用输入验证来阻止反射式XSS攻击
一、题目
Implement a fix to block this reflected XSS attack. Repeat step 5. Verify that the attack URL is no longer effective.
对反射式XSS攻击进行修复,重复步骤5,验证其中的攻击链接不再有效。
二、操作步骤
WebGoat——LAB跨站脚本攻击
本题的操作步骤类似于Stage2。