Hack the Box 靶场练习-INSANE-ArtificialUniversity
内容提要
本文分析了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。