找回密码
 立即注册
首页 业界区 安全 tomghost打靶学习笔记(3)

tomghost打靶学习笔记(3)

山芷兰 7 天前
主要内容
信息收集:ajp漏洞
横向提权:在没有办法立刻提升到管理员权限时,可以试试通过横向的权限提升切换到其他用户再做提权尝试
涉及尝试了前两台靶机没有用过的枚举方法,比如SUID
使用john解码工具进行pgp解密
参考视频:https://www.bilibili.com/video/BV1fUwVeeELz/?spm_id_from=333.1387.upload.video_card.click&vd_source=e948147c25027ef3216b5c376b31fc96
首先还是nmap扫描
1.png

可以发现和之前两个靶机不同,这个靶机没有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端口做详细扫描,看一下它的服务是什么:
2.png

解释命令:
-p8080:指定只扫描端口8080
-sV:启用版本检测, 扫描时不仅检测端口是否开放,还尝试识别该端口上运行的服务及其版本信息。
总结起来,命令的作用是:
扫描目标 IP 的 8080 端口,检查这个端口是否开放,并尝试确定该端口上运行的服务是什么以及具体的版本号。
服务显示是Tomcat
用浏览器打开看一下,记得加8080端口
打开看到是一个tomcat的页面,遇到这种页面可以先看一下有没有管理页面
3.png

看到一个manager app
click it
4.png
oops ,甚至没有登录框
去看看别的端口,还是用一样的扫描方法
5.png

显示是一个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来搜索
6.png

在searchsploit查一下有没有漏洞利用代码
7.png

后面两个是我们想要的,我们先看python脚本的
48143.py
我需要先明白这个漏洞大致的原理:
1、AJP协议:Tomcat用于前端代理(如Apache)和后端容器通信的协议。

  • 漏洞原理:构造恶意AJP请求,通过javax.servlet.include属性触发本地文件包含(LFI),从而读取敏感文件(如WEB-INF/web.xml)。
2、解析命令行参数(目标IP、端口、文件路径)。

  • 通过Tomcat类连接目标服务器的AJP端口(默认8009)。
3、构造包含恶意属性的AJP请求:
  1. - 设置`<font >req_attribute</font>`属性,指定要包含的文件路径(如`<font >WEB-INF/web.xml</font>`)。
复制代码
4、发送请求并输出响应中的文件内容。
这个漏洞允许攻击者通过构造特定的AJP请求,出发本地文件包含(LFI),从而读取服务器上的敏感文件,比如WEB-INF/web.xml。这个文件通常包含Web应用程序的配置信息,有时会有敏感数据,比如数据库密码或者其他凭证。

尝试直接运行脚本
8.png
告诉我们需要四个参数,[]表示可选,这里默认即可,target填目标ip
  1. root@ip-10-10-211-144:~# python 48143.py 10.10.158.119
  2. Getting resource at ajp13://10.10.158.119:8009/asdf
  3. ----------------------------
  4. <?xml version="1.0" encoding="UTF-8"?>
  5. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  6.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  7.   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
  8.                       http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  9.   version="4.0"
  10.   metadata-complete="true">
  11.   <display-name>Welcome to Tomcat</display-name>
  12.   <description>
  13.      Welcome to GhostCat
  14.         skyfuck:8730281lkjlkjdqlksalks //一个凭证对,即一个用户名和一个密码,中间常常用:隔开
  15.   </description>
  16. </web-app>
复制代码
9.png
10.png

提权

枚举:
sudo -l:
12.png
看来不行
SUID:
13.png

SUID是linux/unix中的一种特殊权限,允许用户以文件所有者的身份执行文件

  • 示例:
    如果一个程序的所有者是root,且设置了SUID位,普通用户执行该程序时,会临时拥有root权限。
find命令是搜索具有SUID权限的文件的一种方法
find / -user root -perm /4000 2>/dev/null
-user root:筛选文件所有者(User)是root的文件
-perm /4000:
作用:匹配设置了SUID权限的文件
/符号:表示“至少满足一个权限位被设置”(不要求精确匹配)(下面会具体解释其含义)
14.png

首先我们拿具有suid权限的ping程序和普通的cat程序做一个对比
15.png

可以看到ping有一个suid标志位
问:为什么ping需要suid权限?
答:
一个命令在执行时只有拥有它需要的权限才能执行
比如说cat命令是用当前用户(假设这里是普通用户)打开的,cat不能打开root的文件
ping在运行时会发送acmp数据包来判断网络通信
但是一般情况下发送acmp数据包是需要管理员权限的
但是普通用户也需要使用ping命令,所以就有了设置suid标志位
所以ping实际上是以root用户的身份来运行的
SUID标志位导致的问题:无论是谁只要运行了suid标志位的二进制文件,
他(运行这个文件的当前用户)就总是以它(这个二进制文件的权限,比如图中得知这里cat和ping都是root)的所有者的权限来运行
所以,如果SUID被设置在了一些具有很多功能,不比如执行命令等等的二进制文件上,就会导致我们能够用来提升文件
还是打开GTFOBins,这里也讲了SUID
如果想看看这些suid权限的文件能否被利用,可以看看这个网站
这个靶的文件搜索之后是无法利用的
SUID提取无法使用,继续找有没有其他可以利用的文件
16.png

没见过的后缀,查一下用途
17.png
18.png
19.png

scp(Secure Copy)是基于 SSH 协议的文件传输工具,用于在本地和远程计算机之间安全地复制文件或目录
因为我们已经有skyfuck的明文密码了,使用这个文件传输命令后会要求你输入对应用户的密码,使用起来正好
打开自己主机的终端:
scp skyfuck@10.10.158.119:/home/skyfuck/* .

  • 功能:从远程服务器 10.10.158.119 的用户 skyfuck 的主目录下(/home/skyfuck/),下载所有文件(*)到本地当前目录。
    20.png

这里asc文件应该含有php的密钥
21.png

点击asc文件,回应密钥被导入
但是导入之后打开pgp还是需要密码
22.png

尝试破解得到密码(真实环境下很难),但是这个靶机,我们可以尝试破解asc得到其中记载的明文,从而打开pgp
把asc中格式转换成哈希
john是一个用来破解密码的工具,xxx2john,是把各种格式转换成这个john工具可以破解的哈希
locate 命令用于快速查找系统中的文件或目录。它基于预先构建的数据库(通常是 /var/lib/mlocate/mlocate.db),因此搜索速度比 find 命令快,但可能不会立即反映最近的文件更改。
23.png

这里两个路径的命令都可以
暴力破解
转换成哈希之后,就可以尝试用john破解了
指定密码本rockyou.txt
24.png

找到一个密码,尝试输入进pgp
破解之后打开解密后生成的文件,得到了另一个用户的明文密码
25.png

直接ssh尝试登录
26.png

登录成功,
27.png

zip命令可以以管理员身份执行(但是实际情况下应该没有好心人会把zip设置成管理员身份执行)
去GTF上看看
28.png
直接复制这一段
29.png
30.png


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册