文件操作
文件操作相关关键参数用户可控 导致文件/目录 删除/移动/写入(上传)/读取等
文件/目录删除
攻击者常见用法
删除lock文件(解除重复程序安装保护等安全限制)
删除网站关键文件(导致网站拒绝服务 数据丢失)
文件写入/上传
php的原生文件上传 收到POST表单->随机文件名写入临时目录->(执行PHP文件处理逻辑->移动临时文件到保存位置)->删除临时文件(如果临时文件没有被移动)
临时文件路径必须是php上传表单自动处理产生的 例如 $_FILES["pictures"]["tmp_name"]
"pictures"为表单中的name "tmp_name"为固定变量名(临时文件名)
Gynvael Coldwind 《PHP_LFI_rfc1867_temporary_files》 2011.3
**注:**只要PHP收到POST上传文件表单 哪怕php页面一行代码没有 都会将上传文件保存到临时目录 在请求结束后如果临时文件没有被移走就会被自动删除 从写入文件到删除文件有个短暂的窗口时间 可用于文件包含
文件解压
注:ZipArchive扩展在windows平台 php版本>5.6时默认安装. linux及windows其他版本需要手动编译安装.
审计时重点查找 extractTo方法
判断解压目录是否在web目录下 是否检查压缩包内文件类型 如果不在web目录下也可以使用.. 进行目录穿越控制上传目录 到web目录下 或者在权限足够的情况下写入文件到系统关键目录 (自启动 定时任务 ssh公钥 覆盖shadow 等)
文件写入/上传
文件读取
最后更新于