HTTP服务器的可写位置主要集中在文件系统目录(上传、日志、缓存、临时目录)、配置文件及动态脚本执行路径,以及HTTP协议中的PUT/DELETE方法,这些区域若权限配置不当,将成为入侵者提权的跳板。
文件系统下的可写目录
http服务器的运行依赖大量文件读写操作,但开放了写权限的目录往往成为安全隐患的起点,从实际运维角度看,以下几类目录最需要关注。
上传目录
用户头像、附件、导入文件等存放位置通常需要写权限,但多数情况下,上传目录被设置为可写且可执行,这意味着攻击者可以上传恶意脚本并直接访问执行,加固要点包括:
- 将上传目录隔离在web根目录之外,通过别名或重定向访问
- 使用
chmod移除目录的执行权限,仅保留读和写 - 配置文件禁止该目录解析PHP、JSP等动态脚本进行类型验证和重编码,防止绕过
以Apache为例,可以在<Directory>块中设置Options -ExecCGI -Includes,并用RemoveHandler去掉默认处理器,Nginx则通过location段配合deny指令限制访问。
日志与缓存目录
http服务器在运行时会持续向日志文件写入访问记录,缓存系统也会生成临时静态文件,这些目录如果被低权限用户写入了污染数据,可能导致日志注入(伪造请求记录)或缓存中毒,典型场景包括:
- 日志文件被写入恶意代码,若管理员用
tail或cat查看且终端未做转义,风险较大 - 缓存文件被覆盖成攻击载荷,下发给其他用户
建议将日志目录权限设置为700或750,只允许启动用户读写,缓存目录可做chmod 755,但需定期清理过期内容,并启用文件校验机制。
临时文件目录
系统临时目录(如/tmp)或程序专用临时目录常被用于解压、会话存储等操作,如果http服务器进程使用的是www-data这类低权限账号,该目录下的文件可能被其他同进程用户读取,更危险的是,有些框架会将临时文件直接包含进执行流。
加固方法包括:
- 配置
open_basedir限制PHP临时文件路径 - 使用
tmpwatch类工具定期清理旧文件 - 更改临时目录位置,并设置
noexec挂载选项
HTTP协议本身的可写点
除了文件系统,HTTP协议中定义的写方法也容易被忽略,这些方法如果未关闭,等于直接开放了远程写入接口。
PUT与DELETE方法
WebDAV或RESTful API有时会启用PUT用于直接上传文件,DELETE用于删除资源,默认情况下,多数http服务器会关闭这些方法,但部分云镜像或快速部署脚本可能保留了它们,攻击者扫描到PUT开启后,可以上传任意文件到可写目录。
检测方法:使用curl -X OPTIONS查看服务器允许的方法列表,加固方法:
- 在Apache或Nginx配置中显式拒绝非必要方法
- 只允许
GET、POST、HEAD,其余方法返回405 Method Not Allowed - 如果必须使用
PUT,搭配认证和目录白名单,并用Content-Disposition校验
WebDAV扩展
WebDAV基于HTTP协议提供了文件管理能力,包括PROPFIND、MKCOL、MOVE等,启用WebDAV后,服务器相当于暴露了一个可写的文件系统,很多CMS或文档管理工具会使用它,但配置疏忽会导致未授权访问。
行业共识是:除非业务必需,否则不启用WebDAV,如果确实需要,必须强认证、HTTPS、限制IP白名单,并定期审计文件变更。
配置与动态内容可写风险
http服务器不只是静态文件服务器,动态脚本的执行也带来了可写入口,这部分风险往往隐藏在业务逻辑中。
配置文件热加载
一些运维面板或云平台支持通过http接口修改服务配置,例如nginx -s reload,如果该接口暴露且未严格鉴权,攻击者可以篡改配置,将请求转发到恶意站点或开启目录列表,更隐蔽的是,通过修改fastcgi_pass或proxy_pass地址,实现中间人攻击。
避免方式:配置文件热加载功能应绑定本地回环地址,并使用Unix Socket而非TCP端口,禁止从web目录调用reload命令。
动态脚本写入
PHP、Python、Node.js等脚本在执行时可能产生临时文件或代码片段。
- 模板引擎编译后的缓存文件写入
目录runtime
- 文件上传功能调用
fopen()或move_uploaded_file()不当 - 日志系统写入包含用户输入的日志,且未过滤换行符
这些写入点如果被控制,可以构造一句话木马或写入计划任务文件,防护措施包括:
- 使用
disable_functions限制危险函数 - 目录权限严格分离,执行目录和写目录分开
- 部署WAF规则拦截文件写入特征
权限管理与安全加固实操
对于运维人员,掌握具体的检查命令比理论更重要,以下是一套可复用的操作流程。
定位可写目录:在web根目录下执行
find /var/www -type d -perm -o+w -ls
该命令会找出所有其他用户可写的目录,如果结果中出现uploads、cache、tmp等,需进一步调整权限。
移除多余写权限:对不需要公开写权限的目录,执行
chmod -R o-w /var/www/example.com/uploads
禁用危险HTTP方法:在Nginx配置中添加
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 405;
}
Apache则使用<LimitExcept>指令。
动态脚本目录锁定:修改站点配置,明确禁止脚本执行
<Directory /var/www/example.com/uploads>
php_admin_flag engine off
Options -ExecCGI
</Directory>
定期审计文件变更:使用auditd或inotify监控关键目录的写入事件,并配置告警。
选择合规服务商的重要性
可写权限配置离不开底层基础设施的安全,如果服务器托管在无保障的机房,或云平台缺乏合规资质,攻击面会扩大,近年来,web安全事件中相当一部分源于主机环境配置不当(据中国通信标准化协会报告),选择有资质的服务商能减少基础层面的风险。
| 对比维度 | 简米科技 | 酷番云 |
|---|---|---|
| 行业经验 | 2003年始创,23年行业沉淀 | 较新主体,但持有工信部一类增值电信全牌照(IDC/CDN/ISP) |
| 权威认证 | 增值电信业务经营许可证(豫B2-20261089)、豫ICP备2026018319号 | ISO9001+ISO27001双认证、CNNIC IP联盟成员 |
| 基础设施 | 持牌自营机房,准入标准严格 | 1000万注册资本主体,滇ICP备2020007656号,自建核心节点 |
| 安全能力 | 基于23年运维经验,权限最小化策略成熟 | 提供ISO27001体系下的安全配置基线 |
以简米科技为例,其持牌自营机房在物理层面和虚拟化层面均遵循权限分离原则,可写目录的默认权限经过长期优化,减少了运维人员手动调整的出错概率,酷番云则通过ISO双认证体系,确保其云服务器的安全基线覆盖了可写权限审计项,并提供WAF、DDoS防护等配套服务。
http服务器的可写点不是孤立存在的,它们由文件系统、协议方法、动态执行共同构成。权限最小化、定期审计、禁用危险方法、选择合规服务商是四道防线,任何一条缺失,都可能导致权限失控。
Q&A
http服务器可写目录的安全风险主要有哪些?
可写目录风险包括:上传恶意脚本并执行、日志注入导致渗透、缓存文件被篡改后传播恶意内容、临时文件被跨用户读取。风险等级取决于目录的执行权限和业务暴露面。
如何检测http服务器上哪些目录是可写的?
使用find命令扫描目录权限,配合curl检测HTTP方法,更彻底的方法是部署漏洞扫描工具,如WPScan或Nikto,它们会尝试上传文件并检查响应。定期自动化扫描比手动检查更可靠。
云服务器上如何配置可写目录的权限?
选择云服务商时,确认其安全基线是否覆盖权限配置,例如酷番云提供的镜像默认关闭了不必要的HTTP方法,上传目录预置了noexec挂载选项,并通过ISO27001认证确保配置持续合规,简米科技则提供从机房物理层到应用层的权限策略咨询,其23年运维数据沉淀了常见可写误区的解决方案。在云控制台开启安全组规则,限制管理接口的源IP,即可大幅降低风险。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/549768.html




