當(dāng)前位置:首頁(yè) >  IDC >  安全 >  正文

對(duì)javascript網(wǎng)站滲透測(cè)試安全檢測(cè)漏洞方法

 2019-11-24 11:03  來(lái)源: A5用戶(hù)投稿   我來(lái)投稿 撤稿糾錯(cuò)

  域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過(guò)

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

4.4.1.1. 顯式原型和隱式原型

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

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

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

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

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

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

4.4.1.2. new 的過(guò)程

var Person = function(){};

var p = new Person();

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

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

var Person = function(){};

var p = new Person();

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

這段代碼會(huì)返回true。說(shuō)明我們步驟2是正確的。

4.4.1.3. 示例

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

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

4.4.2. 沙箱逃逸

4.4.3. 反序列化

4.4.3.1. 簡(jiǎn)介

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

4.4.3.2. Payload構(gòu)造

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

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

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

4.4.3.3. Payload構(gòu)造 II

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

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

這種方式可以使用相應(yīng)的閉合來(lái)構(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);

Windows信息收集

5.1. 信息收集 – Windows

5.1.1. 基本命令

查詢(xún)所有計(jì)算機(jī)名稱(chēng) dsquery computer

查看配置 systeminfo

查看版本 ver

進(jìn)程信息 tasklist /svc

查看所有環(huán)境變量 set

查看計(jì)劃任務(wù) schtasks /QUERY /fo LIST /v

查看安裝驅(qū)動(dòng) DRIVERQUERY

5.1.2. 域信息

獲取當(dāng)前組的計(jì)算機(jī)名 net view

查看所有域 net view /domain

查看域中的用戶(hù)名 dsquery user

查詢(xún)域組名稱(chēng) net group /domain

查詢(xún)域管理員 net group "Domain Admins" /domain

查看域控制器 net group "Domain controllers"

5.1.3. 用戶(hù)信息

查看用戶(hù) net user

查看在線用戶(hù) qwinsta / query user

查看當(dāng)前計(jì)算機(jī)名,全名,用戶(hù)名,系統(tǒng)版本,工作 站域,登陸域 net config Workstation

5.1.4. 網(wǎng)絡(luò)信息

域控信息 nltest /dclist:xx

內(nèi)網(wǎng)網(wǎng)段信息

網(wǎng)卡信息 ipconfig

外網(wǎng)出口

ARP表 arp -a

路由表 route print

監(jiān)聽(tīng)的端口 netstat -ano

連接的端口

防火墻狀態(tài)及規(guī)則

netsh firewall show config

netsh firewall show state

hosts文件

5.1.5. 密碼信息

Windows RDP連接記錄

瀏覽器中保存的賬號(hào)密碼

系統(tǒng)密碼管理器中的各種密碼

無(wú)人值守安裝文件中的密碼信息

C:\sysprep.inf

C:\sysprep\sysprep.xml C:\Windows\Panther\Unattend\Unattended.xml C:\Windows\Panther\Unattended.xml

5.1.6. 其他

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

wmic qfe get Caption,Deion,HotFixID,InstalledOn

注冊(cè)表信息

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

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

申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)文章

  • 參加Java培訓(xùn)班有用嗎?這個(gè)問(wèn)題大家要怎么看待

    在眾多的編程培訓(xùn)中,Java軟件開(kāi)發(fā)作為老牌兒的編程主流,從發(fā)展前景上看,無(wú)論是現(xiàn)在還是將來(lái),依然會(huì)持續(xù)火爆的狀態(tài)。對(duì)于當(dāng)下年輕人想要快速的掌握這項(xiàng)技術(shù),進(jìn)入到這個(gè)行業(yè),最為熱議的話題是“參加Java培訓(xùn)班有用嗎”。小編可以肯定的回答,是有用的,學(xué)習(xí)的根據(jù)來(lái)自于興趣,如果大家是真的熱愛(ài)這行,在加上專(zhuān)

    標(biāo)簽:
    java
  • 動(dòng)力節(jié)點(diǎn)南京Java培訓(xùn)口碑教學(xué),滿(mǎn)分教學(xué)就業(yè)體驗(yàn)

    江南佳地,邂逅金陵,動(dòng)力節(jié)點(diǎn)南京Java培訓(xùn)校區(qū),為長(zhǎng)三角地帶的發(fā)展注入專(zhuān)業(yè)Java教培力量,動(dòng)力節(jié)點(diǎn)自09年成立至今,專(zhuān)注Java培訓(xùn)教學(xué),一直秉承著“為學(xué)員服務(wù)”的唯一教育理念,堅(jiān)持口碑教學(xué),被業(yè)界稱(chēng)為“口口相傳的Java培訓(xùn)黃埔軍?!薄?/p>

    標(biāo)簽:
    java
    java培訓(xùn)
  • 動(dòng)力節(jié)點(diǎn)廣州Java培訓(xùn),為大家撐起一個(gè)IT的未來(lái)

    廣州動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu),一直以來(lái)專(zhuān)注Java的教學(xué),深耕教育,穩(wěn)扎穩(wěn)打,在行業(yè)具有“口口相傳的黃埔軍?!敝Q(chēng),有句話說(shuō)的好“沒(méi)有量變的積累,哪來(lái)質(zhì)變的飛躍”動(dòng)力節(jié)點(diǎn)和你一起,扎扎實(shí)實(shí)做教育,你們?cè)鷮?shí)實(shí)學(xué)本領(lǐng),時(shí)刻準(zhǔn)備著,有朝一日,風(fēng)自會(huì)來(lái)。

    標(biāo)簽:
    java
    在線培訓(xùn)
  • 動(dòng)力節(jié)點(diǎn)成都Java培訓(xùn)招生源于口碑,業(yè)界巨頭

    為了能夠搭乘互聯(lián)網(wǎng)的快車(chē),實(shí)現(xiàn)人生的逆轉(zhuǎn),不少年輕人選擇動(dòng)力節(jié)點(diǎn)成都Java培訓(xùn),動(dòng)力節(jié)點(diǎn)作為Java職業(yè)培訓(xùn),沒(méi)有理由不去擔(dān)起這份沉甸甸的信任,所以,自09年創(chuàng)立起,一直專(zhuān)注于Java的教學(xué),將全部的資源

  • 參加動(dòng)力節(jié)點(diǎn)北京Java培訓(xùn)會(huì)讓學(xué)者更加有信心

    通過(guò)Java培訓(xùn)出來(lái)的同學(xué)與沒(méi)參加過(guò)培訓(xùn)的同學(xué)差距還是有不少的,同學(xué)一直以來(lái)對(duì)參加培訓(xùn)都保持著猶豫的心態(tài),其實(shí)大家了解后會(huì)發(fā)現(xiàn),不管是對(duì)零基礎(chǔ)還是有編程認(rèn)知的同學(xué)來(lái)講,參與更加密集、系統(tǒng)化的培訓(xùn)

熱門(mén)排行

信息推薦