【Hackthebox 中英 Write-Up】通过 POST 请求绕过前端限制:基于 Cookie 的认证与数据提取实操指南

Bypassing Frontend Restrictions with POST Requests: A Practical Guide to Cookie-Based Authentication and Data Extraction

通过 POST 请求绕过前端限制


Objective | 目标

The purpose of this exercise is to understand how POST requests work and how to authenticate and extract data directly from a web application using cookies and JSON-based POST requests.

本次任务的目的是理解 POST 请求的工作原理,并通过 Cookie 和基于 JSON 的 POST 请求直接从 Web 应用中认证并提取数据。


Steps | 操作步骤

Step 1: Log In to the Web Application | 登录 Web 应用

  1. Open the browser and visit the URL:
    打开浏览器并访问以下 URL:

    http://94.237.62.184:50777/
    
  2. Use the credentials to log in:
    使用以下凭据登录:

    Username: admin  
    Password: admin
    
  3. Open Developer Tools (Ctrl+Shift+I or Cmd+Option+I) and go to the Network tab.
    打开 开发者工具,进入 Network 标签。

  4. Clear previous network requests and log in again. Observe the POST request sent during login. You will see something like this:
    清除旧的网络请求记录,再次登录。观察发送的 POST 请求,你会看到类似以下的数据:

    POST / HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    username=admin&password=admin
    

Step 2: Authenticate with cURL and Extract the Session Cookie | 使用 cURL 认证并提取会话 Cookie

  1. Open the terminal and run the following cURL command to log in: 在终端中运行以下 cURL 命令进行登录:

    curl -X POST -d 'username=admin&password=admin' http://94.237.62.184:50777/ -i
    
  2. Look for the Set-Cookie header in the response. For example:
    在响应中找到 Set-Cookie 头,例如:

    Set-Cookie: PHPSESSID=gg799jqsgbl84sa9mgpr01q2qo; path=/
    
  3. Copy the session ID (PHPSESSID=gg799jqsgbl84sa9mgpr01q2qo). This will be used in subsequent requests for authentication.
    复制会话 ID (PHPSESSID=gg799jqsgbl84sa9mgpr01q2qo),后续请求中将使用它进行认证。


Step 3: Search for the Flag Using a JSON POST Request | 使用 JSON POST 请求搜索 Flag

  1. Construct a JSON POST request to interact with the search function and retrieve the flag:
    构造一个 JSON POST 请求,与搜索功能交互并提取 flag:

    curl -X POST -d '{"search":"flag"}' -b 'PHPSESSID=gg799jqsgbl84sa9mgpr01q2qo' -H 'Content-Type: application/json' http://94.237.62.184:50777/search.php
    

    Explanation | 解释:

    • -X POST: Specifies this is a POST request.
      指定这是一个 POST 请求。
    • -d '{"search":"flag"}': Sends the search term flag in JSON format.
      以 JSON 格式发送搜索词 flag
    • -b 'PHPSESSID=...': Adds the session cookie for authentication.
      添加会话 Cookie 用于认证。
    • -H 'Content-Type: application/json': Specifies the request body is JSON.
      指定请求体为 JSON 格式。
  2. The server will respond with the flag. For example:
    服务器会返回包含 flag 的响应,例如:

    ["flag: HTB{p0$t_r3p34t3r}"]
    

Purpose of the Test | 测试目的

  1. Understand POST Requests | 理解 POST 请求

    • POST requests are commonly used for sensitive data transmission, such as login credentials or search queries. This exercise demonstrates how POST requests work and how they differ from GET requests.

      POST 请求常用于传输敏感数据,如登录凭据或搜索查询。本练习展示了 POST 请求的工作原理及其与 GET 请求的不同。

  2. Simulating Backend Interactions | 模拟后端交互

    • By bypassing the frontend, we directly interact with the backend API, which is a crucial skill for penetration testing and bug bounty hunting.

      通过绕过前端,我们直接与后端 API 交互,这是渗透测试和漏洞赏金挖掘的重要技能。

  3. Exploiting Weak Authentication | 利用弱认证机制

    • Demonstrates how session cookies can be used to persist authentication and how improper handling can lead to vulnerabilities.

      演示了如何使用会话 Cookie 维持认证,以及不当处理如何导致漏洞。

  4. Real-World Application | 现实应用

    • This technique can uncover weaknesses in authentication systems, helping secure web applications against unauthorized access or data breaches.

      该技术可发现认证系统中的弱点,帮助保护 Web 应用免受未授权访问或数据泄露。


Summary | 总结

