操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞

数据来源

      本文仅用于信息安全学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。

为什么要攻击网站?常见的网站漏洞有哪些?

        在互联网中,WEB(网站)服务数量庞大,且易存在安全漏洞,是渗透测试前期攻击的不二之选 

        OWASP TOP 10::这是每年的一份关于web应用的十大威胁安全报告,会在经过安全专家的测验之后确定十大类对当前web应用威胁最大和被应用最广的漏洞,同时也会对其进行详细的分析威胁所在。

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第1张图片

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第2张图片

漏洞靶场之DVWA

DVWA靶场搭建

        DVWA是 OWASP 官方编写的PHP网站,包含了各种网站常见漏洞,可以学习攻击及修复方式

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第3张图片

DVWA搭建步骤:

  • PHP环境:Windows Apache Mysql Php
  • DWWA源代码:https://github.com/digininja/dvwa/archive/master.zip

DVWA源码 - 按照下面的步骤修改过

六步快速搭建DVWA

        1)下载并安装Phpstudy(安装过程可以一路下一步,也可以改安装路径)    http://public.xp.cn/upgrades/PhpStudy2018.zip

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第4张图片

        2)将解压后的DVWA原代码放置 phpstudy 安装目录的WWW文件夹(这里建议将文件名:DVWA-master改成DVWA

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第5张图片操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第6张图片

        3)进入 DVWA/config 目录,将文件名为:config.inc.php.dist最后的dist删去

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第7张图片

         4)打开刚刚重命名的 config.inc.php文件,修改 db_user(数据库用户) 和 db_password(数据库密码)改为 :root    root

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第8张图片

        5)启动Phpstudy,并在浏览器访问:http://127.0.0.1/DVWA/setup.php,点击最下方的 Create Database(创建数据库)

我这里因为我的桌面没有快捷方式,就直接来到安装目标启动软件了,之后可自行创建快捷方式 

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第9张图片

        注意:这里的浏览器访问路径是根据,你刚才对DVWA-master文件重命名后的文件名决定的,如果刚才没有重命名默认的文件名是DVWA-master,那这里浏览器访问时就填:http://127.0.0.1/DVWA-master/setup.php

点击创建数据库 

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第10张图片

        6)浏览器访问:http://127.0.0.1/DVWA/ ,输入用户名: admin   密码: password 登录dvwa

        第5步做完之后就会自动跳转到数据库的登录页面,然后输入账号密码即可(如果没有自动跳转就手动输入,如果还是不行就检查第4步的账号密码有没有写错) 

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第11张图片

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第12张图片

危害巨大的漏洞-命令执行

命令执行漏洞详解

        一般岀现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上,一般会给用户提供一个ping操作的web界面,用户从web界面输入目标P,提交后后台会对该P地址进行一次png测试并返回测试结果。而如果设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交恶意命令,让后台进行执行,从而获得后台服务器权限。

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第13张图片

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第14张图片

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第15张图片

常用的cmd命令:

        whoami                                                        # 查看当前用户名

        ipconfig                                                       #  查看网卡信息

        shutdown -s -t                                        #  关机,-s 关机  -t 设置定时器  0表示0秒

        shutdown -a                                               # 取消一切定时

        net user  username  password  /add       #  增加一个用户名为 username密码为 password的新用户

        type  文件名.扩展名                                 #  查看 filename文件内容 

Command Injection 防御详细

1)low (低级防御,几乎不设防)

实现步骤如下:

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第16张图片

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第17张图片

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第18张图片

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第19张图片

可以测试一下网站的漏洞:

        127.0.0.1&whoami     # 获取网站主机的名称 (可以自行换成其他连接符和windos命令,多尝试才能学到知识)                                                

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第20张图片

可以在cmd命令行验证

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第21张图片

        127.0.0.1&shutdown -s  # 将网站主机关机        

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第22张图片                                     

这个网站为啥会有这种漏洞?我们可以查看网站的源代码分析原因 

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第23张图片

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第24张图片

代码漏洞解析:

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第25张图片

{$cmd}
"; } ?>

如何防御这种命令执行的漏洞?防御命令执行的最高效的方法,就是过滤命令连接符

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第26张图片

2)medium(中级防御)

渗透测试解决方法:

  • 白盒测试        可以看到源代码,查看源代码过滤机制
  • 黑盒测试        看不到源代码,依次尝试常见命令连接符

        DVWA mediun防御中过滤了&&;但并不会影响其他符号正常使用

实现步骤如下:

        回到网站把安全等级调到中级

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第27张图片

        其他步骤和前面的一样就不写了 

代码解读: 

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第28张图片

 '',
        ';'  => '',
    );

    // 删除阵列中($substitutions)匹配的任何字符(黑名单)
    $target = str_replace( array_keys( $substitutions ), $substitutions, $target );

    // 确定操作系统并执行ping命令
    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 "
{$cmd}
"; } ?>

把代码改成上面这样最终的命令执行效果是这样 ,比如黑客输入:

        127.0.0.1&&shutdown -s  经过上面代码处理后就变成:127.0.0.1shutdown -s

        最后网站执行:ping  127.0.0.1shutdown -s 肯定是执行不了的没有这样的命令,这样就能防御命令执行攻击,不过这里的防御等级是中级那肯定是不完善还是有漏洞的。

可以自行测试一下如: 

        127.0.0.1&&ipconfig   # 这样执行不成功,但是我改成一个&或其他没有被过滤的连接符就不影响

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第29张图片

         127.0.0.1&ipconfig       # 可以执行成功,查看网卡信息

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第30张图片

3)High (高级防御)

实现步骤如下:

        回到网站把安全等级调到高级

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第31张图片

 其他步骤和前面的一样就不写了

代码解析: 

        这里需要注意的是现在的等级还是高级,说明还是有漏洞的,比如下面的'| '  这里|后面有个空格,很多开发者都有个问题,不小心或个人的代码编写习惯会在代码后面多敲一个空格,这里只能匹配:| 空格  如果没有空格是过滤不掉的,可以自行测试。

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第32张图片

 '',
        ';'  => '',
        '| ' => '',
        '-'  => '',
        '$'  => '',
        '('  => '',
        ')'  => '',
        '`'  => '',
        '||' => '',
    );

    // Remove any of the characters 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 "
{$cmd}
"; } ?>

 可以自行测试一下如: 

        127.0.0.1| ipconfig   # 有空格的情况

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第33张图片

         127.0.0.1|ipconfig       # 没有空格的情况

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第34张图片

4)impossible(不可能的,最高级防御)

实现步骤如下:

        回到网站把安全等级调到最高级

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第35张图片

 其他步骤和前面的一样就不写了

代码解析:

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第36张图片

有些用户为了转义特殊字符可能会加上反斜杠\” 

操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_第37张图片        impossible 的防御正如其名,不可能被攻击,是安全开发人员的典范,其他后端语言也可实现相应算法 

{$cmd}
"; } else { // Ops. Let the user name theres a mistake echo '
ERROR: You have entered an invalid IP.
'; } } // Generate Anti-CSRF token generateSessionToken(); ?>

你可能感兴趣的:(网络安全,安全,系统安全,web安全)