RIPS原始碼閱讀記錄(二)

tr1ple發表於2020-08-08

Author: tr1ple

這部分主要分析scanner.php的邏輯,在token流重構完成後,此時ini_get是否包含auto_prepend_file或者auto_append_file

 取出的檔案路徑將和tokens陣列結合,每一個檔案都為一個包含require+檔名的token陣列

接著回到main.php中,此時呼叫scanner的parse開始解析,這裡的一個設計點問題就是要掃描漏洞,此時已經需要準備好的有哪些東西

1.file_scanning:

 

這裡實際上就代表的是將要進行掃描的檔案,在這裡實際上是對每個待掃描的php檔案都將呼叫parse進行解析,files就是前端指定的目錄位置,勾選subdirs就包括其子目錄的php檔案

2.scan_functions:

 

 掃描的結果顯示級別是根據前端verbosity來進行選擇,掃描函式是根據vuln type來選擇

主要分為兩個大類,客戶端攻擊和服務端

客戶端主要包括

a.xss

主要是以下函式在輸出時可能存在xss,其中每種函式都對應一個陣列,0代表跟蹤該函式所有引數,1代表跟蹤第一個,2代表第2個,

其中securing_xss為一些過濾函式,包括把字元轉為實體,將左右尖括號、單雙引號、&轉為html實體,所以這種防禦並不是百分百有效的

b.http 頭部注入

c.會話固定漏洞

服務端主要包括:

a.程式碼執行

 這裡的securing_preg主要針對php5.x的e修飾符導致的程式碼執行,preg_quote將對正則進行轉義

 

 b.反射注入

 c.檔案讀取

securing_file主要包括以下三種

 

d.檔案系統操作相關和e檔案包含相關也都是用的相同的securing_file

  

 f.命令執行相關

 securing_function主要關注兩個命令轉義函式

 

  g.sql操作相關:

  securing_function:

 h.xpath注入

securing_functions

  i.ldap注入

 

  

  j.連線相關的函式

 k.php物件注入:

 l.其他一些高危函式

 

因此以上一共是3種客戶端+12種服務端=15種預配置的漏掃型別,但是這些漏洞並沒有完全涵蓋比如csrf、ssrf、xxe以及無法檢測一些越權漏洞等邏輯漏洞,以及反序列化也不一定是unserialize,可能是phar反序列化

上面預先配置的這些函式也是作者對php的函式都做了相關的調查,建立在對php語言與漏洞本身的理解基礎上(白盒對基礎的要求還是高)

3.info_functions

info類中主要包括一些輔助審計的函式檢測,比如出現phpinfo,將對應phpinfo detected,以及不同資料庫用到的函式如果出現,則代表當前應用使用了哪些資料庫

 

4.source_functions

待掃描的函式初始化後,將初始化source點

 

source點主要包括:

a.otherinput 包括http頭部一些資訊,超全域性陣列變數等操作函式

b.從檔案中提取的輸入

c.從資料庫中提取的輸入

這些輸入點全部都定義在source.php,其中還包括userinput,http server相關的一些引數,不過這兩類輸入在初始化時並未加入source_functions陣列

 

 info中還包含了常用的一些pop鏈構造需要的一些gadget方法

 

 

 

 

相關文章