Shikata Ga Nai

Private? There is no such things.

OWASP TOP10 2021の暗号化の失敗の例についてかいてみた

Hello there, ('ω')ノ

 

OWASP TOP10 2021について。

A02:2021の暗号化の失敗には、29のCWEがあって。

 

これには、

 弱い暗号化アルゴリズムの実装

 不十分または緩いキー生成

 暗号化の実装または証明書の検証の失敗

 クリアテキストでのデータの送信 など

データの転送中または保存中のセキュリティ障害が含まれていて。

 

よくあるのがパスワードのリセットの際のトークンで。

2つのメールアドレスで試してみて。

 hbothra22+1@gmail.com

 hbothra22+2@gmail.com

 

2つのリセットトークンを比較してみるとメカニズムがわかったりと。

 アカウント1のリンクをリセット:

  https://target.com/reset_password?token=zbp.nwavaqjbeptho%401+neugboufenu

 アカウント2のリンクをリセット:

  https://target.com/reset_password?token=zbp.nwavaqjbeptho%402+neugboufenu

 

ちなみに%40@で。

 

その他のケースだと、同じように2つのアドレスを用意して。

 vasuyadav1@gmail.com
 vasuyadav2@gmail.com

 

アカウントのパスワードのリセットをリクエストして。

メールでリンクを受け取ると。

 

f:id:ThisIsOne:20220109173025p:plain

 

最後に「==」が表示されるとBase64である可能性があるので。

それをデコードしてみると。

2つのアカウントでの違いがメールアドレスの違いだとわかったりと。

 

f:id:ThisIsOne:20220109173352p:plain

 