Steps Recap | 操作回顾

  1. Log in and capture the POST request: Observed login data in the browser’s network tab.

    登录并捕获 POST 请求:在浏览器的网络标签中观察到登录数据。

  2. Authenticate with cURL and extract the session cookie: Logged in via cURL and retrieved the session ID.

    使用 cURL 认证并提取会话 Cookie:通过 cURL 登录并提取会话 ID。

  3. Send a JSON POST request with the cookie: Used the session ID to send a POST request to /search.php and retrieve the flag.

    使用 Cookie 发送 JSON POST 请求:用会话 ID 向 /search.php 发送 POST 请求并获取 flag。

Flag | Flag

HTB{p0$t_r3p34t3r}

How to Prevent This Vulnerability | 如何防范此类漏洞

  1. Secure Session Management | 加强会话管理

    • Use short session lifetimes and enforce reauthentication for sensitive actions.

      缩短会话有效期,并在敏感操作中强制重新认证。

  2. Implement Strong Authentication | 实施强认证机制

    • Enforce multi-factor authentication (MFA) to prevent unauthorized access.

      强制多因素认证 (MFA),防止未授权访问。

  3. Sanitize Inputs and Validate Headers | 清理输入并验证请求头

    • Validate the Content-Type header and sanitize input data to prevent malicious requests.

      验证 Content-Type 头并清理输入数据,防止恶意请求。

  4. Use HTTPS | 使用 HTTPS

    • Encrypt all communications to prevent session hijacking or man-in-the-middle attacks.

      加密所有通信以防止会话劫持或中间人攻击。

欢迎来到我的writeup分享!我希望大家不要只关注结果或答案,而是通过耐心阅读,尝试逆向工程理解背后的运作原理。在这里,你不仅能找到解题的思路,还能学到更多与Hack The Box等平台相关的技术和技巧,期待与你们一起成长为更优秀的黑客!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS NEXT 实战之元服务:静态案例效果---我的热门应用服务

