解决问题:
- 因长期使用本地模拟靶场,实战护网时并非模拟靶场,shell反弹需要利用公网测试。解决目标站无法反弹到本地的情况。
- 解决本地是windows,虚拟机是kail、linux,无法相互转换流量的情况。
环境搭建
-
靶机 centOS7 (虚拟机), ip:192.168.203.156
-
攻击机 kali(虚拟机) , ip: 192.168.199.128
-
内网穿透工具 花生壳 网站:
*https://console.hsk.oray.com/*
-
宿主机 window 10
- 花生壳内网穿透
配置花生壳
注册花生壳,申请域名,按流程操作即可。
选择加号,进入页面选择tcp端口转发。
成功以后右侧是全绿,而且会显示ip及端口
绿的前提是虚拟机的转发已经设置好了,没成功的看下面的虚拟机转发,设置成功在试试。
配置虚拟机转发
宿主机和虚拟机(网络模式为 NAT)也需要配置 端口转发,使用VMware的 转发工具即可(你也可以将虚拟机的 网络模式设置为 桥接模式,但是需要在kali上装 内网穿透客户端),VMware的端口转发配置如下:
使用第一种方法就可以
使用花生壳给定的端口对应至宿主机的1111端口并转发到虚拟机的1112端口,然后我们监听1112端口即可,测试是否可反弹shell。
测试结果:
监听kali1112端口
使用另一台电脑的虚拟机来连接kali。
这边看见直接上线,分别是两台不同的主机的两台不同虚拟机的不同系统,试验成功。
frp方式
优势:长期使用,无需虚拟机转发,无需宿主机。 更加安全。需要有
vps
或公网ip。
二级标题
2024年了,应该用新版的,人也变新了。
下载地址:
https://github.com/fatedier/frp/releases
vps操作步骤:这里选择的是debian,也就是类似kali。
把压缩包上传到vps。
解压并配置frps(服务端)vim frps.toml
[common]
bind_port = 7000
dashboard_port = 7500
token = 12345678
dashboard_user = admin
dashboard_pwd = admin
#vhost_http_port = 10080
#vhost_https_port = 10443
如果没有必要,端口均可使用默认值,token、user和password项请自行设置。
“bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。
“dashboard_port”是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。
“token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。
“dashboard_user”和“dashboard_pwd”表示打开仪表板页面登录的用户名和密码,自行设置即可。
“vhost_http_port”和“vhost_https_port”用于反向代理HTTP主机时使用,本文不涉及HTTP协议,因而照抄或者删除这两条均可。
运行成功截图如下
如果出现错误提示,请检查上面的步骤。
还没结束。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
别忘了这个是vps,自带策略的。
需要自行开通端口转发,才能正常通过端口。
此时访问 x.x.x.x:7500 并使用自己设置的用户名密码登录,即可看到仪表板界面。
如果你想在后台常驻此服务,使用 nohup命令将其运行在后台。
nohup ./frps -c frps.ini &
输出如下内容即表示正常运行nohup: ignoring input and appending output to 'nohup.out'
此时可先使用Ctrl+C关闭nohup,frps依然会在后台运行,使用jobs命令查看后台运行的程序jobs
在结果中我们可以看到frps正在后台正常运行。
jobs
[1]+ Running nohup ./frps -c frps.ini &
此时访问 x.x.x.x:7500 依然可以打开仪表板界面。
这里设置了后台运行。如果更改了配置需要重新运行
这个程序 需要先结束这个进程。
至此,服务端配置结束。
客户端配置
解压删除服务端文件
编辑配置文件
此配置文件的意思是将服务端的59955端口代理到本地虚拟机的22端口,也就是可以通过服务端的59955端口SSH连接到本地虚拟机。
运行成功如图
添加策略不能忘。添加59955端口到策略才能成功。
使用ssh连接本地kali虚拟机
本地连接出现错误,那么远程肯定也是不行的。
解决方式
# vim /etc/ssh/sshd_config
修改:
#PasswordAuthentication yes
为:
PasswordAuthentication yes
修改:
PermitRootLogin prohibit-password
为:
PermitRootLogin yes
接下来需要重新启动ssh。
# service sshd restart
如果上述方式没有用,重新安装ssh,并重启ssh
systemctl enable ssh
vim /etc/ssh/sshd.config
systemctl restart ssh
使用vps转发连接本地ssh。
成功转发并连接这里使用的是普通用户,因为不能连上超级用户,进去后su一下就好了。
既然ssh可以这样转发,那么同理反弹shell也是一样的道理。
反弹shell
- 一台电脑的独立虚拟机centos192.168.203.156
- 一台电脑的独立虚拟机kali192.168.199.128
- 一个公网ip(已经配置好frp)
设置frp转发。
在ssh的基础上设置,不会冲突。
保存重启进程。
尝试返弹shell
方式一
nc监听本地端口
centos来连接kali
这里都是192,是因为名字一样,但是IP电脑都不是一样。
第二种方法
需要再开一个端口
首先配置策略
修改配置文件frpc
重启frpc
尝试反弹shell
监听两个端口
双进程一个道理,再开个端口就行。
注意:
服务端配好不用管
本地端用完一定要kill -9 PID
如果进程占用就是没有杀死pid
vps策略一定要设置
服务端是frps,本地端是frpc,查询进程时需要注意。
后面又改了一下,是这样的
[range:ssh]
# 指定TCP连接类型
type = tcp
# 客户端IP, 这里填本地IP就可以
local_ip = 127.0.0.1
# 当前设备开放的远程连接端口, 默认为22
local_port = 7777
# 表示服务端的代理端口号
remote_port = 59955
# 是否加密
use_encryption = true
# 是否压缩
use_compression = false
[range:8899]
# 指定TCP连接类型
type = tcp
# 客户端IP, 这里填本地IP就可以
local_ip = 127.0.0.1
# 当前设备开放的远程连接端口, 默认为22
local_port = 8888
# 表示服务端的代理端口号
remote_port = 59966
# 是否加密
use_encryption = true
# 是否压缩
use_compression = false
这样就试验成功了。
https://blog.csdn.net/jichencsdn/article/details/138253143
https://blog.csdn.net/weixin_43213815/article/details/121336968
https://www.freebuf.com/sectool/256330.html