DVWA(2)命令注入漏洞(Command Injection) LOW-HIGHT 操作记录

本文是DVWA命令注入漏洞的操作记录,适合新手参考。记录了Low、Medium、High三个级别的操作,如Low级别输入ip获取ping内容、尝试使用dir命令;Medium级别尝试用特定命令组合并查看源代码;High级别发现符号替换漏洞并利用。

前言:DVWA(1)暴力破解 LOW-HIGHT 操作记录

今天带来第二期命令注入漏洞操作记录。初次接触DVWA,写下自己的操作记录,希望可以帮助每个刚接触DVWA的新手,同时希望可以提升自己的技术。注:如有操作不当的地方希望可以得到大神指导、交流。也感谢之前查阅的各种大神提供的博客。

DVWA命令注入漏洞

Low级别

输入ip得到对ip的ping内容

 尝试使用dir命令

127.0.0.1 && dir

 Mediun级别

尝试使用  127.0.0.1 && dir 

 查看源代码


<?php

if( isset( $_POST[ 'Submit' ]  ) ) {
    // Get input
    $target = $_REQUEST[ 'ip' ];

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

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

    // 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
    echo "<pre>{$cmd}</pre>";
}

?>

&&被替换成‘’

知识补充:

命令1 && 命令2:是先执行命令1,执行成功后在执行命令2,如果命令1没执行,则命令2也不会执行

命令1 & 命令2:先执行命令1,不管成功不成功,都会执行命令2

命令1 | 命令2如果前语句为假则直接报错,后面不执行;如果前语句为真,执行后边的语句

命令1 || 命令2如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句

我们使用 &来连接

127.0.0.1 & dir

High级别 

查看源代码,符号基本都被替换,但仔细观察‘| ’后面有一个空格。


<?php

if( isset( $_POST[ 'Submit' ]  ) ) {
    // Get input
    $target = trim($_REQUEST[ 'ip' ]);

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

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

    // 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
    echo "<pre>{$cmd}</pre>";
}

?>

因此我们利用

127.0.0.1 |dir

感谢阅读。

### 实验准备 - **环境需求**:PHP 5.6+(推荐更高版本),MySQL 5.0+,Web 服务器(Apache 或 Nginx)。可以安装 XAMPP 或类似的本地 Web 服务器解决方案 [^3][^4]。 - **下载项目代码**:使用 `git clone https://github.com/ethicalhack3r/DVWA.git` 下载 DVWA 项目代码 [^4]。 - **配置数据库**: - 启动 XAMPP 控制面板,开启 Apache 和 MySQL 服务。 - 创建数据库用户和密码: ```sql CREATE USER 'dvwa'@'localhost' IDENTIFIED BY 'p@ssw0rd'; GRANT ALL ON dvwa.* TO 'dvwa'@'localhost'; FLUSH PRIVILEGES; ``` - 导入 DVWA 数据库结构:`mysql -u dvwa -pp@ssw0rd -D dvwa < /path/to/dvwa/sql/dvwa.sql` [^4]。 - **配置 DVWA**: -DVWA 项目文件夹移至 XAMPP 的 htdocs 目录下。 - 编辑 `config/config.inc.php` 文件,配置数据库连接: ```php $_DVWA['db_user'] = 'dvwa'; $_DVWA['db_password'] = 'p@ssw0rd'; ``` - **启动 DVWA**:打开浏览器,访问 `http://localhost/DVWA`,按页面提示完成初始设置 [^4]。 ### 实验步骤 1. **登录 DVWA**:使用默认的用户名 `admin` 和密码 `password` 登录 DVWA 系统。 2. **设置安全级别**:在 DVWA 界面的右上角,将安全级别设置为 `Low`,低安全级别更易触发命令注入漏洞。 3. **找到命令注入模块**:在左侧导航栏中找到 `Command Injection` 选项并点击进入。 4. **测试命令注入漏洞**: - 在页面的输入框中输入正常的 IP 地址,如 `8.8.8.8`,点击 `Submit` 按钮,页面会显示该 IP 的 ping 结果。 - 尝试注入命令,例如输入 `8.8.8.8 && whoami`(在 Windows 系统中可以使用 `8.8.8.8 & whoami`),点击 `Submit` 按钮。如果存在命令注入漏洞,页面不仅会显示 ping 的结果,还会显示当前系统用户的信息。 ### 实验方法 - **利用逻辑运算符**:使用 `&&`(在 Windows 系统中也可用 `&`)来连接正常命令注入命令,让服务器依次执行。 - **使用管道符**:在 Linux 系统中可以使用 `|` 管道符,将前一个命令的输出作为后一个命令的输入。例如输入 `8.8.8.8 | ls`,可以查看服务器当前目录下的文件列表。 ### 注意事项 - **安全风险**:DVWA 是一个极度易受攻击的应用程序,切勿将其部署在面向互联网的服务器上,建议在设置为 NAT 网络模式的虚拟机(如 VirtualBox 或 VMware)中进行实验 [^5]。 - **遵守法律法规**:仅在合法的测试环境中进行实验,未经授权对他人的系统进行漏洞测试是违法的行为。 - **备份数据**:在进行实验前,备份好相关的数据,避免因误操作导致数据丢失。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值