• [原创]夺棋赛HackTheBox OpenSource攻略


    最近很忙,方案,建模大赛的技术支持,再忙也不忘自身的修行学习,都是抽取下班后晚上的时间做的,搞了4天,最终拿下棋子。

    • 简介

    HackTheBox(缩写HTB),HTB是一个网络安全攻防竞技场,全球的顶尖高手很多在上面,有人在上面出题(防守),就有人解题(攻击)。想提高网络攻防水平就来玩这个game平台。

    这个平台一个优点是靶机是现成的,vpn也是免费的。同样VulnHub也很出名,但VulnHub要自己下载虚拟机搭靶机,要消耗自己电脑的性能和用电,所以最佳实践推荐HTB。

    • 起因选题目

    起因很久以前也对安全技术感兴趣(10年以前),出来后没同事计算机安全的相关工作,不想以前的技能费了,以来玩HTB了(声明最后的系统root权限过程我只写思路,毕竞还有其他人玩,有玩家是靠攻略挣钱的,所以不能写太清楚)。

    HTB官网:Hack The Box

    内心独白:看一下排名,挑个人多的先练手(结果后面通关后发现一点都不easy),发现OpenSource有2044人在玩,通关的超过1900了。

    下面是我的通关截图:

     

    先百度看看有没有作业可以抄(结果什么也没搜索到):

     

    • 题目存在的漏洞
    1. 上传存在本地文件包含漏洞,作者提供了web页面的源代码,同时还能直接上传修改的python shell(不过作者想答题人走第2点的漏洞)。
    2. 存在一个werkzeug主件,结合1的漏洞,存在泄漏PIN码的漏洞,可拿到docker里的反向shell,从而拿到第1个赛点的flag.txt (flag中文意思是旗子,也就是夺棋赛)
    3. 开了1个3000端口,能够利用这个端口进行docker逃逸拿到一下RSA密钥key文件isa_da

    从而能直接远程SSH登录系统。

    1. 存在git的pre-commit漏洞,能够直接拿到root权限,从而拿到最后的/root/flag.txt

    • 必备工具

    神器级武器库:kali(一个网络攻击武器库,所有的hack几乎都在用)

    神器级武器:nc(号称瑞士刀)

    内网渗透神器级武器:chisel

    端口扫描的王者:nmap

    • 这种比赛的通用套路

     

    • 攻略过程
    1. 首先下载HTB免费的vpn,开启vpn通道

    sudo openvpn lab_einyboy.ovpn

    在opensoure的machine界面有目标主机的IP如下图

     

    然后ping 10.10.11.164看看网络是不是真的通了,如下: 

    1. 收集信息

    上军刀:nmap -sS -T4 -A -Pn 10.10.16.164

     

    看到开了22,80,3000端口,22是远程用的ssh端口,80是网页端口,是werkzeug 2.1.2写的后端(看到网页端口,这里就是套路了,90%以上出题者就是在这里给答提入口了)。上浏览器:

     

    点“take me there”能打开上传端口打开上传页面(有上传页面一搬就有上传漏洞)

     

    但这里还有个”download”点再后可以下载到页面源码,并用vscode打开

     

    看到conf结尾的文件打开记下内容(套路,这里目的看到个user=root,root后面用到)(这里原码都给了,也用不着套路2中的扫描目录了)

     

    (技术点web用python写的,可以直接在原代码上写webshell直接拿到一句话shell了,但这不是出题人的初衷,这里给出代码,方法不写了)

     

    1. 拿下出题人的第1个flag
    1. Firefox设计代理--->2.burpsuite拦截网页请求--->3.修改请求文件路径拿到敏感文件信息(前面基本功,这里在不细写)--->4. werkzeug console的PIN码---->5.拿下反弹shell---->拿下user flag.txt。
    1. 先可以百度“werkzeug”漏洞

    这里给出大神分析:https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/werkzeug

    漏洞的原理发现如下:

    1. 读取关键的几个文件

    文件(可尝试读取/etc/passwd密码文件):

    /sys/class/net/eth0/address

    /proc/sys/kernel/random/boot_id'

     /proc/self/cgroup

     

    1. 通过代码获取PIN(说明每个答题着PIN码不一样,请不要抄作业)

     

     

     

    访问http://10.10.11.164/conolse输入上面的PIN码得到交互的python shell.

     

    进去后就是通过python拿反弹shell了

    先在kali上开启监听端口,命令

    nc -lvnp 433

    然后在网站找python反弹shell代码:

    Online - Reverse Shell Generator

     

    在console里执行拿到反弹shell

     

    (注这里拿到的shell是在docker里面的,你可以理解为是虚拟机)

    所以还得逃逸到docker拿到物理机的shell

    注意下面红框的log输出,用nc 172.17.0.1 3000 -vvv命令试连3000端口,返回open状态,

    这里出题着告诉你可以使用chisel进行内网的进一步参透了。

    借助上传页面把chisel上传到/app/public/upload目录

    命令kali中执行chmod +x chisel

    ./chisel server -p 8000 --reverse

    在反弹的shell中

    cd /app/public/upload执行下图中的命令

    然后在kali浏览器访问127.0.0.1:3000 (看到了一个原代码管理页面)

    怎么登录了,有源码哦(这里是出题者套路一搬有git的查看相关人历史修改,找有添加、删除过什么配置文件里面一搬有密码)

    如下图的dev分支

    用dev01用户名,后后面的那串密码登录,看到home-backup不要犹豫打开他,这家里出题者套路,看到backup字眼里面一搬有远程ssh的密码)

     

    把.ssh文件夹里的密钥id_rsa下到kali,直接可ssh远程登录了

     

     

    下图拿下第1个flag

     

    1. 拿下出题人的第2个漏洞

    一搬套路是执行sudo -l 看看有没有特权文件,这里执行了没什么用。

    所以套路2,pspy看看系统有没有定时调度的进程什么的(本提套路)

    还是上传页面上pspy到/app/public/uploads

    反弹shell中chmod +x pspy

    ./pspy

    在下面的输出中你们看到git commit -m backup (看又是backup出题者的提示)

    这里有个pre-commit的漏洞可以提权(知道这个要看攻方的基本功了)

     

     

     如果没基本务,走套路,下面网站搜索git

     

    vi .git/hooks/pre-commit/myshell.sample

    在里在写入反弹shell

     

     最后通过反弹的shell拿到第2个flag

    总结写了那么长,我想说一点都还不easy点个赞 

     

     

     

     

     

  • 相关阅读:
    32、多租户(multi-tenancy)
    【数据结构】—— 单调栈
    玩转ASP.NET 6.0框架-序言
    向量与矩阵(2)
    Linux系统防火墙iptables
    mysql数据库备份(mysqldump)
    常见限流算法学习
    ARP攻击原理
    gitee 创建仓库 & git 连接
    docker镜像仓库
  • 原文地址:https://blog.csdn.net/huandaohack/article/details/125475064