Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
TwoMillion-Machine-Writeup — 从反混淆 code.js 到获取 root 权限,CVE-2023-0386 | Kitploit
工具/GitHubGitHub/anxs3c/twomillion-machine-writeup
权限提升侦察漏洞利用横向移动逆向工程Web应用程序漏洞利用CTF渗透测试学习与教育实验室与实践
GitHubanxs3c/twomillion-machine-writeup

TwoMillion-Machine-Writeup

173个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

从反混淆 code.js 到获取 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 文件,其中包含混淆代码:

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:


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 函数上,这些函数常见于仅限管理员的功能,且通常缺乏适当的清理措施

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

$username = $json->username;

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

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




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

编码 payload 以绕过限制

下载工具