DVWA靶场Command Injection(命令注入) 漏洞low(低),medium(中等),high(高)所有级别通关教程及源码审计

命令注入

命令注入漏洞是一种安全漏洞,攻击者可以通过向应用程序输入恶意命令,诱使系统执行这些命令,从而达到未授权访问、数据篡改、系统控制等目的。该漏洞通常出现在应用程序未对用户输入进行充分验证和清理时

常见管道符:

php 复制代码
;     前面的执行完执行后面的
|     上一条命令的输出,作为下一条命令的参数(显示后面的执行结果)         
||    当前面的执行出错时(为假)执行后面的
&     将任务置于后台执行(不管前面是否为真都执行后面)
&&    前面的语句为假则直接出错,后面的也不执行,前面只能为真
%0a  (换行)
%0d  (回车)

如果出现乱码现象,可以如下更改

如下替换编码方式即可

low

ping 127.0.0.1试试,可以看到正常回显

执行 下面语句都可以,没有任何过滤

php 复制代码
127.0.0.1 ; date
127.0.0.1 || date
127.0.0.1 | date
127.0.0.1 & date
127.0.0.1 && date

源码审计

没有做任何过滤,很容易被攻击

php 复制代码
<?php

// 检查是否通过 POST 方法提交了表单
if( isset( $_POST[ 'Submit' ]  ) ) {
	// 获取用户输入的 IP 地址
	$target = $_REQUEST[ 'ip' ];

	// 判断操作系统并执行 ping 命令
	if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
		// 如果是 Windows 系统
		$cmd = shell_exec( 'ping  ' . $target );
	}
	else {
		// 如果是类 Unix 系统
		$cmd = shell_exec( 'ping  -c 4 ' . $target );
	}

	// 将命令执行的结果反馈给用户
	$html .= "<pre>{$cmd}</pre>";
}
?>

medium

经过测试,发现 **";" "&&"**被过滤了,其他的可以正常利用

源码审计

只过滤了**""&&" ";" **字符,不严格

php 复制代码
<?php

// 检查是否通过 POST 方法提交了表单
if( isset( $_POST[ 'Submit' ]  ) ) {
	// 获取用户输入的 IP 地址
	$target = $_REQUEST[ 'ip' ];

	// 设置黑名单,列出需要过滤的字符
	$substitutions = array(
		'&&' => '',  // 去掉 &&
		';'  => '',  // 去掉 ;
	);

	// 将黑名单中的字符从输入中去除
	$target = str_replace( array_keys( $substitutions ), $substitutions, $target );

	// 判断操作系统并执行 ping 命令
	if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
		// 如果是 Windows 系统
		$cmd = shell_exec( 'ping  ' . $target );
	}
	else {
		// 如果是类 Unix 系统
		$cmd = shell_exec( 'ping  -c 4 ' . $target );
	}

	// 将命令执行的结果反馈给用户
	$html .= "<pre>{$cmd}</pre>";
}
?>

high

通过测试以及对源码的审核,发现一处过滤不严格的地方,这个只是过滤了 '| ' 这样的模式,如果**|** 后面不加空格则无法过滤

可以正常回显

源码审计

php 复制代码
<?php

// 检查是否通过 POST 方法提交了表单
if( isset( $_POST[ 'Submit' ]  ) ) {
	// 获取用户输入,去除多余空格
	$target = trim($_REQUEST[ 'ip' ]);

	// 设置黑名单,列出需要剔除的字符
	$substitutions = array(
		'&'  => '',  // 去掉 &
		';'  => '',  // 去掉 ;
		'| ' => '',  // 去掉 |      //此处过滤不严格,用户可以通过 |date 来绕过
		'-'  => '',  // 去掉 -
		'$'  => '',  // 去掉 $
		'('  => '',  // 去掉 (
		')'  => '',  // 去掉 )
		'`'  => '',  // 去掉 `
		'||' => '',  // 去掉 ||
	);

	// 将黑名单中的字符替换为空
	$target = str_replace( array_keys( $substitutions ), $substitutions, $target );

	// 判断操作系统并执行 ping 命令
	if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
		// 如果是 Windows 系统
		$cmd = shell_exec( 'ping  ' . $target );
	}
	else {
		// 如果是类 Unix 系统
		$cmd = shell_exec( 'ping  -c 4 ' . $target );
	}

	// 将命令执行的结果反馈给用户
	$html .= "<pre>{$cmd}</pre>";
}
?>

impossible

源码审计

采用了白名单过滤,总体来说更加安全

php 复制代码
<?php

// 检查表单是否提交
if( isset( $_POST[ 'Submit' ]  ) ) {
	// 检查反跨站请求伪造(Anti-CSRF)令牌
	checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

	// 获取输入
	$target = $_REQUEST[ 'ip' ];
	$target = stripslashes( $target ); // 去除输入字符串中的反斜杠

	// 将IP地址分割成4个八位字节
	$octet = explode( ".", $target );

	// 检查每个八位字节是否为整数
	if( ( is_numeric( $octet[0] ) ) && ( is_numeric( $octet[1] ) ) && ( is_numeric( $octet[2] ) ) && ( is_numeric( $octet[3] ) ) && ( sizeof( $octet ) == 4 ) ) {
		// 如果四个八位字节都是整数,则重新组合IP地址
		$target = $octet[0] . '.' . $octet[1] . '.' . $octet[2] . '.' . $octet[3];

		// 确定操作系统并执行ping命令
		if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
			// Windows系统
			$cmd = shell_exec( 'ping  ' . $target );
		}
		else {
			// Unix/Linux系统
			$cmd = shell_exec( 'ping  -c 4 ' . $target );
		}

		// 向用户提供反馈
		$html .= "<pre>{$cmd}</pre>";
	}
	else {
		// 出现错误,告知用户输入的IP无效
		$html .= '<pre>ERROR: You have entered an invalid IP.</pre>';
	}
}

// 生成反跨站请求伪造令牌
generateSessionToken();

?>
相关推荐
黑客KKKing9 小时前
网络安全:信息安全
网络·安全·web安全·网络安全
轨迹H15 小时前
DVWA靶场Insecure CAPTCHA(不安全验证)漏洞所有级别通关教程及源码审计
网络安全·渗透测试·dvwa·web漏洞
IT 古月方源16 小时前
DOS攻击的原理和实现 (网络安全)hping3和Slowloris的运用
运维·网络·tcp/ip·安全·网络安全·智能路由器
风间琉璃""17 小时前
PWN的知识之栈溢出
数据结构·算法·网络安全·pwn·二进制安全·栈溢出
Autumn.h20 小时前
常见的框架漏洞
web安全·网络安全
未完结的牵挂20 小时前
pikachu - 暴力破解
网络安全·工具推荐
underatted20 小时前
oscp备考 oscp系列——Kioptix Level 1靶场 古老的 Apache Vuln
网络·安全·web安全·网络安全
Clockwiseee1 天前
文件上传题目练习
android·服务器·安全·网络安全
Clockwiseee1 天前
文件上传漏洞利用与绕过姿势总结
linux·windows·安全·web安全·网络安全·php
H轨迹H1 天前
DVWA靶场Open HTTP Redirect (重定向) 漏洞所有级别通关教程及源码审计
网络安全·渗透测试·dvwa·web漏洞