Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
TwoMillion-Machine-Writeup — From deobfuscating code.js to root, CVE-2023-0386 | Kitploit
工具/GitHubGitHub/anxs3c/twomillion-machine-writeup
Privilege EscalationReconnaissanceExploitationLateral MovementReverse EngineeringWeb Application ExploitationCTFPenetration TestingLearning & EducationLabs & Practice
GitHubanxs3c/twomillion-machine-writeup

TwoMillion-Machine-Writeup

2个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

From deobfuscating code.js to root, CVE-2023-0386

查看仓库

关于机器

TwoMillion 是一台 Easy 难度的 Linux 机器,为庆祝 HackTheBox 用户数达到 200 万而发布。该机器包含旧版 HackTheBox 平台,其中带有旧版可破解的邀请码。破解邀请码后,可以在平台上创建账户。该账户可用于枚举各种 API 端点,其中一个端点可用于将用户提升为管理员。获得管理员权限后,用户可以在管理员 VPN 生成端点中执行命令注入,从而获得系统 Shell。发现一个 .env 文件包含数据库凭据,并且由于密码重用,攻击者可以以 admin 用户身份登录该机器。该机器系统内核版本过旧,可利用 CVE-2023-0386 获得 root Shell

扫描结果

端口服务详细信息
22/tcpsshsyn-ack ttl 63 OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
80/tcphttpsyn-ack ttl 63 nginx 2million.htb

主机设置

我将 2million.htb 添加到了我的 /etc/hots 文件中


路径发现

我使用 gobuster 对 2million.htb 进行了路径发现

在枚举过程中,我发现了 /invite 端点

在访问 /invite 页面后


在检查页面时,我注意到它加载了一个名为 inviteapi.min.js 的 JavaScript 文件,其中包含混淆代码:

root@kitploit:~
eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('1 i(4){h 8={"4":4};$.9({a:"7",5:"6",g:8,b:\'/d/e/n\',c:1(0){3.2(0)},f:1(0){3.2(0)}})}1 j(){$.9({a:"7",5:"6",b:\'/d/e/k/l/m\',c:1(0){3.2(0)},f:1(0){3.2(0)}})}',24,24,'response|function|log|console|code|dataType|json|POST|formData|ajax|type|url|success|api/v1|invite|error|data|var|verifyInviteCode|makeInviteCode|how|to|generate|verify'.split('|'),0,{}))

反混淆

我使用 de4js 对代码进行了反混淆,得到了以下可读的 JavaScript:


root@kitploit:~
function verifyInviteCode(code) {
    var formData = {
        "code": code
    };
    $.ajax({
        type: "POST",
        dataType: "json",
        data: formData,
        url: '/api/v1/invite/verify',
        success: function (response) {
            console.log(response)
        },
        error: function (response) {
            console.log(response)
        }
    })
}

function makeInviteCode() {
    $.ajax({
        type: "POST",
        dataType: "json",
        url: '/api/v1/invite/how/to/generate',
        success: function (response) {
            console.log(response)
        },
        error: function (response) {
            console.log(response)
        }
    })
}

makeInviteCode():生成一个新的邀请码
verefyInviteCode(code):检查代码是否有效

为了进一步理解,我拦截了验证请求:


该 API 使用 JSON 响应

生成邀请码与 ROT13 解密

我打开浏览器控制台并执行了 makeInviteCode()


我注意到数据使用 ROT13 密码进行了加密


解密后,我发现了端点 /api/v1/invite/generate,随后我生成了邀请码


Base64 解密

密钥
密钥 2F4BN-YI8OH-B0SCL-L8OE6 被输入并成功接受

注册

首页

访问页面
这个站点上能正常工作的页面不多,而访问页面才是真正有趣的地方

API 端点枚举
我通过点击 connection pack 按钮上传了 VPN 文件,并拦截了 GET request


然后我执行了一个带有 verbose 和 silent 选项的 curl 请求,以枚举可用的 API endpoints



服务器响应了 JSON 格式的 API 端点列表

