代码注入

代码注入漏洞:

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

posted @ 2020-05-21 17:32  一九天  阅读(415)  评论(0编辑  收藏  举报