如何通过限制文件写入权限来防止黑客利用SQL注入获取WebShell?
- 内容介绍
- 文章标签
- 相关推荐
本文共计796个文字,预计阅读时间需要4分钟。
由于SQL注入写入WebShell的链路短、成功率高达、直接提升权限,而限制文件写入权限是阻断该链路最有有效的底层手段。
MySQL的SELECT ... INTO OUTFILE为什么能直接写WebShell
这不是漏洞,而是MySQL合法功能被滥用:只要攻击者能控制SQL语句末尾,就能用INTO OUTFILE把任意内容(比如<?php @eval($_POST['cmd']);?>)写到服务器磁盘上。关键在于它不校验内容类型——写PHP、写JSP、写ASPX,全凭攻击者构造。
- 必须满足三个硬性条件:
FILE权限 +secure_file_priv允许目标路径 + 知道网站根目录的绝对路径 - 常见错误现象:
Can't create/write to file或报错中明确出现secure_file_priv,说明权限或配置卡在第一步 -
INTO DUMPFILE比OUTFILE更常用,因为它不自动添加换行和转义,适合写二进制或单行一句话木马
绕过secure_file_priv的现实路径非常有限
很多人以为“改配置就行”,但MySQL 5.6.34+默认secure_file_priv = NULL,且无法通过SQL动态修改。你只能靠运维层面干预,而生产环境几乎不会放开。
本文共计796个文字,预计阅读时间需要4分钟。
由于SQL注入写入WebShell的链路短、成功率高达、直接提升权限,而限制文件写入权限是阻断该链路最有有效的底层手段。
MySQL的SELECT ... INTO OUTFILE为什么能直接写WebShell
这不是漏洞,而是MySQL合法功能被滥用:只要攻击者能控制SQL语句末尾,就能用INTO OUTFILE把任意内容(比如<?php @eval($_POST['cmd']);?>)写到服务器磁盘上。关键在于它不校验内容类型——写PHP、写JSP、写ASPX,全凭攻击者构造。
- 必须满足三个硬性条件:
FILE权限 +secure_file_priv允许目标路径 + 知道网站根目录的绝对路径 - 常见错误现象:
Can't create/write to file或报错中明确出现secure_file_priv,说明权限或配置卡在第一步 -
INTO DUMPFILE比OUTFILE更常用,因为它不自动添加换行和转义,适合写二进制或单行一句话木马
绕过secure_file_priv的现实路径非常有限
很多人以为“改配置就行”,但MySQL 5.6.34+默认secure_file_priv = NULL,且无法通过SQL动态修改。你只能靠运维层面干预,而生产环境几乎不会放开。

