您好,登錄后才能下訂單哦!
怎么進行Adobe ColdFusion反序列化RCE漏洞分析,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
2019年2月12日,Adobe官方發布了針對Adobe ColdFusion的安全更新補丁,編號為APSB19-10。補丁中包含啟明星辰ADLab發現并第一時間提交給官方的Critical(危急)反序列化漏洞,利用該漏洞攻擊者可遠程執行任意代碼。
漏洞編號為CVE-2019-7091,如下圖所示:
本次漏洞為AdobeColdFusion中FlashGateway服務中的漏洞。Adobe ColdFusion的FlashGateway服務存在反序列化漏洞,未經身份驗證的攻擊者向目標AdobeColdFusion的FlashGateway服務發送精心構造的惡意數據,經反序列化后可遠程執行任意代碼。
2018年9月21日:將漏洞詳情提交給官方;
2018年12月05日:確認漏洞存在并開始修復;
2019年2月12日:官方發布正式補丁。
Adobe ColdFusion的FlashGateway服務允許flash連接到CFML和CFC模板。當攻擊者通過HTTP協議向FlashGateway服務POST精心構造的ActionMessage信息后,FlashGateway服務依次通過各種類型的filter進行invoke()操作。在flashgateway.filter.SerializationFilter的invoke方法中,實例化MessageDeserializer類型的反序列工具deserializer并通過deserializer.readMessage(m)方法對精心構造的ActionMessage消息進行反序列化,同時將ActionMessage中的targetURI、data等值賦值給MessageBody。
完成序列化過程后,此時ActionContextcontext中的內容即為輸入流中精心構造的ActionMessage信息。在flashgateway.filter.AdapterFilter的invoke方法中,讀取ActionContext中的MessageBody信息賦值給serviceName、functionName、parameters等,通過adapter=locateAdapter(context,serviceName, functionName, parameters, serviceType)方法得到flashgateway.adapter.java.JavaBeanAdapter類型的adapter,然后執行JavaBeanAdapter的invokeFunction方法。關鍵代碼如下:
public ActionContext invoke(ActionContext context) throws Throwable { ... //讀取MessageBody信息 MessageBody requestMessageBody = context.getRequestMessageBody(); String serviceName = requestMessageBody.serviceName; String functionName = requestMessageBody.functionName; List parameters = requestMessageBody.parameters; ... if (context.isDescribeRequest()) { result = adapter.describeService(context, serviceName); } else { //adapter為JavaBeanAdapter,執行flashgateway.adapter.java.JavaBeanAdapter的invokeFunction方法 result = adapter.invokeFunction(context, serviceName, functionName, parameters); }
在JavaBeanAdapter的invokeFunction方法中,看到關鍵代碼:method.invoke(service,parameters.toArray())。
其中,目標執行方法method通過Method method =this.getMethod(parameters, serviceName, functionName, aClass)得到;
方法執行對象service 通過service = aClass.newInstance()得到;
方法執行參數parameters.toArray()通過MessageBody得到。
由此可見,method.invoke(service,parameters.toArray())的所用參數都可控,意味著可執行任意方法。
整個流程如下圖所示:
ColdFusion 11 Update 15及之前版本
ColdFusion 2016 Update 7及之前版本
ColdFusion 2018 Update 1及之前版本。
1、修改gateway-config.xml文件的配置,禁止JavaBeanAdapter的使用。
2、升級最新補丁APSB19-10:https://helpx.adobe.com/security/products/coldfusion/apsb19-10.html。
看完上述內容,你們掌握怎么進行Adobe ColdFusion反序列化RCE漏洞分析的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。