您好,登錄后才能下訂單哦!
TemplatesImpl類是一個可序列化的類,其中有一個屬性_bytecodes,里面保存的數據在defineTransletClasses函數里將會被加載成類:
存在著這樣一條調用鏈條:
簡單來說,只要是能調用到getOutputProperties函數,就能觸發包含在_bytecodes里的類構造函數被執行(這個類是由***者來實現的)。
Payload第一部分:
創建了一個BeanComparator對象,將其作為參數用來創建一個PriorityQueue,向queue對象中添加兩個大整數對象(占位用)。
接著通過反射機制設置了comparator后面將會對比對象的屬性為outputProperties。
Payload第二部分:
通過反射機制修改queue中數組保存的對比對象為內置了***代碼的templates。
返回queue,將其生成序列化數據。
漏洞觸發邏輯:
反序列化的queue的時候,其對應的PriorityQueue類readObject函數會依次讀取序列化數據中的元素,放入到隊列中。然后,調用heapify函數進行排序操作。
最終,會調用到siftDownUsingComparator函數,其中會調用comparator的compare方法:
compare方法中將會調用被對比對象的對應屬性get方法,這里的o1,o2就是之前傳入的templates對象,this.property就是之前通過反射機制修改的outputProperties。因此,最終就調用了TemplatesImpl的getOutputProperties函數,觸發POC代碼執行:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。