管理员拥有 3 个支持 GET、POST 和 PUT 方法的 API 端点

当我尝试使用管理员端点 /api/v1/admin/vpn/generate 生成管理员密钥时,由于我不是管理员,密钥未能生成,第一个管理员端点 /api/v1/admin/auth 证实了这一点





Web 应用垂直权限提升:将当前标准用户提升为管理员


在发现带有 Content-Type: application/json 和 required parameters 的正确 PUT request 格式后,我成功将自己的用户提升为管理员











操作系统命令注入

我将 ;whoami; 注入到用户名字段中,我怀疑问题出在 exec() 或 system() PHP 函数上,这些函数常见于仅限管理员的功能,且通常缺乏适当的清理措施

例如,易受攻击的代码可能如下所示:

root@kitploit:~
$username = $json->username;

exec("/usr/bin/cat /var/www/html/VPN/user/$username.ovpn");

该端点 POST /api/v1/admin/vpn/generate 存在漏洞,操作系统命令注入 已成功执行




初始访问:通过 OS 命令注入获得反向 Shell(base64 绕过)

编码 payload 以绕过限制

由于应用程序存在阻止特殊字符的限制,我对反向 Shell 的 payload 命令进行了 base64 编码,以绕过该限制


注入编码后的 payload

我将 payload 注入 username parameter,并通过管道传递给 base64 -d | bash 进行解码和执行:


Netcat 监听器


获得初始访问权限

payload 执行成功,以 www-data user 身份返回了一个反向 Shell


横向移动

我尝试使用多种技术,从 www-data 用户 向 admin 用户 进行横向移动

在检查 /var/www/html 目录时,我发现了一个包含 数据库凭据 的 .env 文件:


发现的密码被成功复用,以通过 SSH 和 MySQL 进行身份验证

SSH

MySQL


操作系统权限提升

在以 admin 用户获得初始访问权限后,我进行了系统枚举,以识别潜在的权限提升向量

我尝试了所有最常用的权限提升技巧,如 SUID 二进制文件、capabilities、sudo 权限、cron 作业,但都不起作用。于是我检查了环境变量,寻找 PATH 劫持或敏感变量,并发现了一个指向 /var/mail/admin 的 MAIL variable


我去查看了邮件内容,注意到管理员曾被警告修补内核以防范 OverlayFS/FUSE vulnerability


内核版本

操作系统版本

内核从未更新,证实管理员忽视或忘记了安全警告

内核枚举显示版本为 5.15.70-051570-generic,该版本存在 CVE-2023-0386 OverlayFS/FUSE 本地权限提升漏洞

确认漏洞后,我着手获取公开的 POC 漏洞利用代码

我克隆了 POC,并将其传输到目标机器

随后我执行了它,并成功获得了 root 访问权限


攻击链



参考资料

CVE-2023-0386 - CVE-2023-0386 - 操作系统命令注入



免责声明: 该机器是在经授权的渗透测试环境中完成 root 的。

下载工具
阶段技术目标结果
1. 侦察端口扫描22 (SSH), 80 (HTTP)服务发现
路径发现/invite发现邀请页面
JS 反混淆inviteapi.min.js暴露了 API 端点
2. 初始访问邀请码生成POST /api/v1/invite/generate有效的邀请码
注册POST /api/v1/user/register创建标准用户
3. Web 权限提升API 枚举GET /api/v1发现管理员端点
垂直权限提升PUT /api/v1/admin/settings/updateis_admin: 0 -> 1
4. 系统访问命令注入POST /api/v1/admin/vpn/generateusername=test;id;
反向 ShellBase64 编码的 payloadwww-data shell
5. 横向移动文件发现/var/www/html/.envadmin:SuperDuperPass123
SSH 复用ssh [email protected]获取 admin 用户访问权限
6. Root 权限提升内核枚举uname -r -> 5.15.70识别出 CVE-2023-0386
邮件警告/var/mail/admin确认 OverlayFS/FUSE
漏洞利用执行./fuse && ./expRoot shell