較近滲透測試工作比較多沒有空閑的時間來寫文章,今天由我們Sine安全的滲透主管來普及一下java的安全測試基礎,很多客戶想要了解具體js的調用漏洞或提交playload的過程以及是如何拿到較高權限和繞過登錄等等執行命令漏洞之類的安全檢測方法。
4.4.1.1. 顯式原型和隱式原型
Java的原型分為顯式原型(explicit prototype property)和隱式原型(implicit prototype link)。
其中顯式原型指prototype,是函數的一個屬性,這個屬性是一個指針,指向一個對象,顯示修改對象的原型的屬性,只有函數才有該屬性。
隱式原型指Java中任意對象都有的內置屬性prototype。在ES5之前沒有標準的方法訪問這個內置屬性,但是大多數瀏覽器都支持通過 __proto__ 來訪問。ES5中有了對于這個內置屬性標準的Get方法 Object.getPrototypeOf() 。
隱式原型指向創建這個對象的函數(constructor)的prototype, __proto__ 指向的是當前對象的原型對象,而prototype指向的,是以當前函數作為構造函數構造出來的對象的原型對象。
顯式原型的作用用來實現基于原型的繼承與屬性的共享。隱式原型的用于構成原型鏈,同樣用于實現基于原型的繼承。舉個例子,當我們訪問obj這個對象中的x屬性時,如果在obj中找不到,那么就會沿著 __proto__ 依次查找。
Note: Object.prototype 這個對象是個例外,它的__proto__值為null
4.4.1.2. new 的過程
var Person = function(){};
var p = new Person();
new的過程拆分成以下三步:– var p={}; 初始化一個對象p – p.__proto__ = Person.prototype; – Person.call(p); 構造p,也可以稱之為初始化p
關鍵在于第二步,我們來證明一下:
var Person = function(){};
var p = new Person();
alert(p.__proto__ === Person.prototype);
這段代碼會返回true。說明我們步驟2是正確的。
4.4.1.3. 示例
p是一個引用指向Person的對象。我們在Person的原型上定義了一個sayName方法和age屬性,當我們執行p.age時,會先在this的內部查找(也就是構造函數內部),如果沒有找到然后再沿著原型鏈向上追溯。
這里的向上追溯是怎么向上的呢?這里就要使用 __proto__ 屬性來鏈接到原型(也就是Person.prototype)進行查找。較終在原型上找到了age屬性。
4.4.2. 沙箱逃逸
4.4.3. 反序列化
4.4.3.1. 簡介
Java本身并沒有反序列化的實現,但是一些庫如node-serialize、serialize-to-js等支持了反序列化功能。這些庫通常使用JSON形式來存儲數據,但是和原生函數JSON.parse、 JSON.stringify不同,這些庫支持任何對象的反序列化,特別是函數,如果使用不當,則可能會出現反序列化問題。
4.4.3.2. Payload構造
下面是一個較簡單的例子,首先獲得序列化后的輸出
上面執行后會返回
不過這段payload反序列化后并不會執行,但是在JS中支持立即調用的函數表達式(Immediately Invoked Function Expression),比如 (function () { /* code */ } ()); 這樣就會執行函數中的代碼。那么可以使用這種方法修改序列化后的字符串來完成一次反序列化。最后的payload測試如下:
4.4.3.3. Payload構造 II
以上提到的是node-serialize這類反序列化庫的構造方式,還有一類庫如funcster,是使用直接拼接字符串構造函數的方式來執行。
return "module.exports=(function(module,exports){return{" + entries + "};})();";
這種方式可以使用相應的閉合來構造payload。
4.4.4. 其他
4.4.4.1. 命令執行
Node.js中child_process.exec命令調用的是/bin/sh,故可以直接使用該命令執行shell
4.4.4.2. 反調試技巧
函數重定義 console.log = function(a){}
定時斷點 setInterval(function(){debugger}, 1000);
查看補丁安裝情況
wmic qfe get Caption,Deion,HotFixID,InstalledOn
注冊表信息
安裝的監控軟件
安裝的殺毒軟件,如果在想要檢測自己的網站或app等是否有漏洞以及安全風險問題,可以咨詢下專業的網站安全公司來處理解決,國內推薦Sinesafe,綠盟,啟**辰等等都是比較不錯的。
產品推薦