主要内容
信息收集:ajp漏洞
横向提权:在没有办法立刻提升到管理员权限时,可以试试通过横向的权限提升切换到其他用户再做提权尝试
涉及尝试了前两台靶机没有用过的枚举方法,比如SUID
使用john解码工具进行pgp解密
参考视频:https://www.bilibili.com/video/BV1fUwVeeELz/?spm_id_from=333.1387.upload.video_card.click&vd_source=e948147c25027ef3216b5c376b31fc96
首先还是nmap扫描
可以发现和之前两个靶机不同,这个靶机没有80端口(http
80端口
1、是HTTP协议的默认端口,IANA标准规定用于HTTP服务。
2、当你在浏览器中访问一个URL(如
http://example.com
)时,浏览器默认会连接到服务器的80端口。8080端口
1、并非HTTP的官方默认端口,但在实践中常用作HTTP服务的替代端口。
2、在一些情况下,比如你没有权限使用80端口(80端口属于低数字端口,通常需要管理员权限)或系统上已经有其他服务占用了80端口,就可以选择使用8080端口。
3、开发环境、测试服务器或代理服务器(如Tomcat、Node.js应用等)通常默认使用8080端口。
nmap做的端口扫描会显示对应的服务,但是这个服务判断很有可能是不准确的
对8080端口做详细扫描,看一下它的服务是什么:
解释命令:
-p8080:指定只扫描端口8080
-sV:启用版本检测, 扫描时不仅检测端口是否开放,还尝试识别该端口上运行的服务及其版本信息。
总结起来,命令的作用是:
扫描目标 IP 的 8080 端口,检查这个端口是否开放,并尝试确定该端口上运行的服务是什么以及具体的版本号。
服务显示是Tomcat
用浏览器打开看一下,记得加8080端口
打开看到是一个tomcat的页面,遇到这种页面可以先看一下有没有管理页面
看到一个manager app
click itoops ,甚至没有登录框
去看看别的端口,还是用一样的扫描方法
显示是一个ajp服务
ajp:AJP(Apache JServ Protocol)是一种二进制协议,主要用于在前端 Web 服务器和后端应用服务器之间高效地转发请求和响应。下面是关于 AJP 服务的详细说明:
- 用途和工作原理
- 请求转发:AJP 协议常用于将来自 Web 服务器(如 Apache HTTP Server)的 HTTP 请求转发到后端的应用服务器(如 Apache Tomcat)。
- 二进制传输:与文本协议不同,AJP 使用二进制格式传输数据,这可以提高传输效率和性能。
- 集成方式:前端服务器通过诸如
mod_jk
或mod_proxy_ajp
等模块与 AJP 服务通信,实现负载均衡、请求转发和会话保持等功能。- 常见使用场景
- 负载均衡和反向代理:在多台 Tomcat 服务器后面部署 Apache HTTP Server,通过 AJP 协议进行负载均衡和请求分发。
- 安全隔离:通过 AJP,前端服务器可以屏蔽后端应用服务器的直接暴露,提供一定程度的安全隔离。
- 默认端口
- 通常,AJP 服务在 Tomcat 中默认监听 8009 端口。当然,根据实际配置,这个端口可以被修改。
- 安全注意事项
- AJP 协议曾经因为配置不当导致安全漏洞(例如 “Ghostcat” 漏洞),因此在使用 AJP 时应确保配置正确,并采取必要的安全措施,如限制访问来源、更新补丁等。
可以搜索一下有没有什么漏洞
输入ajp vulnerability来搜索
在searchsploit查一下有没有漏洞利用代码
后面两个是我们想要的,我们先看python脚本的
48143.py
我需要先明白这个漏洞大致的原理:
1、AJP协议:Tomcat用于前端代理(如Apache)和后端容器通信的协议。
- 漏洞原理:构造恶意AJP请求,通过
<font style="color:rgb(248, 250, 255);background-color:rgb(41, 42, 45);">javax.servlet.include</font>
属性触发本地文件包含(LFI),从而读取敏感文件(如<font style="color:rgb(248, 250, 255);background-color:rgb(41, 42, 45);">WEB-INF/web.xml</font>
)。2、解析命令行参数(目标IP、端口、文件路径)。
- 通过
<font style="color:rgb(248, 250, 255);background-color:rgb(41, 42, 45);">Tomcat</font>
类连接目标服务器的AJP端口(默认8009)。3、构造包含恶意属性的AJP请求:
- 设置`<font style="color:rgb(248, 250, 255);background-color:rgb(41, 42, 45);">req_attribute</font>`属性,指定要包含的文件路径(如`<font style="color:rgb(248, 250, 255);background-color:rgb(41, 42, 45);">WEB-INF/web.xml</font>`)。
4、发送请求并输出响应中的文件内容。
这个漏洞允许攻击者通过构造特定的AJP请求,出发本地文件包含(LFI),从而读取服务器上的敏感文件,比如WEB-INF/web.xml。这个文件通常包含Web应用程序的配置信息,有时会有敏感数据,比如数据库密码或者其他凭证。
尝试直接运行脚本告诉我们需要四个参数,[]表示可选,这里默认即可,target填目标ip
root@ip-10-10-211-144:~# python 48143.py 10.10.158.119
Getting resource at ajp13://10.10.158.119:8009/asdf
----------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"
metadata-complete="true">
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to GhostCat
skyfuck:8730281lkjlkjdqlksalks //一个凭证对,即一个用户名和一个密码,中间常常用:隔开
</description>
</web-app>
提权
枚举:
sudo -l:看来不行
SUID:
SUID是linux/unix中的一种特殊权限,允许用户以文件所有者的身份执行文件
- 示例:
如果一个程序的所有者是<font style="color:rgb(248, 250, 255);background-color:rgb(41, 42, 45);">root</font>
,且设置了SUID位,普通用户执行该程序时,会临时拥有<font style="color:rgb(248, 250, 255);background-color:rgb(41, 42, 45);">root</font>
权限。
find命令是搜索具有SUID权限的文件的一种方法
<font style="color:rgb(0, 0, 0);"> find / -user root -perm /4000 2>/dev/null</font>
-user root:筛选文件所有者(User)是root的文件
-perm /4000:
作用:匹配设置了SUID权限的文件
/符号:表示“至少满足一个权限位被设置”(不要求精确匹配)(下面会具体解释其含义)
首先我们拿具有suid权限的ping程序和普通的cat程序做一个对比
可以看到ping有一个suid标志位
问:为什么ping需要suid权限?
答:
一个命令在执行时只有拥有它需要的权限才能执行
比如说cat命令是用当前用户(假设这里是普通用户)打开的,cat不能打开root的文件
ping在运行时会发送acmp数据包来判断网络通信
但是一般情况下发送acmp数据包是需要管理员权限的
但是普通用户也需要使用ping命令,所以就有了设置suid标志位
所以ping实际上是以root用户的身份来运行的
SUID标志位导致的问题:无论是谁只要运行了suid标志位的二进制文件,
他(运行这个文件的当前用户)就总是以它(这个二进制文件的权限,比如图中得知这里cat和ping都是root)的所有者的权限来运行
所以,如果SUID被设置在了一些具有很多功能,不比如执行命令等等的二进制文件上,就会导致我们能够用来提升文件
还是打开GTFOBins,这里也讲了SUID
如果想看看这些suid权限的文件能否被利用,可以看看这个网站
这个靶的文件搜索之后是无法利用的
SUID提取无法使用,继续找有没有其他可以利用的文件
没见过的后缀,查一下用途
scp
(Secure Copy)是基于 SSH 协议的文件传输工具,用于在本地和远程计算机之间安全地复制文件或目录
因为我们已经有skyfuck的明文密码了,使用这个文件传输命令后会要求你输入对应用户的密码,使用起来正好
打开自己主机的终端:
scp skyfuck@10.10.158.119:/home/skyfuck/* .
- 功能:从远程服务器
10.10.158.119
的用户skyfuck
的主目录下(/home/skyfuck/
),下载所有文件(*
)到本地当前目录。
这里asc文件应该含有php的密钥
点击asc文件,回应密钥被导入
但是导入之后打开pgp还是需要密码
尝试破解得到密码(真实环境下很难),但是这个靶机,我们可以尝试破解asc得到其中记载的明文,从而打开pgp
把asc中格式转换成哈希
john是一个用来破解密码的工具,xxx2john,是把各种格式转换成这个john工具可以破解的哈希
locate
命令用于快速查找系统中的文件或目录。它基于预先构建的数据库(通常是/var/lib/mlocate/mlocate.db
),因此搜索速度比find
命令快,但可能不会立即反映最近的文件更改。
这里两个路径的命令都可以
暴力破解
转换成哈希之后,就可以尝试用john破解了
指定密码本rockyou.txt
找到一个密码,尝试输入进pgp
破解之后打开解密后生成的文件,得到了另一个用户的明文密码
直接ssh尝试登录
登录成功,
zip命令可以以管理员身份执行(但是实际情况下应该没有好心人会把zip设置成管理员身份执行)
去GTF上看看
直接复制这一段
来源链接:https://www.cnblogs.com/Ex1st/p/18746453/tomghost
没有回复内容