漏洞原理
文件上传漏洞一些web应用程序中允许上传图片,文本或者其他资源到指定的位置。 文件上传漏洞就是利用网页代码中的文件上传路径变量过滤不严将可执行的文件上传到一个到服务器中,再通过URL去访问以执行恶意代码。
危害
上传漏洞与SQL注入或 XSS相比 , 其风险更大 , 如果 Web应用程序存在上传漏洞 , 攻击者上传的文件是Web脚本语言,服务器的Web容器解释并执行了用户上传的脚本,导致代码执行。如果上传的文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行为。如果上传的文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行。如果上传的文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被用于钓鱼和欺诈。甚至攻击者可以直接上传一个webshell到服务器上 完全控制系统或致使系统瘫痪。
漏洞条件
- 文件可以上传
- 能获取文件上传后的路径
- 上传文件可以被访问
- 上传文件可以被执行
文件上传的可控点
- Content-Length,即上传内容大小
- MAX_FILE_SIZE,即上传内容的最大长度
- filename,即上传文件名
- Content-Type,即上传文件类型
- 请求包中的乱码字段,即是所上传文件的内容
- 有可能存在请求包中的可控点还有上传路径,只是上面的示例中没有出现
挖掘思路
- 上传点都调用同一个上传类
- 黑盒寻找上传点,代码定位
搭建环境
这里搭建上传页面,一些函数就不再做过多介绍,之前博客里的这篇文章详解PHP的文件操作里面有详细介绍哦~
upload.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8&