Ⅰ udf提權時,mysql5.0以下和5.0以上有什麼區別
1、UDF提權專用webshell,導出dll、再執行命令。
2、Phpspy.php的Mysql上傳(提示 "上傳失敗、原因:Result consisted of more than one row"、實際上大多數已上傳成功),再連接mysql執行命令。
3、Mysql允許外連的情況下也可以使用Hack MySQL上傳,再通過命令行登陸執行命令。
Ⅱ linux udf上傳不了怎麼提權
Linux操作系統自從誕生後,其高效的處理能力和卓越的穩定性受到廣大用戶的親睞,特別是伺服器市場,Linux佔有很大的份額。俗話說:樹大招風。Linux在伺服器領域的廣泛應用使得Linux的安全也受到了前所未有的挑戰。針對Linux的滲透與攻擊手段也越來越多,滲透Linux最常見的手段就是MySQL udf提權。
眾所周知,MySQL是一款免費的、開源的資料庫伺服器軟體。其安全性也十分高,因此很多Linux廠商都將其內建在操作系統,特別是一些livecd或者liveDVD。由於MySQL在Linux上的廣泛應用,使得MySQL也成為安全界重點研究的對象,udf是MySQL的一個共享庫,通過udf創建能夠執行系統命令的函數sys_exec、sys_eval,使得入侵者能夠獲得一般情況下無法獲得的shell執行許可權。這對於伺服器來說是十分危險的。那麼入侵者究竟是怎樣獲得這個許可權的呢?換句話說是如何安裝這個函數的呢?下面我們可以演示一下
操作系統:backtrack5 r2
平台:Apache+MySQL+PHP
安裝這幾個函數,必須用到lib_mysqludf_sys.so(windows是對應的dll文件),為方便大家,我就直接作為附件上傳。lib_mysqludf_sys_0.rar下載之後,你可以選擇通過源代碼建構so文件,也可以直接復制so文件夾下的文件。
首先,開啟bt5上的Apache服務和MySQL服務,鍵入"/etc/init.d/apache2 restart"開啟Apache服務,MySQL服務可以通過開始菜單來啟動,如下圖所示:
其實,Apache也可以通過菜單啟動,上圖中的httpd的子菜單就可以啟動,我比較習慣從命令行啟動而已。
我們可以訪問127.0.0.1來查看Apache是否啟動成功,如下圖:
沒有問題,啟動成功
然後,打開終端,鍵入"mysql -uroot -ptoor"命令連接資料庫(注意,-u和-p參數後都不要帶空格),如果連接成功,將會出現mysql的提示符
緊接著,上傳lib_mysqludf_sys.so到/usr/lib/mysql/plugin,然後鍵入如下命令:
create function sys_eval returns string soname "lib_mysqludf_sys.so" (創建函數)
創建完成之後就可以通過select sys_eval("命令")執行,如下圖
執行ls命令後的結果
看到這里,你也許會說,不過就是執行了一個ls命令嗎?這有什麼大不了呢?的確,一個ls命令確實沒什麼大不了。但是這使入侵者獲得了一個執行shell的許可權,這種許可權可以執行任何可執行的文件,也就是說通過它可以為Linux安裝後門如使用nc等,而這無異於將伺服器拱手讓給他人。一般說來,伺服器會將PHP的sys_exec等函數禁用,但是udf方式繞過了這種限制,輕易獲得了shell。
說完了攻,我們來說說防。可以通過升級MySQL的版本或者禁用udf功能來實現針對udf攻擊的防禦。
Ⅲ 【原創】MySQL常見提權姿勢總結
在深入探索 MySQL 提權策略時,總結了一些常見姿勢,以便於進一步理解並實操這些安全實踐。
**操作**
MySQL 提權中的一項關鍵操作是調整 `secure-file-priv` 設置。通常,這涉及到修改允許用戶讀寫文件的許可權路徑,比如將 `secure-file-priv` 設置為允許遠程連接的伺服器上的特定目錄,從而為提權操作創造條件。
**開啟遠程連接**
MySQL 提權的另一核心是確保遠程連接功能的啟用。通過調整全局變數 `general_log`,可以開啟日誌記錄功能,以便於記錄關鍵操作和潛在的提權嘗試。設置日誌路徑和內容,如 `set global general_log_file='C://phpStudy//PHPTutorial//WWW//shell.php'`,並執行 `select '';` 來寫入一句話,確保日誌文件被正確生成。
**mof 提權**
mof 提權依賴於一個特殊的操作,即修改系統文件 `nullevt.mof`,使其在特定時間自動執行命令。該文件每分鍾執行一次,由 `And TargetInstance.Second = 5` 控制,確保在第五秒執行命令,從而實現自動執行 cmd 操作。添加特定的 mof 代碼,分別用於添加用戶和將用戶添加到管理員組,是實現這一目標的關鍵步驟。
**udf 提權**
udf 提權涉及創建自定義函數,並將特定 DLL 文件整合至 MySQL 環境。步驟包括創建目錄、寫入 DLL 文件、創建自定義函數等。這需要對 MySQL 版本和目錄結構有深入理解,確保 DLL 文件在正確的目錄下,如 MySQL 安裝目錄的 lib\plugin 文件夾。實現過程包括編寫或獲取特定的 DLL 文件代碼,並通過 SQL 語句將其整合至資料庫環境。
**利用 msf**
利用 Metasploit Framework (msf) 工具集,可以輕松實現 MySQL 相關的提權攻擊。通過執行特定的 msf 命令,如 `use auxiliary/scanner/mysql/mysql_login`、`use exploit/multi/mysql/mysql_udf_payload`、`use exploit/windows/mysql/mysql_mof`,可以嘗試登錄、執行提權操作,或利用特定的漏洞進行攻擊。
**文件寫入**
文件寫入技術是實現提權的一種直接方法,涉及使用 SQL 語句將特定內容寫入到目標系統的文件系統中。例如,`select '' into outfile 'C:\\phpStudy\\PHPTutorial\\WWW\\1.php'` 可以用於寫入包含惡意代碼的文件,從而實現進一步的控制和利用。
**os-shell**
os-shell 功能允許在目標系統上執行命令,前提條件是需要有寫許可權和對網站絕對路徑的訪問許可權。通過 SQLmap 工具,結合 `--os-shell` 參數,可以實現對目標系統的操作,如 `sqlmap -u 192.168.12.17/sql/Less-... --os-shell`。在具備正確配置和路徑信息的情況下,可以成功執行命令,例如 `ipconfig`,以驗證許可權提升的成果。
以上策略和方法提供了對 MySQL 提權操作的基本理解,重要的是在實際應用時,務必遵循安全最佳實踐,避免對系統造成潛在的風險。
Ⅳ 利用MySQLUDF進行提權攻擊mysql下udf提權
利用MySQL UDF進行提權攻擊
MySQL是一款開源的關系型資料庫管理系統,全球范圍內廣泛使用。然而,由於MySQL默認情況下允許用戶載入用戶定義函數(User-Defined Function,簡稱UDF),這個特性被不良分子利用,成為MySQL提權攻擊的利器。
MySQL UDF提權攻擊原理
MySQL UDF通過載入動態鏈接庫實現用戶自定義函數,攻擊者可以通過載入自己的動態鏈接庫來執行惡意代碼,獲取管理員許可權,掌控MySQL伺服器。攻擊者可以利用MySQL UDF執行任意代碼並且具有完全系統許可權。此外,攻擊者還可以把自己的UDF安裝到MYSQL數據目錄下的lib/plugin目錄中,在不需要任何授權的情況下就可以完成攻擊。
MySQL提權攻擊實戰
在實踐中,攻擊者通常需要先掌握某個能夠上傳文件的應用或者漏洞,然後通過上傳或者包含文件的形式把自己的優化動態鏈接庫上傳到MYSQL的lib/plugin目錄中。
使用root賬號將dll放到mysql的lib目錄中:
![](https://cdn.nlark.com/yuque/0/2021/png/12759998/1623142313014-fec587a0-9063-4b36-8ae2-9b52a10987a4.png#align=left&display=inline&height=312&margin=%5Bobject%20Object%5D&name=image.png&originHeight=624&originWidth=1116&size=122385&status=done&style=none&width=558)
重啟MySQL服務,並使用攻擊者自己的賬號,連接到MYSQL伺服器:
![](https://cdn.nlark.com/yuque/0/2021/png/12759998/1623142361462-18d2f2ff-d8c7-4839-8a03-c02d1b45bcf0.png#align=left&display=inline&height=76&margin=%5Bobject%20Object%5D&name=image.png&originHeight=152&originWidth=1111&size=29788&status=done&style=none&width=555)
使用mysql_udf模塊中提供的sys_exec函數執行Linux系統命令,獲取管理員許可權:
![](https://cdn.nlark.com/yuque/0/2021/png/12759998/1623142409588-7c9de996-ef5a-4f20-8f7b-5a6d52a72e3b.png#align=left&display=inline&height=208&margin=%5Bobject%20Object%5D&name=image.png&originHeight=416&originWidth=1129&size=46595&status=done&style=none&width=564)
此時攻擊者已經成功獲取到管理員許可權。
防禦MySQL UDF提權攻擊
為了防止MySQL UDF提權攻擊,我們可以採取以下一些措施:
1.關閉MySQL UDF
在MySQL 5.0及以上版本中可以通過設置參數”old_passwords=0″和”secure_file_priv”為”on”來關閉MySQL UDF。
2.加強應用安全
通過限制應用上傳和包含DLL、實現白名單機制等措施加強應用安全性。
3.限制MySQL用戶許可權
為用戶設置最小化許可權,並禁止已知敏感函數和SQL語句。
4.定期更新MySQL補丁
及時修補已知漏洞並進行安全加固。
總結
MySQL UDF提權攻擊是一種常見的攻擊手段,攻擊者可藉助UDF載入惡意代碼,獲取管理員許可權,掌控MySQL伺服器。為了保護資料庫安全,我們需要關閉或限制MySQL UDF的使用,並加強應用安全,對用戶許可權進行最小化限制,定期更新MySQL補丁。