zoukankan      html  css  js  c++  java
  • 对于 “OWASP TOP 10” 的一些理解

    最近几次电话面试,都比较悲剧,关于面试者比较关注的地方,总不能很好地把握,对于自己蜻蜓点水式的学习方式,很难在面试的时候给人留下很牛逼,很专业,很高深,很强大的感觉,不过现在亡羊补牢或许还为时不晚。


     

    由于很难一次性整理完全,所以先发上来不定期更新

    //-------------------------------------------------------------------格叽格叽------------------------------------------------------------------------------

    注入

    其实注入这种漏洞,基本上是由于对于用户输入过滤不严格产生的,通常所说的注入式SQL注入,也是最常见的一种,
    其他几种,出现频率相对较低。

    os命令注入

    与SQL注入类似,只不过此注入是针对os命令的,及如果有注入点存在,并且有root权限,可以执行OS命令。

    XPath注入

    基于XMP存储数据的注入,较少见,其中要使用到XPath布尔化查询。
    比如登陆检验需要这样
    //users/user[loginID/text()=’abc’ and password/text()=’test123’]

    如果要绕过验证,使用如下构造

    //users/user[LoginID/text()=’’ or 1=1 and password/text()=’’ or 1=1]


    除了语法不通,其它与SQL注入类似。

    LDAP注入

    LightWeight Directory Access Protocol 也是一种数据存储方式。
    不算太了解 > <

    SQL注入

    最常见的,注入方式,不多费口舌了。

    JSON注入

    JavaScript Object Notation 是一种轻量级的数据交换格式,入侵者可以通过,JSON插入额外的数据。

    跨站脚本(xss)

    偏向社工的一种入侵手法,比较被动。

    反射式

    也称非永久性xss,通常把利用脚本写在URL中,通过邮件等方式进行传播。

    存储式

    也称为永久行xss,脚本会被存储在服务器中,通常会有自我扩散的特性,如果在社交网络上会形成蠕虫。

    基于JS的XSS

    由JS引入的xss

    基于HTML的XSS

    由html引入的xss


    会话攻击

    会话劫持

    使用xss等方法,取得用户的sessionID,进而获取访问权限。

    会话固定

    自己创建sessionID,诱使用户用此ID进行登录(我对此方法的可行性抱有很大的怀疑)

    非直接会话

    这种情况,后代代码在验证用户和保存session之间有逻辑错误,而产生的用户验证失败却保存了session的情况。
    例如,流程如下,这里如果用户想行终止了最后的转跳,那么逻辑就会出现错误
    (1)login.asp 中去除所有session
    (2)创建一个新的session,将用户名付给此session
    (3)如果用户验证成功,转跳欢迎界面
    (4)如果验证失败,转跳到login.asp
    其实这种情况还是很少见的>_< 



    跨站请求伪造

    与xss类似,在用户信任的网站插入恶意代码,不过csrf是引导用户去另外一个网站,如果用户恰巧储存了这个网站的cookie或
    session,那么就可以以该用户的身份进行操作。

    GET请求伪造

    get方式一般比较简单
    请求页面
    http://www.mybank.com/Transfer.php?toBankId=11&money=1000
    js代码
    <img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000>
    如果前端页面使用的是post,而后端直接使用request来读取,也可以简单地使用get方式。

    POST请求伪造

    请求页面
    <?php
        session_start();
        if (isset($_POST['toBankId'] && isset($_POST['money']))
        {
            buy_stocks($_POST['toBankId'], $_POST['money']);
        }
      ?>

    js代码

    <html>
      <head>
        <script type="text/javascript">
          function steal()
          {
                   iframe = document.frames["steal"];
                   iframe.document.Submit("transfer");
          }
        </script>
      </head>
    
      <body onload="steal()">
        <iframe name="steal" display="none">
          <form method="POST" name="transfer" action="http://www.myBank.com/Transfer.php">
            <input type="hidden" name="toBankId" value="11">
            <input type="hidden" name="money" value="1000">
          </form>
        </iframe>
      </body>
    </html>

    验证码与操作确认

    可以较为完美的解决CSRF问题,但是会给用户操作带来负担,安全与方便不能两全。

    SESSION令牌

    令牌可以解决大部分csrf攻击,但也不能高枕无忧,如果目标站也存在xss漏洞的话(这种概率是极小的)

    生成令牌
    <?php
         function gen_token() {
         //这里我是贪方便,实际上单使用Rand()得出的随机数作为令牌,也是不安全的。
        //这个可以参考我写的Findbugs笔记中的《Random object created and used only once》
              $token = md5(uniqid(rand(), true));
              return $token;
         }
    <?php
           function gen_stoken() {
          $pToken = "";
          if($_SESSION[STOKEN_NAME]  == $pToken){
            //没有值,赋新值
            $_SESSION[STOKEN_NAME] = gen_token();
          }    
          else{
            //继续使用旧的值
          }
           }
         ?>

    表单提交
    <?php
           function gen_input() {
                gen_stoken();
                echo “<input type=\”hidden\” name=\”" . FTOKEN_NAME . “\”
                     value=\”" . $_SESSION[STOKEN_NAME] . “\”> “;
           }
         ?>
    <?php
              session_start();
              include(”functions.php”);
         ?>
         <form method=”POST” action=”transfer.php”>
              <input type=”text” name=”toBankId”>
              <input type=”text” name=”money”>
              <? gen_input(); ?>
              <input type=”submit” name=”submit” value=”Submit”>
         </FORM>


    没有限制的URL访问


    未验证的重定向与转发







  • 相关阅读:
    Linux系统启动流程
    linux系统目录介绍
    Nginx 安装配置教程
    深入理解linux系统的目录结构
    Mac 下安装Ruby环境(转)
    Android逆向之旅---SO(ELF)文件格式详解(转)
    TAG-9F10 发卡行相关数据(转)
    公钥,私钥,数字证书,签名,加密,认证,的概念区分(转)
    PBOC~PPT-补充内容B(转)
    PBOC~PPT-补充A(转)
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2987568.html
Copyright © 2011-2022 走看看