日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php敏感字符串过滤_PHP代码审计入门:常见的危险函数和审计点

發布時間:2025/3/19 php 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php敏感字符串过滤_PHP代码审计入门:常见的危险函数和审计点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

01什么是危險函數

函數設計出來就是讓人使用的,之所以危險,是因為其功能過于強大.開發人員特別是剛從業的人員很少會完整閱讀完整個文檔,再或者是沒有意識到當給這些函數傳遞一些非常規的,外部可控的參數會帶來什么影響,所以踩坑的幾率非常大.
所以在進行代碼審計的時候,比較多的部分都是在審計調用這些危險函數的時候,參數是不是外部可控的.有沒有進行正確的過濾.

02 PHP危險函數5大特征

2.1 能夠執行任意代碼的函數有三種:

  • 第1種是最常見的,會把傳入的字符串當作php代碼直接執行

  • 第2種是通過引入文件執行php代碼,php里引入文件執行代碼的只有4個函數

  • 第3種是一些數據處理函數,它們存在支持回調函數類型的參數,這個參數可以傳入函數的字符串名稱,一旦這個參數可控,那么可能造成漏洞,這些函數的特征非常明顯,參數類型是callback形式,審計的基本上就是看他們的回調函數是不是用字符串的形式傳遞,是否可控,在PHP里存在大量的這種函數,這里只舉5個比較常見的

2.2 常見能夠讀取網絡資源的函數
常見能夠讀取網絡資源的函數,審計點一般是發起網絡請求時有無白名單,否則存在SSRF漏洞

2.3 能夠執行系統命令或者調用外部程序的函數
能夠執行系統命令或者調用外部程序的函數,這些函數使用不當容易引起命令注入,一般需要通常需要結合escapeshellcmd或escapeshellarg函數過濾傳入的變量

2.4 能夠操作文件(讀寫,移動,刪除)的函數
能夠操作文件(讀寫,移動,刪除)的函數,在審計的時候也要注意傳入的變量是否可控,是否存在穿越目錄,導致任意文件讀寫的情況

2.5 能夠修改運行時候的上下文環境(覆蓋變量/函數)

03 編程語言自身的特性

腳本語言的特點就是靈活,所以語言本身的設計上有很多動態的設計,比如:動態類型,可變變量,可變函數。

3.1 動態類型

動態類型可能導致一些比較條件的時候繞過,比如true == 'a'這個條件在PHP里為真,動態類型帶來的條件判斷問題,很多開發者都會在上面踩坑,詳細的規則可以看php的官方文檔

http://php.net/manual/zh/types.comparisons.php

3.2 可變變量

可變變量就是有2個$符號的變量,比如這2行代碼,其實聲明了3個變量,1個是$a,1個變量是$b,還有一個是$hello,之所以有$hello這個變量,是因為第3行的$$a,是把$a的值當成一個變量名使用.當$a的值可控的時候,就可以覆蓋其它已經定義的變量,比如當$a的值是b的時候,第三行的$$a就會把$b的test覆蓋成world.

<?php $a = 'hello'; $b = 'test'; $$a = 'world'; ?>

3.3可變函數

可變函數就是一個變量名后有圓括號,PHP 將尋找與變量的值同名的函數,并且嘗試執行它,比如這段代碼會輸出function hello

$a = 'hello'; function hello(){ echo 'function hello'; } $a();

所以審計的時候也需要關注可變函數的變量是否可控。

04 小結

對于敏感函數的審計點,無非就是參數是否可控,是否有嚴格的過濾,過濾方案是不是業界最優解,然后去回溯這些參數的調用過程,看看在哪一步沒有過濾或者是過濾不嚴的地方.整個審計的過程是比較枯燥的,而且可能要審計很久能發現一個漏洞甚至是沒有任何發現。

既然審計套路這么固定,肯定有一些現成的工具,下面就給大家介紹2款。

  • 第一款是rips,這款工具是用php寫的,開源版本雖然停更已久,現在主推商業版本,不過近幾年來php所添加的函數,并沒有增加多少危險函數,所以這款工具還是可以使用的.而且它使用了php自帶語法分析函數token_get_all來分析上下文,相比一些依賴正則表達式的審計工具準確度有不少的提升。
  • 第二款工具是Seay,這款工具是法師的代碼審計系統,同樣有自動審計的功能,還能列出單個php文件里的所有變量和函數,以及這些變量的生命周期。掃描結果里面同樣也是一些漏洞點的信息,驗證的話可以雙擊某一條漏洞轉到到源碼的地方審計。

漲姿勢的點贊集合喲~

總結

以上是生活随笔為你收集整理的php敏感字符串过滤_PHP代码审计入门:常见的危险函数和审计点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。