前言
- 剛開始復現這個漏洞的時候是在自己的本機上然后跟着大佬的復現步驟可是沒有預期的結果最后看了另一篇文章
當時整個人都麻了
首先何為phpMyAdmin
根據官方的說明phpMyAdmin 是一個用PHP編寫的免費軟件工具,旨在 通過 Web處理MySQL的管理。phpMyAdmin 支持對 MySQL 和 MariaDB 的廣泛操作。經常使用的操作(管理數據庫、表、列、關系、索引、用戶、權限等)可以通過用戶界面執行,同時您仍然可以直接執行任何 SQL 語句。
大家也該是不陌生的,我想最開始學習php的時候應該有相當一部分人是從phpstudy開始的而在高版本的phpstudy中會自動為我們安裝phpMyAdmin,說是安裝其實就是在www下的一個文件夾
下面我們開始介紹該漏洞
1.漏洞的位置
該漏洞在phpmyadmin的index.php文件大約在第50行左右
- 首先事檢查target是否為空
- 然后是檢查target是否為字符串
- 再然后是判斷target是否存在於target_blacklist中而在該數組中就只用import和export兩個所以還是很容易繞過的
- 最后是一個來自Core文件的一個checkPageVaalidity函數,Core在phpMyAdmin\libraries\classesCore.php中
然后我們進入checkPageVaalidity函數
- 該函數要兩個參數可是我們在index.php中發現我們就傳入一個參數這個參數就是$page
- 首先會判斷$whitelist參數是否為空如果是空的會賦予一個默認的值這個數組是
這里就不全都展示了,確實很多- 我們可以發現在第三個if的時候會查看我們傳入的target是否在給定的數組里,只有在的時候才會返回true
- 而在第四個if的時候是會以?作為截取的標志來截取?前面的字符串判斷是否存在於數組$goto_whitelist中,phpmyadmin的開發團隊考慮的很全面這個判斷就是考慮到target后面可能還有參數的情況這樣判斷就可以保證target帶有參數也能正常運行,可是就是因為考慮的太全面了所以在這里就有一個漏洞
- 第5個if就是在對target解碼后在截取判斷了一遍。
在說這個漏洞之前我們先看一個php特性雙重編碼
在php中我們對?進行雙重編碼()在傳個服務端是服務端解碼就會是%3f而這是php就會把%3f之前的文件當成文件夾(這個漏洞的發現大佬是真的牛!!!!!)接下來做一個實驗
首先我們先建立三個文件
index222.php
mmmm
結果
現在我們回歸正題因為在checkPageVaalidity函數中允許我們在target后面在帶參數這漏洞不就來了嗎!!!
之前看大佬的文章發現有一個general_log方法(這個還不會之后會補上的)這里我們就用大佬們常用的session文件包含方式。先說明各個系統session文件的存儲位置Macos的session保存目錄為/var/tmp/,Linux的session保存目錄為/var/lib/php/sessions,Windows是在tmp/tmp/下,這里我遇到了一個bug或許是因為我的phpmyadmin4.8.0是后添加的,這里我找不到對應的session文件就很迷。我做實驗是在18號可是就是沒有那天的session文件而且在整個文件中也沒有。
但是可以發現我們在進行執行sql命令是時我們的命令時被記錄在相應的seesion文件里的注意看最后兩個session記錄可以發現在我們查詢前后的記錄是不同的
最后預期的payload就是127.0.0.1/phpmyadmin-4.8.0/index.php?target=db_sql.php%253f/../../../../../../tmp/tmp(sess_............)
最后我們看一道題:
進入之后可以發現有一串亂碼
這里什么什么都沒有也是迷了半天因為我的御劍啥也沒掃出來,之后是看到題目是有一個數據庫才想起來是不是有phpmyadmin:
這里可以看到版本是4.8.1所以我們可以用PhpMyadmin后台文件包含漏洞然后就是
payload = http://37faeb76-df25-4860-b7b1-d62d17a00186.node4.buuoj.cn:81/phpmyadmin/?target=db_datadict.php?%253f/../../../../../../../../etc/passwd
發現有反饋所以說可以。
這里說明一下這個../可以多加但不可以少,這樣可以保證能讓其返回到跟文件夾,還有就是db_datadict.php是可以替換的只要是$whitelist數組里的都可以哦
最后就是:payload=http://37faeb76-df25-4860-b7b1-d62d17a00186.node4.buuoj.cn:81/phpmyadmin/?target=db_datadict.php?%253f/../../../../../../../../flag
- 今天又是菜雞刷題的一天,但我一定要刷跟跟多的題成為更大的菜雞。
參考:
https://www.phpmyadmin.net/
https://blog.csdn.net/Mikasa_/article/details/88425166
https://blog.csdn.net/Mikasa_/article/details/88594749
https://www.cnblogs.com/0daybug/p/13494650.html