php测速代码分清命令执行跟代码执行的区别。(一)执行php代码转易语言代码执行
2022-10-18
首先要区分命令执行和代码执行的区别。
区别:命令执行只针对系统命令,而远程代码执行是针对编程代码,两者不能互相替代。
命令执行
当应用程序需要调用一些外部程序来处理内容时php测速代码,它会使用一些执行系统命令的函数。
漏洞原因:命令执行漏洞是在源码中直接调用了执行系统命令的函数,没有做过滤,导致执行命令时没有指定绝对路径。
比如命令执行漏洞,权限非常大。
如:php中的函数,exec函数,函数,函数都可以执行系统命令。
() 输出并返回结果。
exec() 不输出结果,而是返回最后一行结果。所有结果都可以存储在返回的数组中。
() 只调用命令,并将命令的结果直接输出到标准输出设备。
(), () 不会直接返回执行结果,而是返回一个文件指针。
下面是我用虚拟机模拟的php环境。
在调用()函数的虚拟机根目录下写一个php文件,参数为cmd,我们本地测试一下。
好了,可以看到我们可以通过cmd参数在虚拟机上本地执行系统命令php测速代码,这就是命令执行漏洞的原理。
代码执行漏洞
应用程序调用了一些可以将字符串转换为代码的函数(如php中的eval),而不考虑用户是否控制字符串,这会导致代码执行漏洞。
php:eval()、()、()、()等。
:评估
:, 评估
: 执行
下面还是使用php环境来演示代码执行:
使用 eval() 函数执行 php 代码,并使用变量接受 get、post 和传递参数。
本地测试如下:
你可以获得php探针,这也非常有用。这里展示了最常见的。
常用词木马就是利用代码执行功能来完成操作。
文件包含漏洞
简介:当服务器执行一个PHP文件时,可以通过file 函数加载另一个文件中的PHP代码,在执行PHP时,这将为开发者节省大量时间。该文件包含可以读取系统中敏感文件、源代码文件等的漏洞。它还可能导致恶意代码执行。
漏洞原因:包含函数的文件加载的参数没有经过过滤或严格定义,可以被用户控制,包括其他恶意文件,导致执行意外代码。
主要包括本地文件包含和远程文件包含两种形式
PHP中有四种类型的文件包含函数:
();
();
();
();
就是在对它执行代码的时候加载文件网站模板,只有在出错的时候才给出警告,然后继续执行;
只要程序执行完毕,就会立即调用该文件,出错时会输出错误信息,终止脚本的执行;
一般用于文件头包含文件、数据库等文件,一般用于包含html模板文件;
如果读取的内容是php小程序开发,则内容以php执行,如果不是php,则读取文件内容(用于读取/etc/等配置文件的敏感信息)。
本地包含:
下面是我的虚拟机搭建的用于重现漏洞的php环境:
可以看到我们写的代码,直接带入file参数的功能,不做任何过滤,我们可以控制file参数进行恶意操作。
好的,让我们在本地测试一下。我在虚拟机c盘下新建了一个txt文件,把语句写在里面。
可以看到,包含文件中的 php 代码会在 php.ini 中执行。
注意:../ 是跳转到父目录。./ 是当前目录。
然后,现在在E盘下新建一个txt文件,在里面写入飞竹。
可以看出,如果不是php的内容,可以直接读取,那么就可以遍历读取其他敏感信息内容。win&下的敏感信息路径很多,网上其他大佬收集的,就不一一列举了。叹了口气。
远程包含漏洞
如果 PHP 的配置文件和设置为 ON,/etc. 函数可以加载远程文件。如果远程文件没有经过严格过滤,导致执行恶意文件,这就是远程文件包含漏洞。
或者使用上面写的函数的php文件来完成这个远程包含操作。
我在另一个虚拟服务器上的网站根目录下新建了一个.txt,并写入了read()信息。
也可以直接写一个php后缀的文件。
好的,我们在本地测试一下,如图:
可以看到加载成功的文件。
本文主要讲解php漏洞形成的原因,方便新手学习理解。喜欢的伙伴记得加我们的订阅号~解锁更多技能