背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图1完整代码案例如下: Index import { authentica…

ArcGIS Pro地形图四至角图经纬度标注与格网标注

今天来看看ArcGIS Pro 如何在地形图上设置四至角点的经纬度。方里网标注。如下图的地形图左下角经纬度标注。 如下图方里网的标注 如下为本期要介绍的例图,如下: 图片可点击放大 接下来我们来介绍一下 推荐学习:GIS入门模型构建器Arcpy批量…

数字图像处理

一 形态学处理 ①二值图像 PS:1(255)代表的是白 0代表的是黑(0就是什么都看不见,就是黑) ②灰度图像 ③彩色图像 ④数学形态学基础:是分析几何形状和结构的数学方法,它建立在…

linux-软硬链接

我们今天再来聊一下这个"软硬链接"的问题. 目录 1. 软硬链接长什么样?2. 软连接和硬链接的特征 和 应用2.1 软连接特征 及其 应用?①软连接是什么?②软连接的应用1: 快捷方式③软连接的应用2: 方便维护库文件 2.2 硬连接特征 及其 应用?①硬链接是什么?②引用计…

SpringCloud 系列教程:微服务的未来(三)IService接口的业务实现

本文将介绍 IService 接口的基本业务操作、复杂业务操作、Lambda 方法的使用以及批量增加操作,帮助开发者深入了解如何高效地利用 MyBatis-Plus 提供的功能进行数据库操作。无论是简单的单表查询,还是复杂的多表联动,甚至是大数据量的批量操作…

Linux第100步_Linux之设置LCD作为终端控制台和LCD背光调节

KMS是Kemmel Mode Setting的缩写,内核显示模式设置。它主要负责显示的控制,包括屏幕分辨率、屏幕刷新率和颜色深度等等。 CRTC是指显示控制器,在DRM里有多个显存,通过操作CRTC来控制要显示那个显存。 KMS包含了FB框架。DRM驱动默…

解决pycharm无法识别miniconda

解决pycharm无法识别miniconda 选中 conda.bat 点击 Load Enviroments

云手机群控能用来做什么?

随着云手机的发展,云手机群控技术逐渐从小众的游戏多开工具,发展为涵盖多个领域的智能操作平台。不论是手游搬砖、短视频运营,还是账号养成等场景,云手机群控都展现出了强大的应用潜力。本文将为大家详细解析云手机群控的应用场景…

道路倒角 三角网 两侧偏移

public void 多段线和直线两侧缓冲区(){List<Curve> ents1 Z.db.SelectEntities<Curve>();List<Polyline> ents Z.db.CurvesToPolyLines2(ents1);//Z.db.SelectEntities<Polyline>();double offsetDistance 5.0;//p距离double offsetDistance2 1.0…

patch补丁制作,合入,卸载的方法

创建PATCH目录&#xff0c;进入该目录下&#xff0c;创建文件夹old, new, 创建文件1.c&#xff1b; 1.c内容如下&#xff1a; 在new下修改1.c&#xff1a; 开始制作1.patch diff -Naur ./old/1.c ./new/1.c > 1.patch 进入 vi 1.patch&#xff1a; 1.patch内容如下&#…

【基础篇】一、MySQL数据库基础知识

文章目录 Ⅰ. 什么是数据库1、普通文件的缺点2、数据库的概念3、主流数据库4、MySQL Ⅱ. MySQL中客户端、服务端、数据库的关系Ⅲ. 见一见数据库1、数据库文件存放的位置2、创建数据库3、使用数据库4、创建数据库表结构5、表中插入数据6、查询表中数据7、数据的存储逻辑 &#…

电脑vcruntime140.dll丢失的解决方法!vcruntime140.dll丢失是

一、文件丢失问题&#xff1a;vcruntime140.dll丢失的解决方法 vcruntime140.dll是Visual C Redistributable for Visual Studio的一个关键组件&#xff0c;许多应用程序和游戏都需要它才能正常运行。当系统提示vcruntime140.dll丢失时&#xff0c;通常意味着你的系统中缺少了…

【SpringBoot教程】IDEA快速搭建正确的SpringBoot版本和Java版本的项目

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 &#x1f349;今天毛毛张分享的是在做SpringBoot项目中遇到的三个问题&#xff0c;这三个问题看似都是小问题&#x1f353;&#xff0c;但是却是做项目的基础常识⚠️…

MultiDiff 论文解读

一、CameraCtrl AnimateDiff->MotionCtrl->CameraCtrl CameraCtrl将多帧图像的Plucker射线输入到Camera Encoder&#xff0c;Plucker射线可以表示每个像素对应的光线方向。 Camera Encoder包括ResNet block和Temporal Attention&#xff0c;来提取每一帧相机位姿的时序…

C语言性能优化:从基础到高级的全面指南

引言 C 语言以其高效、灵活和功能强大而著称&#xff0c;被广泛应用于系统编程、嵌入式开发、游戏开发等领域。然而&#xff0c;要写出高性能的 C 语言代码&#xff0c;需要对 C 语言的特性和底层硬件有深入的了解。本文将详细介绍 C 语言性能优化的背后技术&#xff0c;并通过…

用点包图洞察医学数据:以血压分析为例

在医学数据分析的广袤天地里&#xff0c;可视化手段无疑是我们快速洞察数据、挖掘关键信息的有力 “武器”。今天&#xff0c;就来给各位医学同仁介绍一种别具一格的可视化图表 —— 点包图&#xff08;Diverging Dotplot&#xff09;&#xff0c;顺便分享一段用 Python 实操绘…

python爬虫----爬取视频实战

python爬虫-爬取视频 本次爬取&#xff0c;还是运用的是requests方法 首先进入此网站中&#xff0c;选取你想要爬取的视频&#xff0c;进入视频页面&#xff0c;按F12&#xff0c;将网络中的名称栏向上拉找到第一个并点击&#xff0c;可以在标头中&#xff0c;找到后续我们想要…

C# 中使用 MassTransit

在生产环境中使用 MassTransit 时&#xff0c;通常需要进行详细的配置&#xff0c;包括设置连接字符串、配置队列、配置消费者、处理重试和错误队列等。以下是一个完整的示例&#xff0c;展示了如何在 ASP.NET Core 应用程序中配置 MassTransit&#xff0c;包括请求/响应模式和…

【Hackthebox 中英 Write-Up】Manipulating a CRUD API | 操控 CRUD API:一步步提取 Flag

Objective | 目标 This challenge demonstrates how to interact with a CRUD API to perform Update, Delete, and Search operations to retrieve the flag. 本次挑战旨在演示如何与 CRUD API 交互&#xff0c;通过执行 更新、删除 和 搜索 操作来获取 Flag。 操控 CRUD AP…

【OpenGL ES】GLSL基础语法

1 前言 本文将介绍 GLSL 中数据类型、数组、结构体、宏、运算符、向量运算、矩阵运算、函数、流程控制、精度限定符、变量限定符&#xff08;in、out、inout&#xff09;、函数参数限定符等内容&#xff0c;另外提供了一个 include 工具&#xff0c;方便多文件管理 glsl 代码&a…