Best regards, (^^ゞ

POODLE SSLv3の脆弱性について調査してみた

Hello there, ('ω')ノ

 

OWASP TOP10 2021のA02について詳細を確認しようとしていて。

 https://owasp.org/Top10/ja/A02_2021-Cryptographic_Failures/

 

f:id:ThisIsOne:20220108175946p:plain

 

暗号化の失敗は、OWASP TOP10 2017で機密データの公開であるものの。

機密データの公開という名前は症状であって、根本的な原因ではないので。

暗号化が正しく実装されていないことを示すことになって。

 

このカテゴリに分類される問題をいくつか挙げると以下のとおりで。

 機密データは(HTTP、FTP、SMTPなどを介して)送信されるか。

 クリアテキスト(データベース、ファイルなど)に保存されたり。

 古いまたは弱い暗号化アルゴリズムの使用したり。

 弱い暗号化キーまたはデフォルトの暗号化キーの使用や。

 または侵害されたキーの再利用だったり。

 暗号化が実施されていないか、サーバー証明書との通信中に。

 サーバ証明書が検証されていなかったりと。

 

たとえば、SSL v3.0の脆弱性だと。

サーバ、クライアント間の通信において。

通信の一部が第三者に漏えいする可能性があって。

SSL v3.0をサポートするプログラムは、中間者攻撃が可能な環境で。

Padding Oracle On Downgraded Legacy Encryption (POODLE) 攻撃の影響を。

受ける可能性があるわけで。

 https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2014-3566

 

f:id:ThisIsOne:20220108183527p:plain

 

今回は、ShodanのDorksを使って調べることに。

 https://github.com/IFLinfosec/shodan-dorks

 

f:id:ThisIsOne:20220108175718p:plain

 

SSL v3.0については、下記のようなDorksで検索できて。

 ssl.version:sslv3

 

f:id:ThisIsOne:20220108175601p:plain

 

国やポートを指定して、より絞り込んだりと。

 ssl.version:sslv3 country:us port:25

 

f:id:ThisIsOne:20220108184118p:plain

 

検索結果より、詳細が確認できて。

 

f:id:ThisIsOne:20220108184413p:plain

 

結果もとにPOODLE攻撃に対して脆弱性のあるサーバを見つけることに。

 nmap -sV --version-light --script ssl-poodle -p 443 [IP_ADDR]

 

f:id:ThisIsOne:20220108190557p:plain

 

Best regards, (^^ゞ

 

Privilege Escalation - Hello Adminを訳してみた

Hello there, ('ω')ノ

 

特権の昇格を。

 

脆弱性:

 特権の昇格

 

記事:

 https://shahjerry33.medium.com/privilege-escalation-hello-admin-a53ac14fd388

 

概要 :

今回は、脆弱なプラグインを使用しているWordPressWebサイトで。

特権昇格を見つけた方法を紹介することに。

 

特権昇格とは、アクセスできないはずの何かにアクセスするための。

特権を取得することを意味して。

攻撃者は、さまざまな特権昇格手法を使用して。

許可されていないリソースにアクセスして。

プラグインが「wp_set_auth_cookie()」と呼ばれる脆弱な関数を使用していたため。

特権の昇格が可能で。

 

wp_set_auth_cookie()関数とは、認証Cookieの有効期限をフィルタリングして。

接続が安全かどうかも確認して。

また、ログインCookieを保護するためにも使用されて。

認証Cookieが設定される直前に起動して。

 

構文:

ユーザーIDに基づいて認証Cookieを設定して。

 wp_set_auth_cookie( int $user_id, bool $remember=false, bool|string $secure=’’, string $token=‘‘)

 

説明 :

 $Rememberパラメータは、Cookieが保持される時間を増やして。

 覚えていない状態でCookieが保持されるデフォルトは2日で。

 $Rememberが設定されている場合、Cookieは14日または2週間保持されて。

 

パラメータ:

 $user_id

  (int) (必須)ユーザID

 

 $remember

  (bool)(オプション)ユーザーを記憶するかどうか

  デフォルト値:false

 

 $secure

  (bool|string) (オプション)認証CookieをHTTPS経由でのみ送信するかどうか

  これは、is_ssl()の値が使用されることを意味して

  デフォルト値:''

 

 $token

  (string) (オプション)このCookieに使用するユーザーのセッショントークン

  デフォルト値:''

 

Vulnerable Code:

 

f:id:ThisIsOne:20220107161713p:plain

 

この脆弱性を見つける方法:

1.WordPressCMSを使用しているターゲットWebサイトに移動して。

2.wpscanツールを使用して、古いプラグイン、テーマ、デフォルトの。

 クレデンシャルなどを確認して。

 

My command :

wpscan --url https://target.com --disable-tls-check --enumerate u

    --url : URLを渡して
    --disable-tls-check : SSL / TLS証明書の検証を無効にして
    --enumerate u : ユーザを列挙して

 

f:id:ThisIsOne:20220107161648p:plain

 

スキャンが完了すると、古くて脆弱なものの結果が得られて。

 

3.結果、「WP Support Plus Responsive Ticket System」に対して脆弱で。

 

f:id:ThisIsOne:20220107161617p:plain

 

4.他に見つけたことは、デフォルトのユーザ名で。

f:id:ThisIsOne:20220107161553p:plain

 

5.googleで脆弱性を検索すると。

 https://www.exploit-db.com/で、エクスプロイトを見つけて。

 

f:id:ThisIsOne:20220107161517p:plain

 

 https://www.exploit-db.com/exploits/41006

f:id:ThisIsOne:20220107181851p:plain

 

6.エクスプロイトコードを確認すると。

 単純なHTMLログインフォームで。

 

<form method="post" action="http://target.com/wp-admin/admin-ajax.php">
    Username: <input type="text" name="username" value="admin">
    <input type="hidden" name="email" value="EMAIL">
    <input type="hidden" name="action" value="loginGuestFacebook">
    <input type="submit" value="Login">
</form>

Then go to admin panel.

 

f:id:ThisIsOne:20220107181945p:plain

 

これを.htmlとして保存し、スクリプトを実行したものの。

その前に、これを悪用するには電子メールが必要であることがわかったので。

「theharvester」ツールで、サイトを列挙して。

4通のメールのうち1通はエクスプロイトを成功させるのに役立って。

 https://github.com/laramies/theHarvester

 

f:id:ThisIsOne:20220107163110p:plain

 

7.ポート80を介してファイルを転送するためのPythonスクリプトを実行すると。

 Python -m SimpleHTTPServer 80

 

f:id:ThisIsOne:20220107161439p:plain


8.htmlとして保存したエクスプロイトを実行すると。

 管理者へのログインに成功して。

 

f:id:ThisIsOne:20220107161414p:plain

 

9.パスワードを知らなくても管理者としてログインして。

 これは、wp_set_auth_cookie()の誤った使用が原因で発生して。

f:id:ThisIsOne:20220107161249p:plain

 

Best regards, (^^ゞ

Account Take Over without user Interactionを訳してみた

Hello there, ('ω')ノ

 

ユーザの操作なしでアカウントを引き継ぎを。

 

脆弱性:

 パスワードリセットの欠陥

 情報開示

 アカウント乗っ取り

 

記事:

 https://medium.com/@ravillabharath123/account-take-over-without-user-interaction-f4ed2bf977de

 

プログラム名が、Redacted.comであると仮定して。

 

攻撃ベクトル:

1.アプリケーションには、パスワードを忘れた際の機能が含まれていて。

 被害者の電子メールIDを入力し、要求と応答をキャプチャして。

 

f:id:ThisIsOne:20220106192232p:plain

 

2.トークンの送信を確認して、入力したメールの受信トレイを確認すると。

 トークンがReset passwordに属していることがわかって。

 応答にはトークンが含まれていて。

 

f:id:ThisIsOne:20220106192300p:plain

 

3.応答からの「トークン」値を使用して、パスワードリセットリンクを作成すると。

     https://Redacted.com/reset-password/09ef7xxx-xxxx-xxxx-xxxx-xxxxxxxxx62b?partner=

 

4.被害者のパスワードを正常に変更して、アカウントにアクセスできて。

 

Best regards, (^^ゞ

How i Unlocked the blocked accounts?を訳してみた

Hello there, ('ω')ノ

 

ブロックされたアカウントのロックを解除するにはどうすればよいかを。

 

脆弱性:

 パスワードリセットの欠陥

 HTTPパラメータの汚染

 IDOR

 

記事:

 https://infosecwriteups.com/how-i-unlocked-the-blocked-accounts-545e9b7d7be1

 

ブルートフォースの脆弱性をチェックするために自分のパスワードを。

ブルートフォース攻撃し始めると4〜5回の試行後にブロックされて。

会社はアカウントのロックを解除するためにかなりの金額を請求してきて。


なので、自分のアカウントを取り戻したかったので。

アカウントへのアクセスを取り戻すことができる脆弱性を探し始めることに。

 

パスワードリセット機能のテストを開始して。

ブロックされている場合でも、パスワードレストリンクは送信されたままで。

しかしながら、リンクをクリックしたとき。

ウェブページで次のようなメッセージを受け取って。

「セキュリティ上の理由により、アカウントがブロックされて申し訳ありません」

 

そこで、ブロックされたアカウントリンクから。

パスワードリセットトークンをコピーして。

有効なアカウントのパスワードリクエストで。

Burp Suiteでトークンをブロックされたアカウントトークンに置き換えると。

パスワードのリセットは成功して、アカウントを取り戻すことができて。

 

f:id:ThisIsOne:20220105195756p:plain

 

数か月後、元のリクエストで、次のようなリクエストに。

別のパラメータを追加すると。

再び成功しまして、ブロックされたアカウントを取り戻すことができて。

 例:password_rest_token=blockedaccounttoken

 

f:id:ThisIsOne:20220105195830p:plain

 

Best regards, (^^ゞ