在mysql中可以通过load data local infile "/var/lib/mysql-files/test.txt" into table test
命令,将本地文件上传至MySQL服务器,实际上,服务器可以直接发出请求来读取客户端文件,而不需要经过用户同意。
客户端发出命令请求
服务端发出读取文件请求
客户端发送文件
若是服务端直接发出读取文件请求,客户端便会直接发送本地文件。
客户端连接服务器
服务器发送Greeting包,要求客户端提供密码
客户端发送登陆请求
服务端直接发出ok,然后服务端直接发出读取文件请求
客户端便会直接发送本地文件。
注意中间的query request是每次登陆成功的版本号查询,我们并未响应
详见 https://github.com/lcark/MysqlClientAttack/
运行脚本,监听本地端口
客户端连接
一有连接,即可读取到客户端文件