zoukankan      html  css  js  c++  java
  • 代码注入

    代码注入漏洞:

    OWASP将其定义为在客户端提交的代码在服务器端接收后当作动态代码或者嵌入文件处理。Wikipedia将其定义为客户端所提交的数据未经检查就让Web服务器去执行。

    一:按照owasp分类,以下漏洞可以视作代码注入:

    1.OS命令执行

    1 <?php
    2     $command=$_REQUEST["command"];
    3     system($command);  
    4 ?>

    2.文件包含

    1 <?php
    2     $page=$REQUEST["page"];
    3     include($page);
    4 ?>

    3.动态函数调用

     1 <?php
     2     function A(){
     3         echo "A";
     4 }
     5     function B(){
     6         echo "B";
     7 }
     8 $func=$_REQUEST["fun"];
     9 $func();
    10 ?>

    4.代码执行

    1 <?php
    2     $myvar="varname";
    3     $x=$_GET['arg'];
    4     eval("$myvar=$x;");
    5 ?>

    二:几种常见的代码注入

    1.XML注

      (1)XML是可扩展标识语言的缩写,XML是为传输数据,而非显示数据。

    例子:描述管理员信息(admin.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <manager>
        <admin id="1">
            <name>admin</name>
            <password>admin</password>
        </admin>
        <admin id="2">
            <name>root</name>
            <paaword>root</password>
        </admin>
    </manager>

    XML注入是通过改写XML实现的,与XSS跨站脚本攻击相似,此漏洞利用关键在于闭合XML标签。

    对于上面所述的admin.xml,管理员可以自己更改自己的密码,如果攻击者恰好能掌握password字段,那么就会产生XML注入,如攻击者输入:

    admin</password><admin id="5"><name>hack</name><password>hacker</password></admin>

    最终修改后的代码为:

    <?xml version="1.0" encoding="UTF-8"?>
    <manager>
        <admin id="1">
            <name>admin</name>
            <password>admin</password>
        </admin>
        <admin id="5">
            <name>hack</name>
            <paaword>hacker</password>
        </admin>
        <admin id="2">
            <name>root</name>
            <paaword>root</password>
        </admin>
    </manager>

    这样通过XML注入就可以增加一个新的管理员。

      (2)XML注入时的两大要素为:标签闭合和获取XML表结构

      (3)修复:只需将预定义字符转义即可(具体修复方法以后继续补充)

    2.XPath注入

      (1)XPath是XML路径语言,XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。简单地说,XPath就是选取XML节点的一门语言

      (2)XPath最强大的功能在于逻辑运算,但如果这一点使用不当,则会造成注入漏洞,逻辑运算符主要是or(与)、and(且)

    3.JSON注入

    JSON是一种轻量级的数据交换格式。它是基于Javascript的一个子集。JSON采用完全

    4.HTTP Parameter Pollution

  • 相关阅读:
    第三课 本代码用于学习vue根组件数据的各种绑定
    第七课 键入事件,点击绑定事件,数据判断及删除事件
    第九课 代码封装localstorage
    第八课 没有封装localstorage
    第五课 vue的事件调用自定义方法
    第六课 点击事件调用自定义方法
    new多个文件编程和split单个文件多个窗口编程
    线性表特点和用法总结
    scanf在输入整型数据和字符型数据时的不同
    tasklet源码注释翻译
  • 原文地址:https://www.cnblogs.com/bulrushlw/p/12932159.html
Copyright © 2011-2022 走看看