命令执行漏洞

命令执行漏洞

命令执行漏洞是指攻击者可以随意执行系统命令。

OS命令执行漏洞

部分Web应用程序提供了一些命令执行的操作。例如,想要测试http://www.xxser.com是否可以正常连接,那么Web应用程序底层就很可能去调用系统操作命令,如果此处没有过滤好用户输入的数据,就很有可能形成系统命令执行漏洞

在Windows中,"&&"的作用是将两条命令连接执行,在Linux系统下同样适用

在测试DVWA提供的命令执行漏洞测试模块,输入"www.xxser.com&&Command"

系统将会执行输入Command。这就是命令执行漏洞

命令执行模型

PHP命令执行

PHP提供了部分函数用来执行外部应用程序,例如:system(),shell_exec(),exec(),passthru()

1. 命令执行

<?php
	$host=$argv[1];
	system("ping".$host);
?>

使用PHP.EXE执行此文件,命令为"php.exe cmd.php www.xxser.com",PHP将会调用系统ping命令。

攻击者可能输入"php.exe cmd.php "|net user""

2. 代码执行

PHP提供了一个叫做eval()的函数,可以把字符串按照PHP代码执行,就是可以动态的执行PHP代码。

使用eval需要注意:必须输入的字符串是合法的PHP代码,并且以分号结尾

CMD.PHP中存在以下代码:

<?php eval($_REQUEST['code'])?>

提交http://www,xxser,com/cmd.php?code=phpinfo();后,会执行phpinfo()

动态函数调用

<?php
function A(){
	return "A()函数..";
}
function B(){
	return "B函数..";
}
$fun=$_REQUEST['fun'];
echo $fun();          //动态调用函数
?>

PHP解析器可以根据$fun的值来调用对应的函数。

输入:http://www.xxser.com/function.php?fun=phpinfo

$fun()所对应的函数即为phpinfo();

程序员还可能这样传递参数

<?php
$fun=$_GET['fun'];
$par=$_GET['par'];
$fun($par);
?>
当提交URL: http://www.xxser.com/function.php?fun=system&par=net user

最终执行函数为: system("net user")

PHP函数代码执行漏洞

在PHP中,代码执行漏洞出现较多,像preg_replace(),ob_start(),array_map()等函数都存在代码执行的问题,例

<?php
$arr=$_GET['arr'];
$array=array(1,2,3,4,5);
$new_array=array_map($arr,$array);
?>
array_map()的作用是返回用户自定义的函数处理后的数组,现在输入URL:
http://www.xxser.com/function.php?arr=phpinfo

发现,phpinfo代码已被执行

更多PHP危险函数,可以参阅《高级PHP应用程序漏洞审核技术》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值