69久久精品无码一区二区|99在线精品免费视频九九视|亚洲中文字幕91视频|亚洲精品成人片在线观看

對js腳本網(wǎng)站 滲透測試安全檢測漏洞

時(shí)間:2020-03-20瀏覽數(shù):1252

較近滲透測試工作比較多沒有空閑的時(shí)間來寫文章,今天由我們Sine安全的滲透主管來普及一下java的安全測試基礎(chǔ),很多客戶想要了解具體js的調(diào)用漏洞或提交playload的過程以及是如何拿到較高權(quán)限和繞過登錄等等執(zhí)行命令漏洞之類的安全檢測方法。

4.4.1.1. 顯式原型和隱式原型

Java的原型分為顯式原型(explicit prototype property)和隱式原型(implicit prototype link)。

其中顯式原型指prototype,是函數(shù)的一個(gè)屬性,這個(gè)屬性是一個(gè)指針,指向一個(gè)對象,顯示修改對象的原型的屬性,只有函數(shù)才有該屬性。

隱式原型指Java中任意對象都有的內(nèi)置屬性prototype。在ES5之前沒有標(biāo)準(zhǔn)的方法訪問這個(gè)內(nèi)置屬性,但是大多數(shù)瀏覽器都支持通過 __proto__ 來訪問。ES5中有了對于這個(gè)內(nèi)置屬性標(biāo)準(zhǔn)的Get方法 Object.getPrototypeOf() 。

隱式原型指向創(chuàng)建這個(gè)對象的函數(shù)(constructor)的prototype, __proto__ 指向的是當(dāng)前對象的原型對象,而prototype指向的,是以當(dāng)前函數(shù)作為構(gòu)造函數(shù)構(gòu)造出來的對象的原型對象。

顯式原型的作用用來實(shí)現(xiàn)基于原型的繼承與屬性的共享。隱式原型的用于構(gòu)成原型鏈,同樣用于實(shí)現(xiàn)基于原型的繼承。舉個(gè)例子,當(dāng)我們訪問obj這個(gè)對象中的x屬性時(shí),如果在obj中找不到,那么就會沿著 __proto__ 依次查找。

Note: Object.prototype 這個(gè)對象是個(gè)例外,它的__proto__值為null

4.4.1.2. new 的過程

var Person = function(){};

var p = new Person();

new的過程拆分成以下三步:– var p={}; 初始化一個(gè)對象p – p.__proto__ = Person.prototype; – Person.call(p); 構(gòu)造p,也可以稱之為初始化p

關(guān)鍵在于第二步,我們來證明一下:

var Person = function(){};

var p = new Person();

alert(p.__proto__ === Person.prototype);

這段代碼會返回true。說明我們步驟2是正確的。

4.4.1.3. 示例

p是一個(gè)引用指向Person的對象。我們在Person的原型上定義了一個(gè)sayName方法和age屬性,當(dāng)我們執(zhí)行p.age時(shí),會先在this的內(nèi)部查找(也就是構(gòu)造函數(shù)內(nèi)部),如果沒有找到然后再沿著原型鏈向上追溯。

這里的向上追溯是怎么向上的呢?這里就要使用 __proto__ 屬性來鏈接到原型(也就是Person.prototype)進(jìn)行查找。較終在原型上找到了age屬性。

4.4.2. 沙箱逃逸

4.4.3. 反序列化

4.4.3.1. 簡介

Java本身并沒有反序列化的實(shí)現(xiàn),但是一些庫如node-serialize、serialize-to-js等支持了反序列化功能。這些庫通常使用JSON形式來存儲數(shù)據(jù),但是和原生函數(shù)JSON.parse、 JSON.stringify不同,這些庫支持任何對象的反序列化,特別是函數(shù),如果使用不當(dāng),則可能會出現(xiàn)反序列化問題。

4.4.3.2. Payload構(gòu)造

下面是一個(gè)較簡單的例子,首先獲得序列化后的輸出

上面執(zhí)行后會返回

不過這段payload反序列化后并不會執(zhí)行,但是在JS中支持立即調(diào)用的函數(shù)表達(dá)式(Immediately Invoked Function Expression),比如 (function () { /* code */ } ()); 這樣就會執(zhí)行函數(shù)中的代碼。那么可以使用這種方法修改序列化后的字符串來完成一次反序列化。最后的payload測試如下:

4.4.3.3. Payload構(gòu)造 II

以上提到的是node-serialize這類反序列化庫的構(gòu)造方式,還有一類庫如funcster,是使用直接拼接字符串構(gòu)造函數(shù)的方式來執(zhí)行。

return "module.exports=(function(module,exports){return{" + entries + "};})();";

這種方式可以使用相應(yīng)的閉合來構(gòu)造payload。

4.4.4. 其他

4.4.4.1. 命令執(zhí)行

Node.js中child_process.exec命令調(diào)用的是/bin/sh,故可以直接使用該命令執(zhí)行shell

4.4.4.2. 反調(diào)試技巧

函數(shù)重定義 console.log = function(a){}

定時(shí)斷點(diǎn) setInterval(function(){debugger}, 1000);

查看補(bǔ)丁安裝情況


wmic qfe get Caption,Deion,HotFixID,InstalledOn

注冊表信息

安裝的監(jiān)控軟件

安裝的殺毒軟件,如果在想要檢測自己的網(wǎng)站或app等是否有漏洞以及安全風(fēng)險(xiǎn)問題,可以咨詢下專業(yè)的網(wǎng)站安全公司來處理解決,國內(nèi)推薦Sinesafe,綠盟,啟明星辰等等都是比較不錯(cuò)的。



http://mmsped.com

產(chǎn)品推薦

张掖市| 新丰县| 杭锦后旗| 于田县| 唐河县| 南城县| 泰顺县| 天峻县| 南汇区| 姜堰市| 平昌县| 宜兴市| 通辽市| 赞皇县| 中超| 佛冈县| 藁城市| 东乡县| 封开县| 吉木乃县| 昭平县| 龙陵县| 连山| 额济纳旗| 云阳县| 桂阳县| 晋江市| 松江区| 肥东县| 临安市| 浦江县| 衡南县| 潮州市| 天镇县| 寿宁县| 驻马店市| 华池县| 长沙市| 鄂州市| 扎兰屯市| 上林县|