代码执行漏洞(Code Execution),最早称为命令注入攻击( Command Injection ),是指由于Web应用程序对用户提交的数据过滤不严格,导致黑客可以通过构造特殊命令字符串的方式,将数据提交至Web应用程序中,并利用该方式执行外部程序或系统命令实施攻击非法获取数据或网络资源等。
PHP代码执行
1)PHP代码执行漏洞是PHP应用程序中常见的脚本漏洞之一,国内著名的Web应用程序Discuz!、DedeCMS等都曾经存在过该类型漏洞。
命令执行漏洞是直接操作系统的命令。代码执行漏洞是通过代码执行来执行计算机语言代码,比如eval(system(‘set’);)
命令执行漏洞和代码执行漏洞两者确实很像,没有太大的区别,提交漏洞时可能没有分的那么详细很多人
把命令执行漏洞也叫做代码执行漏洞,不过我们在学习时还是要学会区分不同的概念。
2)代码执行概念
代码执行漏洞(Code Execution)最初称为命令注入攻击,它的英文
名称为Command Injection,它是由挪威的一名程序员在1997年意外发现的,他通过构造命令字符串的方式从一个网站删除网页,就像从硬盘中删除一个文件一样简单。
狭义的代码执行通常指将可执行代码注入到当前页面中,如PHP的eval函数,可以将字符串代表的代码作为PHP代码执行,当前用户能够控制这段字符串时,将产生代码执行漏洞。广义上的代码注入,可以覆盖大半安全漏洞的分类。
3)命令执行和代码执行
相同点:
(1)、都是用了相关函数、却存在可以控制的变量;
(2)、都可以通过代码审计发现漏洞;
(3)、都可以拼接恶意命令对服务器造成攻击等等。
不同点:
命令执行漏洞是直接操作系统的命令,如PHP中的system) , exec() , shell_exec()等,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞;
代码执行漏洞是通过代码执行来执行计算机语言代码,比如eval(system(‘set’);)。
4)代码执行原理
PHP中的代码执行情况非常灵活,究其原因仍然离不开两个关键条件︰第一是用户能够控制的函数输入;第二是存在可以执行代码的危险函数。
所以,代码执行的原理其实就是当应用在调用一些能将字符串转化成代码的函数时,没有考虑到用户是否能控制这个字符串,然后将字符串代表的代码作为PHP代码执行,造成代码执行漏洞。
5)代码执行实例:
举一个例子︰
将GET请求的参数‘arg’的值赋值给变量x;然后通过eval函数执行括号里面的PHP代码,代码如图所示
这段代码其实很正常,它的作用是让我们去执行一些需要用到的PHP代码。但是,这段代码并没有设置好权限,也没有对需要执行的代码进行过滤,当这段代码被网络黑客利用时便会执行一些系统命令,造成很严重的后果。
例如︰攻击者想要查看该系统的PHP配置信息,就可以构造payload来进行代码注入:/arg?arg=phpinfo
这样我们能便得到了这个网站的PHP所有的配置信息。当然,我们还可以结合system函数来查看操作系统的当前用户以及其他命令等。
我们构造一个payload来查看当前的用户:/arg?=system(whoami);
6)文件包含执行代码
我们在前几章讲文件包含漏洞的时候也提到过,文件包含漏洞也可以进行代码执行。
比如∶已知一个网站存在着文件包含漏洞,我们想要通过这个漏洞创建一个新的系统账号AK,我们便可以结合代码执行对它进行创建。
接着,我们再通过PHP封装协议php://input伪协议进行命令执行。比如,现在我们想要目标操作系统的账户和信息,我们可以构造如下payload :
php echo “
";system('net user');echo"
“?>
执行结果如图所示:
如此,我们便可以知道文件包含漏洞是可以造成代码执行的。还有一些比较特殊的情况,比如用户上传PHP代码,或者是应用写入到服务器的文件内容和文件类型可以由用户控制,都可以导致代码执行。
7)代码执行有哪些危害?
代码执行漏洞对我们的危害:
(1)、,暴露服务器信息﹔
(2)、木马植入;
(3)、敏感文件暴露;
(4)、还可能升级为“命令执行”
由此,我们可以看到代码执行漏洞的危害还是非常大的,用户既然可以利用PHP中的代码来执行系统的命令,那么我们的服务器岂还能安全?我们网站的源代码等敏感的信息文件将会被一览无余;我们的网页也可能被篡改;重要的机密数据被窃取﹔核心业务数据被篡改;数据库所在服务器被攻击变为傀儡主机,甚至企业网被入侵。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至2705686032@qq.com 举报,一经查实,本站将立刻删除。原文转载: 原文出处: