首页 > 其他分享 >DVWA 之 Command Injection-命令注入

DVWA 之 Command Injection-命令注入

时间:2023-03-04 22:24:15浏览次数:39  
标签:command1 command2 0.1 DVWA 命令 127.0 Command && Injection

二、Command Injection-命令注入

原理

命令注入是指对一些函数的参数没有做过滤或过滤不严导致的,可以执行系统或者应用指令(CMD命令或者bash命令)的一种注入攻击手段。PHP命令注入攻击漏洞是PHP应用程序中常见的脚本漏洞之一。

命令连接符
command1 && command2   先执行command1,成功后执行command2
command1 | command2    command1的输出作为command2的输入
command1 & command2    先执行command2后执行command1

1. Low

在文本框中随意输入一些数字123,发现乱码

解决办法:在DVWA-master\dvwa\includes 目录下找到 dvwaPage.inc.php 文件中所有的 ”charset=utf-8” ,修改为 ”charset=gb2312”,即可,最终结果如下

发现直接进行了ping命令,因此可以输入127.0.0.1 && dir,结果如下

发现可以直接执行系统命令,只需要在后面添加&&就可以执行任意系统命令。

Linux下输入127.0.0.1&&cat /etc/shadow甚至可以读取shadow文件

查看源代码

<?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
	$html .= "<pre>{$cmd}</pre>";
}

?>

发现直接针对操作系统进行ping,没有对输入的数据作出任何过滤,非常危险。

2. Medium

查看源代码,多了以下部分

// Set blacklist
$substitutions = array(
	'&&' => '',
	';'  => '',
);

// Remove any of the charactars in the array (blacklist).
$target = str_replace( array_keys( $substitutions ), $substitutions, $target );

对ip参数做了一定的过滤,即把&&; 删除,本质上采用黑名单机制,因此依旧存在安全问题。

由于只对&&; 进行过滤,其它的连接符不受影响,输入 127.0.0.1 | ipconfig,命令成功执行。127.0.0.1&ipconfig也可以成功执行

3. High

查看源代码,进一步完善了黑名单

	// Set blacklist
	$substitutions = array(
		'&'  => '',
		';'  => '',
		'| ' => '',
		'-'  => '',
		'$'  => '',
		'('  => '',
		')'  => '',
		'`'  => '',
		'||' => '',
	);

由于黑名单机制的局限性,仍然可以绕过,发现黑名单看似过滤了所有非法字符,但可以看到是把| 替换为空字符,|后有一个空格,因此|成为了漏网之鱼。

输入127.0.0.1|ipconfig

可用trim()函数解决这个问题,因为trim(str)可以删除字符串左右两边的空格。

防护方法

  • 白名单机制(只允许某种类型的输入)
  • 尽量不要使用系统执行命令

标签:command1,command2,0.1,DVWA,命令,127.0,Command,&&,Injection
From: https://www.cnblogs.com/augustine0654/p/17179347.html

相关文章

  • DVWA 环境搭建
    环境准备phpstudy官网下载:https://www.xp.cn/,下载安装完成后启动Apache和MysqlDVWA下载地址:https://github.com/ethicalhack3r/DVWA将下载后的DVWA安装包......
  • DVWA靶场学习
    dvwa靶场学习容器相关启动容器:systemctlstartdocker.service列出可用容器:dockerps-a删除镜像:dockerrmi[image_id]删除容器:dockerrm[container_id]启......
  • DVWA XSS
    XSSStorehignlevel<?phpif(isset($_POST['btnSign'])){//Getinput$message=trim($_POST['mtxMessage']);$name=trim($_POST['......
  • DVWA CRSF
    主要方式就是引诱用户去点击一个是黑客精心构造的一个html中的一个按钮(或者是引诱用户去访问一个精心构造的url),而该按钮会发生一个请求给目标服务器<html><ahref="h......
  • .Net DI(Dependency Injection)依赖注入机制
    1、简介DI:DependencyInjection,即依赖注入,他是IOC的具体实现。在DI中,底层服务对象不再负责依赖关系的创建,而是交由顶端调用进行管理注入好处:降低组件之间的......
  • Ubuntu之docker搭建dvwa
    前提,已经安装好docker。首先,搜索DVWA镜像,安装,安装完成后,dockerimages查看已有镜像,然后运行dvwa镜像,与容器进行交互,访问ip:端口,出现如下界面则搭建成功,点击“Create/ResetD......
  • Failed to run MSBuild command 错误问题解决
    场景:提示:这里简述项目相关背景:CMake报错CMakeERRORFailedtorunMSBuildcommand:MSBuild.exe。如下图所示: 问题描述提示:这里描述项目中遇到的问题:①cmake报错......
  • COMMAND命令行(黑框框)窗口常用操作
    COMMAND命令行(黑框框)窗口常用操作进入方式win(windows键)+R(running即运行)输入cmd(command即命令)win(windows键)进入开始菜单,以W开头的列表中选择Windows系统打开折叠的文件......
  • python exec_command 命令无效的原因
    当使用PythonParamikoexec_command执行时,某些Unix命令失败并显示“未找到”_互联网集市(qyyshop.com)链接里的解释解决了问题  本来直接调用runmqsc,命令无效,因......
  • 如何解决7z: command not found问题
    7z是一种常见的压缩文件格式,如果你想要压缩或解压缩7z文件,你需要在你的系统上安装p7zip和p7zip-full。但是,有时候你会发现当你尝试运行7z或7za命令时,它会显示“bash:7z:c......