经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » XML相关 » XML » 查看文章
XML实体注入漏洞
来源:cnblogs  作者:翘中之楚  时间:2024/6/12 16:13:54  对本文有异议

漏洞等级:高危

漏洞类型:XML实体注入

漏洞描述:XXE漏洞全称XML Extemal Endy niecionlxm以外部实体注入漏洞,X在漏洞发生在应用程序经析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起d0s攻击等危害。xxe漏洞触发的点往往是可以上传xm文件的位置,没有对上传的xm,文件进行过滤,导致可上传恶意xm文件。

具体修复方案:

1.需要将poi  jar包升级到4.1.2版本,我当前使用的版本是3.16。

  1. <dependency>
  2. <groupId>org.apache.poi</groupId>
  3. <artifactId>poi</artifactId>
  4. <version>4.1.2</version>
  5. <exclusions>
  6. <exclusion>
  7. <groupId>org.apache.xmlbeans</groupId>
  8. <artifactId>xmlbeans</artifactId>
  9. </exclusion>
  10. </exclusions>
  11. </dependency>

 

2.升级完jar包后代码中引入的需要相关方法及属性就会报错,这时候需要我们手动调整这些错误。

以下是3.6及以下的版本显示:

  1. cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
  2. cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
  3. cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
  4. cellStyle.setBottomBorderColor(HSSFColor.BLACK.index);
  5. cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
  6. cellStyle.setLeftBorderColor(HSSFColor.BLACK.index);
  7. cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);

更高版本是这样的:

  1. cellStyle.setAlignment(HorizontalAlignment.CENTER);
  2. cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
  3. cellStyle.setBorderBottom(BorderStyle.THIN);
  4. cellStyle.setBottomBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
  5. cellStyle.setBorderLeft(BorderStyle.THIN);
  6. cellStyle.setLeftBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
  7. cellStyle.setBorderRight(BorderStyle.THIN);
  8. cellStyle.setRightBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
  9. cellStyle.setBorderTop(BorderStyle.THIN);
  10. cellStyle.setTopBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());

 

3.调整完成后可以启动成功,但是上传文件依然会报错,错误信息如下:

 Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorg/apache/xmlbeans/XmlOptions;

这时候就需要我们手动排除poi里的xmbeans,重新 引入xmbeans,注意:xmlbeans只能引入一个,不要存在其他版本的xmlbeans,不然依然会报错。

  1. <dependency>
  2. <groupId>org.apache.poi</groupId>
  3. <artifactId>poi</artifactId>
  4. <version>4.1.2</version>
  5. <exclusions>
  6. <exclusion>
  7. <groupId>org.apache.xmlbeans</groupId>
  8. <artifactId>xmlbeans</artifactId>
  9. </exclusion>
  10. </exclusions>
  11. </dependency>
  1. <!-- xmlbeans -->
    <dependency>
    <groupId>org.apache.xmlbeans</groupId>
    <artifactId>xmlbeans</artifactId>
    <version>3.1.0</version>
    </dependency>

注意:不是pom.xml只引入一个版本就行了,是引用的Maven仓库中只能存在一个版本的xmlbeans。

 

原文链接:https://www.cnblogs.com/lemperor/p/18244033

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号