滲透測試安全檢測漏洞

最近滲透測試工做比較多沒有空閒的時間來寫文章,今天由咱們Sine安全的滲透主管來普及一下java的安全測試基礎,不少客戶想要了解具體js的調用漏洞或提交playload的過程以及是如何拿到最高權限和繞過登陸等等執行命令漏洞之類的安全檢測方法。java

4.4.1.1. 顯式原型和隱式原型node

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

其中顯式原型指prototype,是函數的一個屬性,這個屬性是一個指針,指向一個對象,顯示修改對象的原型的屬性,只有函數纔有該屬性。瀏覽器

隱式原型指Java中任意對象都有的內置屬性prototype。在ES5以前沒有標準的方法訪問這個內置屬性,可是大多數瀏覽器都支持經過 __proto__ 來訪問。ES5中有了對於這個內置屬性標準的Get方法 Object.getPrototypeOf() 。安全

隱式原型指向建立這個對象的函數(constructor)的prototype, __proto__ 指向的是當前對象的原型對象,而prototype指向的,是以當前函數做爲構造函數構造出來的對象的原型對象。網絡

顯式原型的做用用來實現基於原型的繼承與屬性的共享。隱式原型的用於構成原型鏈,一樣用於實現基於原型的繼承。舉個例子,當咱們訪問obj這個對象中的x屬性時,若是在obj中找不到,那麼就會沿着 __proto__ 依次查找。app

Note: Object.prototype 這個對象是個例外,它的__proto__值爲nulldom

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);

Windows信息收集

5.1. 信息收集 – Windows

5.1.1. 基本命令

  • 查詢全部計算機名稱 dsquery computer
  • 查看配置 systeminfo
  • 查看版本 ver
  • 進程信息 tasklist /svc
  • 查看全部環境變量 set
  • 查看計劃任務 schtasks /QUERY /fo LIST /v
  • 查看安裝驅動 DRIVERQUERY

5.1.2. 域信息

  • 獲取當前組的計算機名 net view
  • 查看全部域 net view /domain
  • 查看域中的用戶名 dsquery user
  • 查詢域組名稱 net group /domain
  • 查詢域管理員 net group "Domain Admins" /domain
  • 查看域控制器 net group "Domain controllers"

5.1.3. 用戶信息

  • 查看用戶 net user
  • 查看在線用戶 qwinsta / query user
  • 查看當前計算機名,全名,用戶名,系統版本,工做 站域,登錄域 net config Workstation

5.1.4. 網絡信息

  • 域控信息 nltest /dclist:xx
  • 內網網段信息
  • 網卡信息 ipconfig
  • 外網出口
  • ARP表 arp -a
  • 路由表 route print
  • 監聽的端口 netstat -ano
  • 鏈接的端口
  • 防火牆狀態及規則
  • netsh firewall show config
  • netsh firewall show state
  • hosts文件

5.1.5. 密碼信息

  • Windows RDP鏈接記錄
  • 瀏覽器中保存的帳號密碼
  • 系統密碼管理器中的各類密碼
  • 無人值守安裝文件中的密碼信息
  • C:\sysprep.inf
  • C:\sysprep\sysprep.xml C:\Windows\Panther\Unattend\Unattended.xml C:\Windows\Panther\Unattended.xml

5.1.6. 其餘

查看補丁安裝狀況

 

  • wmic qfe get Caption,Deion,HotFixID,InstalledOn
  • 註冊表信息
  • 安裝的監控軟件
  • 安裝的殺毒軟件,若是在想要檢測本身的網站或app等是否有漏洞以及安全風險問題,能夠諮詢下專業的網站安全公司來處理解決,國內推薦Sinesafe,綠盟,啓明星辰等等都是比較不錯的。
相關文章
相關標籤/搜索