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

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

时间:2024-12-31 10:57:02浏览次数:1  
标签:medium target cmd ping DVWA 源码 去掉 执行

命令注入

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

常见管道符:

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

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

如下替换编码方式即可

low

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

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

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

// 检查是否通过 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

// 检查是否通过 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

// 检查是否通过 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

// 检查表单是否提交
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();

?>

标签:medium,target,cmd,ping,DVWA,源码,去掉,执行
From: https://www.cnblogs.com/GuijiH6/p/18643521

相关文章

  • 你有看过vue的nextTick源码吗?
    是的,我了解过Vue的$nextTick源码。$nextTick是Vue中一个非常重要的机制,它允许我们在DOM更新后执行某些操作,确保我们可以获取到更新后的DOM状态。下面我将对$nextTick的源码进行简要的解析和归纳:$nextTick的基本原理:Vue在更新DOM时是异步执行的。当数据发生变化时,Vue会将这个......
  • 高校班级同学录网站设计与实现+jsp源码+论文
    项目简介高校班级同学录网站是一个综合性信息管理平台,旨在提高高校班级同学录信息处理的效率和安全性。该系统通过精心设计的功能模块,满足了不同用户角色的需求,包括管理员、学院主管、学校主管、校友以及班级校友。系统核心功能涵盖了班级校友管理、学院主管管理、学校主管管......
  • 基于vue的视频播放器的设计与实现+vue源码+论文
    项目简介视频播放器系统是一个多功能的在线视频管理平台,它通过精心设计的功能模块,满足了管理员和用户的不同需求。系统主要分为管理员和用户两大角色,各自拥有独立的功能权限。管理员模块具备强大的后台管理功能,包括视频信息管理、视频留言管理、用户管理和论坛管理等,能够对视......
  • ssm物流信息管理4bf18程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着信息技术的快速发展,物流信息管理在现代物流体系中扮演着至关重要的角色。高效的物流信息管理不仅能提升物流效率,还能优化资......
  • ssm网络商城系统56077(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着互联网技术的普及和电子商务的快速发展,网络购物已成为人们日常生活的重要组成部分。网络商城系统作为电子商务的核心平台,其重要性......
  • 2024秋季学期 数据结构期末实验报告(无源码版)
    前言这玩意在我看来,p用没有,纯浪费时间,但是沟槽的课有这个要求那我只能花了一点点时间水水了。如果对里面的内容感兴趣(应该不会有人没事来看这种sb玩意吧),可以私信我~实验一疏松多项式1.1问题描述使用链表结构储存疏松多项式并实现以下功能:输入并创建多项式(按指数升序或降序......
  • flask框架人力资源管理系统的核心设计与实现毕设源码+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于人力资源管理系统的研究,现有研究多聚焦于整体系统框架的构建与功能的常规罗列。在国内外,许多大型企业已经应用较为成熟的人力资源......
  • flask框架琴行管理系统毕设源码+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于琴行管理系统的研究,现有研究多集中在琴行运营的某几个方面,如教学管理或乐器销售等,专门针对涵盖用户、琴行乐器、乐器类别、老师信......
  • [转] Android源码对应分支、buildID
    一、源码对应分支、BuildID buildID标记版本支持的设备安全补丁级别TQ2A.230505.002.A1android-13.0.0_r44Android13Pixel4a(5G)、Pixel5、Pixel5a(5G)2023-05-05TQ2A.230505.002android-13.0.0_r43Android13Pixel4a、Pixel4a(5G)、Pixel5、Pixel......
  • SSM小说租阅管理系统-计算机毕业设计源码93246
    摘 要随着互联网的快速发展,数字化阅读逐渐成为人们获取知识和娱乐的主要方式之一。为了满足读者对多样化阅读需求的需求,本文设计并实现了一款小说租阅系统。该系统基于SSM框架搭建,采用HTML编写前端页面,通过前后台分离的方式实现了读者用户、管理员和作者用户的不同功能模块......