Hack the Box 靶场练习-INSANE-ArtificialUniversity

💡 原文中文,约7100字,阅读约需17分钟。
📝

内容提要

本文分析了Hack The Box上的一个web题目,涉及在线教育平台的商城模块。通过对gRPC和Flask服务的分析,发现了利用链。修改DebugService参数后触发命令执行,最终构造恶意请求成功反弹shell并获取flag。

🎯

关键要点

  • Hack The Box上的web题目ArtificialUniversity模拟在线教育平台的商城模块。
  • 项目源码分为gRPC的product_api服务和Flask的store商城web两个部分。
  • 通过分析gRPC的GenerateProduct函数发现其调用了eval函数,存在命令执行漏洞。
  • DebugService函数可以修改price_formula参数,构造利用链以执行恶意命令。
  • 在本地环境成功复现命令执行后,开始分析web端的接口寻找漏洞。
  • 发现/checkout/success接口存在越权漏洞,可以利用admin身份访问敏感内容。
  • 通过创建价格为负数的订单,绕过登录验证,访问/admin相关接口。
  • 利用pdf.js的xss漏洞构造payload,发送post请求访问/admin其它接口。
  • 将gRPC请求转换为gopher协议,通过curl发送请求实现命令执行。
  • 最终通过构造的payload反弹shell并获取flag。

延伸问答

Hack The Box上的ArtificialUniversity题目主要模拟了什么?

ArtificialUniversity题目模拟了在线教育平台的商城模块。

在ArtificialUniversity中,如何利用gRPC服务的漏洞进行命令执行?

通过修改DebugService的price_formula参数并调用GetNewProducts函数,可以触发eval函数执行恶意命令。

如何在web端发现越权漏洞?

在/checkout/success接口中,通过传入admin的账号和密码,可以访问敏感内容,发现了越权漏洞。

创建负数价格订单的目的是什么?

创建负数价格订单是为了绕过登录验证,访问/admin相关接口。

如何利用pdf.js的xss漏洞进行攻击?

可以构造payload,利用pdf.js的xss漏洞发送post请求访问/admin其它接口。

最终如何获取flag?

通过构造的payload反弹shell并获取flag。

➡️

继续阅读