没有备案的网站怎么访问,安徽建设教育协会网站,seo云优化如何,工信部网站备案的需要幕布命令执行漏洞简介
命令执行漏洞产生原因
应用未对用户输入做严格得检查过滤#xff0c;导致用户输入得参数被当成命令来执行
命令执行漏洞的危害
1.继承Web服务程序的权限去执行系统命会或读写文件 2.反弹shell#xff0c;获得目标服务器的权限 3.进一步内网渗透
远程代…命令执行漏洞简介
命令执行漏洞产生原因
应用未对用户输入做严格得检查过滤导致用户输入得参数被当成命令来执行
命令执行漏洞的危害
1.继承Web服务程序的权限去执行系统命会或读写文件 2.反弹shell获得目标服务器的权限 3.进一步内网渗透
远程代码执行
因为业务需求在PHP中有时需要调用一些执行命令的函数·如:eval0、assert0、preg_replace0、create_function0等如果存在一个使用这些函数且未对可被用户控制的参数进行检查过滤的页面那么这个页面就可能存在远程代码执行漏洞。
远程代码执行-eval函数
eval ( string $code ) 把字符串 code 作为PHP代码执行 ?php eval($_POST[cmd]);?
注意: eval0 函数传入的参数必须为PHP代码即要以分号结尾; 函数eval0语言结构是非常危险的因为它允许执行任意 PHP 代码·不要允许传入任何由用户提供的、未经 完整验证过的数据。
远程代码执行-assert函数
assert ( mixed $assertion [ string $description ]) 检查一个断言是否为 FALSE如果 assertion 是字符串它将会被 assert0 当做 PHP 代码来执行 ?php assert($_POST[cmd])?
注意: assert0函数是直接讲传入的参数当成PHP代码执行不需要以分号结尾
远程代码执行-preg_replace函数
preg_replace ( mixed $pattern , mixed $replacement , mixed $subject l int KaTeX parse error: Expected EOF, got at position 19: …it -1 l, int ̲count ]] ) 执行一个正则表达式的搜索和替换搜索subiect中匹配pattern的部分以replacement进行替换 ?php preg_replace(/test/e,$_POST[cmd],just test),?
preg_replace(‘正则规则’,‘替换字符’, ‘目标字符’) PCRE修饰符 e: preg_replace0在进行了对替换字符串的后向引用替换之后,将替换后的字符串作为php代码 评估执行(eval函数方式),并使用执行结果作为实际参与替换的字符串。
远程代码执行-array_map函数
array_map ( callable $callback , array $array1 [, array $…]) array_map0: 返回数组是为 array1每个元素应用 callback函数之后的数组·callback 函数形参的数量和传给 array_map0 数组数量两者必须一样·为数组的每个元素应用回调函数
?php
$func$_GET[func];
$cmd$_POSTIcmd];
$array[0]$cmd;
$new_arrayarray_map($func,$array):
echo Snew_array;
?远程代码执行-create_function函数
create_function ( string $args , string $code ) 从传递的参数创建一个匿名函数并为其返回唯一的名称。 通常这些参数将作为单引号分隔的字符串传递·使用单引号的原因是为了保护变量名不被解析否则如果 使用双引号就需要转义变量名例如 $avar
?php
$func create function(”,$_POST[cmd]):
$func();
?远程代码执行-call_user_func函数
call user_func ( callable $callback [, mixed $parameter [, mixed $… ]]) 第一个参数 calback 是被调用的回调函数其余参数是回调函数的参数·把第一个参数作为回调函数调
?php
cal user _func(assert,$_POST[cmd])
//传入的参数作为assert函数的参数
//cmdsystem(whoami)
?远程代码执行-array_filter函数
array_filter ( array $array [ callable $callback [, int $flag 0 ]1) 用回调函数过滤数组中的单元依次将 array 数组中的每个值传递到 callback 函数
?php
$cmd$_POSTIcmd];
$array1array($cmd);
$func $ GETIfuncl;
array_filter($array1,$func),
//用回调函数过滤数组中的元素 : array_filter(数组,函数)
//?funcsystem //cmdwhoami
?远程代码执行-双引号 ?php // echo phpinfo(); echo {$(phpinfo()}}; ?
在php中双引号里面如果包含有变量php解释器会将其替换为变量解释后的结果单引号中的变量不会被处理双引号中的函数不会被执行和替换
远程系统命令执行
一般出现这种漏洞是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上一般会给用户提供一个ping操作的web界面用户从web界面输入目标IP提交后后台会对该IP地址进行一次ping测试并返回测试结果·而如果设计者在完成该功能时没有做严格的安全控制则可能会导致攻击者通过该接口提交恶意命令让后台进行执行从而获得后台服务器权限。 利用PHP 的系统命令执行函数来调用系统命令并执行这类函数有 svstem()、exec()、shell exec()、passthru()、penti_exec()、popen()、proc_pen()等此外还有反引号命令执行这种方式实际上是调用shell_exec(函数来执行
远程系统命令执行
system(): 执行外部程序并且显示输出 exec(): 执行一个外部程序 shell_exec(): 通过 shell 环境执行命令并且将完整的输出以字符串的方式返回 passthru(): 执行unix乳统命令并且显示原始输出 pcntl_exec(): 在当前进程空间执行指定程序 popen(): 打开进程文件指针 proc_open(): 执行一个命令并且打开用来输入/输出的文件指针。
远程系统命令执行-exec函数
exec ( string KaTeX parse error: Expected EOF, got at position 17: …ommand l array ̲output [, int $return var ]]) 执行一个外部程序exec( 执行 command 参数所指定的命令。 exec执行系统外部命令时不会输出结果而是返回结果的最后一行·如果想得到结果可以使用第二个参数让其输出到指定的数组·此数组一个记录代表输出的一行。
远程系统命令执行-system函数
system ( string $command [, int return_var ] ) 函数执行 command 参数所指定的命令并且输出执行结果 system在执行系统外部命令时直接将结果输出到浏览器如果执行命令成功则派回system和exec的区别在于true否则返回false。
远程系统命令执行-passthru函数
passthru ( string KaTeX parse error: Expected EOF, got at position 16: command l, int ̲return var ]) 执行外部程序并且显示原始输出同exec0函数类似passthru0 函数 也是用来执行外部命令(command)的 当所执行的 Unix 命令输出二进制数据 并且需要直接传送到浏览器的时候需要用此函数来替代 exec0 或system0 函数。 passthru与system的区别: passthru直接将结果输出到浏览器不返回任何值且其可以输出二进制比如图像数据。第二个参数可选是状态码。
远程系统命令执行-system函数
system ( string KaTeX parse error: Expected EOF, got at position 15: command [ int ̲return_var ]) 函数执行 command 参数所指定的命令·并且输出执行结果· system和exec的区别在于·system在执行系统外部命令时·直接将结果输出到浏览器·如果执行命令成功则返回 true·否则返回false
远程系统命令执行
命令执行常用特殊字符
cmd1cmd2: 无论cmd1是否执行成功cmd2将被执行
cmd1;cmd2: 无论cmd1是否执行成功cmd2将被执行
cmd1llcmd2: 仅在cmd1执行失败时才执行cmd2
cmd1cmd2:仅在cmd1执行成功后时才执行
cmd2$(cmd) : echo $(whoami) 或者 $(touch test.sh; echo ls test.sh)
cmd: 用于执行特定命令如 whoami
(cmd) : (ls)
(cmd) : (ls)