HackMyVM-Node
好想变成一只水母啊……
极简靶机,总体只有两个知识点。
靶机ip:192.168.56.127
GetHungry
扫描端口,发现只开了22和一个叫3000的自定义端口。
1 |
|
访问3000端口,是个JS原型链污染挑战的小游戏,一共要过四关。
解释 JavaScript 中的 Prototype Pollution (原型污染) 漏洞及其防御。 - 智猿学院-前后端,数据库,人工智能,云计算等领域前沿技术讲座
【漏洞学习】JavaScript Prototype Pollution(JavaScript原型污染漏洞) - wh03ver-momo - 博客园
关卡 1: 基础原型污染
通过修改对象原型或函数验证来提升权限。使用JSON输入进行攻击。
1 |
|
关卡 2: 绕过简单防护
通过修改对象原型或函数验证来提升权限。使用JSON输入进行攻击。
当前进度 25%
攻击提示
这一关过滤了 ‘proto‘,尝试使用 ‘constructor.prototype’ 污染 Array.prototype
1 |
|
关卡 3: 多层原型污染
通过修改对象原型或函数验证来提升权限。使用JSON输入进行攻击。
当前进度 50%
攻击提示
使用嵌套对象中的 ‘proto‘ 污染 Object.prototype,使所有对象(包括函数实例)继承 isAdmin 属性
1 |
|
关卡 4: 动态验证绕过
通过修改对象原型或函数验证来提升权限。使用JSON输入进行攻击。
1 |
|
全部做完之后拿到hungry:imveryhungry,即user登录密码,ssh上去拿到userflag。
1 |
|
ps:因为之前web界面好像延迟开放了一会先用curl扫了一下,里面有非常非常多的信息,包括easy模式还有flag存储的api能直接访问,不过至少要先做一题拿到管理员cookie
pps:easy模式真的直接给登录账号密码。
Root
这里信息收集挺麻烦的就不浪费版面了,没发现东西后来问了作者才知道是要利用polkit。
1 |
|
polkit-agent-helper-1为root权限。
这我一开始没想到,毛了夜佬的wp。
1 |
|
为什么结合 polkit-agent-helper-1
可以直接获取 root 权限?
polkit
的工作原理:
polkit
(PolicyKit)是 Linux 上用于授权非特权进程(如普通用户)执行特权操作(如以 root 用户运行命令)的框架。它通过策略规则来控制哪些操作可以由哪些用户执行。polkit-agent-helper-1
是一个与polkit
一起工作的工具,它用于处理用户的认证请求和执行操作的授权。授权过程:
当你运行systemd-run -t /bin/bash
时,系统会触发一个polkit
授权请求,要求用户进行身份验证。此时,polkit
会根据策略规则,决定是否允许该用户执行 root 操作。如果你输入正确的密码(或系统配置允许你的用户执行该操作),就会成功提升为 root 权限。polkit-agent-helper-1
的角色:
polkit-agent-helper-1
作为一个工具,可以触发polkit
的认证过程,允许特定用户(如普通用户hungry
)在未完全依赖于手动输入密码的情况下获取 root 权限。换句话说,如果polkit-agent-helper-1
被配置为允许普通用户以 root 权限执行某些命令,它将通过polkit
提供认证机制,并授权用户以 root 权限执行相关命令。权限策略配置:
实际上,polkit
是通过一系列的权限策略文件来控制访问的。例如,/etc/polkit-1/
目录下的策略文件指定了哪些操作是允许的,哪些是需要管理员权限的,或者哪些命令是普通用户可以执行的。如果polkit
的策略文件配置了普通用户hungry
可以运行特定命令(如systemd-run
)并授权该操作,它就能够在认证后以 root 身份执行命令。如何实现这一点:
polkit-agent-helper-1
可以在后台自动处理polkit
认证过程,避免需要手动输入密码。systemd-run
命令本身会触发polkit
认证请求,但polkit-agent-helper-1
可以通过polkit
自动处理授权,从而允许普通用户在获得授权后执行 root 命令。
总之,
polkit-agent-helper-1
结合polkit
的授权机制,能够帮助普通用户执行本应由 root 用户执行的命令。
总结
polkit-agent-helper-1
与 polkit
结合使用时,能够通过自动化身份验证和权限授权的过程,让普通用户通过 polkit
授权来运行 root 权限的命令。在你的例子中,polkit-agent-helper-1
通过触发 polkit
的授权流程,允许 hungry
用户以 root 身份执行 systemd-run
命令。
如果你不希望某个用户能够轻松获得 root 权限,应该调整相应的 polkit
策略,限制其对特定命令或服务的访问权限。
好想变成一只水母啊……