Command Injection
Command Injection,即命令注入,是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。PHP命令注入攻击漏洞是PHP应用程序中常见的脚本漏洞之一。
PHP命令注入漏洞的函数 system()、exec()、shell_exec()
注入命令过程中,常常需要使用一些系统命令的拼接方式,以达到更多复杂功能的实现,尤其是存在限制的情况,运用好可用来绕过限制。
逻辑运算符::
&&:代表首先执行命令a,若成功再执行命令b,又被称为短路运算符。
&:代表首先执行命令a再执行命令b,不管a是否成功,都会执行命令b。在执行效率上来说“&&”更加高效。
||:代表首先执行a命令再执行b命令,只有a命令执行不成功,才会执行b命令。
|:代表首先执行a命令,在执行b命令,不管a命令成功与否,都会去执行b命令。
(当第一条命令失败时,它仍然会执行第二条命令,表示A命令语句的输出,作为B命令语句的输入执行。)
LOW级别
输入127.0.0.1,结果与在本机使用ping命令完全一致,说明这里可以让我们执行ping命令。

分析源码
可以看到这里直接将target 变量放入 shell_exec()执行``ping`命令,没有进行任何过滤,用户端可以直接拼接特定的命令,来执行并获取想要的信息。
<?php
if( isset( $_POST[ 'Submit' ] ) ) {
// Get input
$target = $_REQUEST[ 'ip' ];
// Determine OS and execute the ping command.
if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
// Windows
$cmd = shell_exec( 'ping ' . $target );
}
else {
// *nix
$cmd = shell_exec( 'ping -c 4 ' . $target );
}
// Feedback for the end user
echo "<pre>{
$cmd}</pre>";
}
?>
输入一个命令拼接符号再加上需要执行的命令
查看IP地址 127.0.0.1&&ipconfig

Medium级别
输入127.0.0.1,发现跟low等级显示的一样

查看源代码,
<?php
if(

文章详细讨论了PHP中的CommandInjection漏洞,重点介绍了system(),exec(),shell_exec()函数的潜在风险,通过示例展示了不同安全级别的过滤措施,以及如何通过逻辑运算符绕过过滤。最后提到在高安全级别下,如加入Anti-CSRFtoken和严格IP验证,以防止命令注入攻击。
最低0.47元/天 解锁文章
2697

被折叠的 条评论
为什么被折叠?



