CVE-2021-43008 vulhub 环境利用复现

利用vulhub/vulhub: Pre-Built Vulnerable Environments Based on Docker-Compose (github.com)搭建完环境后,使用搭建环境的虚拟机ip:端口访问页面

需要用到4ra1n/mysql-fake-server: MySQL Fake Server (纯Java实现,支持GUI版和命令行版,提供Dockerfile,支持多种常见JDBC利用) (github.com)这个工具,我直接下载的gui的jar版本。复制到虚拟机内,命令行启动。

反正最后再点击Start Server就是了。

输入/etc/passwd,点击Generate Normal,复制后面的fileread_/etc/passwd填入页面点击连接。

可以看到文件被保存了,我测试多运行了几次,所以有好几个。

复现成功了,脚本也运行了。开始没想通,查了很久找到了算是一篇原理讲解的文章,稍微理解了这个漏洞的原理。

这个漏洞是利用MySQL LOAD DATA LOCAL导致的文件读取漏洞。但是上面的复现过程中甚至没有看见这个函数,这是怎么回事捏?

        1.为了应用此漏洞,攻击者需求拜访 Adminer 的登录页面并操控的 MySQL 数据库:就是说攻击者已经得到了这个数据的账号和密码,能够用Adminer远程连接。

        2.攻击者进入Adminer上的“SQL Command”页面:连接后使用SQL 命令在下一步对本地文件进行操控和读取。

        3.运用以下 SQL 命令,攻击者可以读取 Adminer 效力器行上的本地文件并将其加载到他的长途数据库中:LOAD DATA local INFILE '/etc/passwd' INTO TABLE lfr_sink_table fields TERMINATED BY "n";

        LOAD DATA INFILE作用是可以把文件读入到数据库的某个表里,如果在远程连接状态下使用了LOCAL关键字,即LOAD DATE LOCAL INFILE,那么就会快速读取本地文件到数据库,又因为攻击者已经操控了这个数据库,所以先读取本地文件到数据库,再在第四步中对数据库文件进行查看。

        4.完成此操作后,攻击者可以运用以下命令检查读取文件的内容SELECT * FROM lfr_sink_table;这样就实现了Adminer远程文件读取。

 结合这些,来理解上面的操作,应该就是虚假的MySQL Fake Server被服务器端连接后,MySQL Fake Server使用LOAD DATE LOCAL INFILE命令来读取本地内容,并且下载到攻击者本地。

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值