错误:可以导出受限的导出格式

2020-09-20 22:44发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好专家组, 在解码Cryst...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好专家组,

在解码Crystal报表的 HTTP网络请求以进行安全审核时,我们遇到了非常严重的威胁和Crystal报表中的漏洞 如果未尽早解决,我们会认为非常危险

本文是继续复制问题的步骤: Crystal Reports中的安全威胁/破坏

开发环境:

  1. ASP.Net 与目标框架4.6.1
  2. 水晶报表13.0.2000.0,版本:13.0.19.2312
  3. Oracle数据库服务器
  4. IIS服务器

症状:

,如果您正在开发敏感数据应用程序,则可能需要使数据库结构和业务逻辑免受最终用户的侵害。

Crystal Report提供了用于指定允许导出的格式的选项,因此许多Application Developer宁愿不要让导出格式(如Crystal Reports和XML)包含数据库结构和业务逻辑。 尽管Crystal Report中还有其他利用漏洞可以下载Crystal Report格式,但使系统面临更大风险。

Crystal Report不应导出"允许格式"中指定的格式以外的其他格式。

复制步骤:

  1. 在Mozilla Firefox中运行报告
  2. 启用数据篡改工具,然后单击"开始记录以记录请求"(如果您的浏览器没有数据篡改插件,请从Mozilla插件中添加它)
  3. 单击"导出报告"按钮
  4. 现在选择PDF格式,然后单击"导出"
  5. 一旦看到"数据篡改"请求,您将看到它已通过命令以 PDF 的形式下载
  6. 将此命令更改为 CrystalReports 并提交
  7. 这将下载Crystal报告,而不检查允许的格式和限制的格式。
  8. 请参见下面的屏幕截图

专家,如果您能够复制并视为威胁,请至少发表您的评论。

临时解决方案:尽管我们等待Crystal Report Experts团队解决此错误,但是您可以基于服务器端的"查询字符串参数"手动限制导出请求。

有关Crystal Report中更多的威胁和漏洞利用,请参阅以下问题: Crystal Reports中的安全威胁/破坏

代码:

 Web.Config:
 ===========

 <?xml version =" 1.0"?>
 <!-
   有关如何配置ASP.NET应用程序的更多信息,请访问
   http://go.microsoft.com/fwlink/?LinkId=169433
   ->
 <配置>
   
     
     
     
   
   
     
       <组件>
         
         
         
         
       
     
     
   
 

 ReportViewer.aspx
 ===================
 <%@页面语言=" C#" AutoEventWireup =" true" CodeFile =" ReportViewer.aspx.cs" Inherits =" ReportViewer"%>
 <%@注册TagPrefix =" CR"命名空间=" CrystalDecisions.Web" Assembly =" CrystalDecisions.Web"%>
 <!DOCTYPE html>


 
 
      
 
 <身体>
     
ReportViewer.aspx.cs ==================== 使用系统; 使用CrystalDecisions.Shared; 使用CrystalDecisions.CrystalReports.Engine; 使用System.IO; 公共局部类ReportViewer:System.Web.UI.Page { 私有ConnectionInfo getconnetionInfo() { ConnectionInfo crConnectionInfo =新的ConnectionInfo(); crConnectionInfo.UserID =" user2"; crConnectionInfo.Password =" user2"; crConnectionInfo.ServerName ="(DESCRIPTION =(地址=(协议= TCP)(主机= 127.0.0.1)(PORT = 1521))(CONNECT_DATA =(服务器=专用)(SERVICE_NAME = XE))))"; 返回crConnectionInfo; } 受保护的void Page_Init(对象发送者,EventArgs e) { } 受保护的void Page_Load(对象发送者,EventArgs e) { 如果(Session [" rd"] == null) { 尝试 { ConnectionInfo crConnectionInfo = getconnetionInfo(); 字符串reportUrl = System.Web.HttpContext.Current.Server.MapPath("〜/App_Data/" +" report-1.rpt"); ReportDocument rd = new ReportDocument(); rd.FileName = reportUrl; rd.Load(reportUrl,OpenReportMethod.OpenReportByTempCopy); rd.SetDatabaseLogon(crConnectionInfo.UserID,crConnectionInfo.Password); ExternalCrystalReportViewer.AllowedExportFormats =(int)(ViewerExportFormats.ExcelRecordFormat | ViewerExportFormats.XLSXFormat | ViewerExportFormats.WordFormat | ViewerExportFormats.PdfFormat); ExternalCrystalReportViewer.ReportSource = rd; Session [" rd"] = rd; } 抓住(例外) { //管理异常 } } 其他 { ExternalCrystalReportViewer.ReportSource =(ReportDocument)Session [" rd"]; } } }
export-exploit-and-tampering.jpg (523.4 kB)