代码注入

Posted bulrushlw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码注入相关的知识,希望对你有一定的参考价值。

代码注入漏洞:

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注入

 

3.JSON注入

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

4.HTTP Parameter Pollution

以上是关于代码注入的主要内容,如果未能解决你的问题,请参考以下文章

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

安全测试 web安全测试 常规安全漏洞 可能存在SQL和JS注入漏洞场景分析。为什么自己没有找到漏洞,哪么可能存在漏洞场景是?SQL注入漏洞修复 JS注入漏洞修复 漏洞存在场景分析和修复示例(代码片段

Android 逆向Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )(代码片段

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

这些角度电子邮件指令代码片段如何连接

隐蔽的恶意代码启动