/.x/?x=x86)`, which fetches a checksum-validated payload, saves it (e.g., `init_start`), sets `chmod +x`, and runs it.
- If the current directory is not writable/executable, the stager falls back to `/tmp`, so test web paths and filesystem permissions after upload.
@@ -346,10 +346,11 @@ Entry_7:
## References
-- [1] [Inside GoBruteforcer: AI-generated server defaults, weak passwords, and crypto-focused campaigns](https://research.checkpoint.com/2026/inside-gobruteforcer-ai-generated-server-defaults-weak-passwords-and-crypto-focused-campaigns/)
-- [2] [0xdf - HTB WingData: Wing FTP Null-Byte Lua RCE, Hash Cracking, and Python tarfile Privilege Escalation](https://0xdf.gitlab.io/2026/06/27/htb-wingdata.html)
-- [3] [RCE Security - What the null? Wing FTP Server RCE (CVE-2025-47812)](https://www.rcesecurity.com/2025/06/what-the-null-wing-ftp-server-rce-cve-2025-47812/)
-- [4] [NVD - CVE-2025-47812](https://nvd.nist.gov/vuln/detail/CVE-2025-47812)
-- [5] [Wing FTP help - User / Group settings](https://www.wftpserver.com/help/ftpserver/index.html?user__group.htm)
+- [1] [What is FTP bounce attack?](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/)
+- [2] [Inside GoBruteforcer: AI-generated server defaults, weak passwords, and crypto-focused campaigns](https://research.checkpoint.com/2026/inside-gobruteforcer-ai-generated-server-defaults-weak-passwords-and-crypto-focused-campaigns/)
+- [3] [0xdf - HTB WingData: Wing FTP Null-Byte Lua RCE, Hash Cracking, and Python tarfile Privilege Escalation](https://0xdf.gitlab.io/2026/06/27/htb-wingdata.html)
+- [4] [RCE Security - What the null? Wing FTP Server RCE (CVE-2025-47812)](https://www.rcesecurity.com/2025/06/what-the-null-wing-ftp-server-rce-cve-2025-47812/)
+- [5] [NVD - CVE-2025-47812](https://nvd.nist.gov/vuln/detail/CVE-2025-47812)
+- [6] [Wing FTP help - User / Group settings](https://www.wftpserver.com/help/ftpserver/index.html?user__group.htm)
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/network-services-pentesting/pentesting-ftp/ftp-bounce-attack.md b/src/network-services-pentesting/pentesting-ftp/ftp-bounce-attack.md
index 6b86cb192a6..eb63311a40d 100644
--- a/src/network-services-pentesting/pentesting-ftp/ftp-bounce-attack.md
+++ b/src/network-services-pentesting/pentesting-ftp/ftp-bounce-attack.md
@@ -92,7 +92,7 @@ If the server is writable and you want to pivot beyond simple port-scanning, che
## References
-- [Nmap NSE `ftp-bounce` script](https://nmap.org/nsedoc/scripts/ftp-bounce.html)
-- [RFC 2428 - FTP Extensions for IPv6 and NATs](https://datatracker.ietf.org/doc/html/rfc2428)
+- [1] [Nmap NSE `ftp-bounce` script](https://nmap.org/nsedoc/scripts/ftp-bounce.html)
+- [2] [RFC 2428 - FTP Extensions for IPv6 and NATs](https://datatracker.ietf.org/doc/html/rfc2428)
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/network-services-pentesting/pentesting-ftp/ftp-bounce-download-2oftp-file.md b/src/network-services-pentesting/pentesting-ftp/ftp-bounce-download-2oftp-file.md
index 5ea1d7eaab0..2bb3dbb68ef 100644
--- a/src/network-services-pentesting/pentesting-ftp/ftp-bounce-download-2oftp-file.md
+++ b/src/network-services-pentesting/pentesting-ftp/ftp-bounce-download-2oftp-file.md
@@ -2,7 +2,6 @@
{{#include ../../banners/hacktricks-training.md}}
-
## Resume
If you have access to a **bounce FTP server**, you can make it request files of **another FTP server** (where you know some credentials) and download that file to **your own server**.
diff --git a/src/network-services-pentesting/pentesting-imap.md b/src/network-services-pentesting/pentesting-imap.md
index fab5a76d3cd..86df1d70ad8 100644
--- a/src/network-services-pentesting/pentesting-imap.md
+++ b/src/network-services-pentesting/pentesting-imap.md
@@ -42,7 +42,7 @@ Or **automate** this with **nmap** plugin `imap-ntlm-info.nse`
## Syntax
-IMAP Commands examples from [here](https://donsutherland.org/crib/imap):
+IMAP Commands examples from [here](https://donsutherland.org/crib/imap):[[1]](#references)
```
Login
@@ -123,7 +123,7 @@ Its also possible to provide more complex search terms. e.g. searching for draft
curl -k 'imaps://1.2.3.4/Drafts?TEXT password' --user user:pass
```
-A nice overview of the search terms possible is located [here](https://www.atmail.com/blog/imap-commands/).
+A nice overview of the search terms possible is located [here](https://www.atmail.com/blog/imap-commands/).[[2]](#references)
3. Downloading a message (imap command `SELECT Drafts` and then `FETCH 1 BODY[]`)
@@ -192,7 +192,10 @@ Entry_4:
Command: msfconsole -q -x 'use auxiliary/scanner/imap/imap_version; set RHOSTS {IP}; set RPORT 143; run; exit'
```
-{{#include ../banners/hacktricks-training.md}}
+## References
+- [1] [IMAP crib sheet - command examples](https://donsutherland.org/crib/imap)
+- [2] [Atmail - IMAP Commands overview](https://www.atmail.com/blog/imap-commands/)
+{{#include ../banners/hacktricks-training.md}}
diff --git a/src/network-services-pentesting/pentesting-ldap.md b/src/network-services-pentesting/pentesting-ldap.md
index c5e5522cf0a..fce15d19a3f 100644
--- a/src/network-services-pentesting/pentesting-ldap.md
+++ b/src/network-services-pentesting/pentesting-ldap.md
@@ -56,7 +56,7 @@ phone: 23627387495
## Write data
-Note that if you can modify values you could be able to perform really interesting actions. For example, imagine that you **can change the "sshPublicKey" information** of your user or any user. It's highly probable that if this attribute exist, then **ssh is reading the public keys from LDAP**. If you can modify the public key of a user you **will be able to login as that user even if password authentication is not enabled in ssh**.
+Note that if you can modify values you could be able to perform really interesting actions. For example, imagine that you **can change the "sshPublicKey" information** of your user or any user. It's highly probable that if this attribute exist, then **ssh is reading the public keys from LDAP**. If you can modify the public key of a user you **will be able to login as that user even if password authentication is not enabled in ssh**.[[1]](#references)
```bash
# Example from https://www.n00py.io/2020/02/exploiting-ldap-server-null-bind/
@@ -115,7 +115,7 @@ Also, you can perform a **MITM** attack in the network **between the LDAP server
### Bypass TLS SNI check
-According to [**this writeup**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/) just by accessing the LDAP server with an arbitrary domain name (like company.com) he was able to contact the LDAP service and extract information as an anonymous user:
+According to [**this writeup**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/) just by accessing the LDAP server with an arbitrary domain name (like company.com) he was able to contact the LDAP service and extract information as an anonymous user:[[2]](#references)
```bash
ldapsearch -H ldaps://company.com:636/ -x -s base -b '' "(objectClass=*)" "*" +
@@ -123,12 +123,12 @@ ldapsearch -H ldaps://company.com:636/ -x -s base -b '' "(objectClass=*)" "*" +
### LDAP anonymous binds
-[LDAP anonymous binds](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled) allow **unauthenticated attackers** to retrieve information from the domain, such as a complete listing of users, groups, computers, user account attributes, and the domain password policy. This is a **legacy configuration**, and as of Windows Server 2003, only authenticated users are permitted to initiate LDAP requests.\
-However, admins may have needed to **set up a particular application to allow anonymous binds** and given out more than the intended amount of access, thereby giving unauthenticated users access to all objects in AD.
+[LDAP anonymous binds](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled) allow **unauthenticated attackers** to retrieve information from the domain, such as a complete listing of users, groups, computers, user account attributes, and the domain password policy. This is a **legacy configuration**, and as of Windows Server 2003, only authenticated users are permitted to initiate LDAP requests.[[3]](#references)\
+However, admins may have needed to **set up a particular application to allow anonymous binds** and given out more than the intended amount of access, thereby giving unauthenticated users access to all objects in AD.[[3]](#references)
### Anonymous LDAP enumeration with NetExec (null bind)
-If null/anonymous bind is allowed, you can pull users, groups, and attributes directly via NetExec’s LDAP module without creds. Useful filters:
+If null/anonymous bind is allowed, you can pull users, groups, and attributes directly via NetExec’s LDAP module without creds.[[4]](#references)[[5]](#references) Useful filters:
- (objectClass=*) to inventory objects under a base DN
- (sAMAccountName=*) to harvest user principals
@@ -490,8 +490,10 @@ Entry_7:
## References
-- [HTB: Baby — Anonymous LDAP → Password Spray → SeBackupPrivilege → Domain Admin](https://0xdf.gitlab.io/2025/09/19/htb-baby.html)
-- [NetExec (CME successor)](https://github.com/Pennyw0rth/NetExec)
-- [Microsoft: Anonymous LDAP operations to Active Directory are disabled](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled)
+- [1] [Exploiting LDAP Server NULL Bind](https://www.n00py.io/2020/02/exploiting-ldap-server-null-bind/)
+- [2] [Exploiting Arbitrary Object Instantiations in PHP without Custom Classes](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)
+- [3] [Microsoft: Anonymous LDAP operations to Active Directory are disabled](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled)
+- [4] [HTB: Baby — Anonymous LDAP → Password Spray → SeBackupPrivilege → Domain Admin](https://0xdf.gitlab.io/2025/09/19/htb-baby.html)
+- [5] [NetExec (CME successor)](https://github.com/Pennyw0rth/NetExec)
{{#include ../banners/hacktricks-training.md}}
diff --git a/src/network-services-pentesting/pentesting-modbus.md b/src/network-services-pentesting/pentesting-modbus.md
index 4c9a055e853..6451791af3e 100644
--- a/src/network-services-pentesting/pentesting-modbus.md
+++ b/src/network-services-pentesting/pentesting-modbus.md
@@ -41,7 +41,7 @@ msf> use auxiliary/scanner/scada/modbusdetect
msf> use auxiliary/scanner/scada/modbus_findunitid
```
-`modbus-discover` is useful because it tries to enumerate **legal slave IDs** and extract **device identification** data such as vendor and firmware strings.
+`modbus-discover` is useful because it tries to enumerate **legal slave IDs** and extract **device identification** data such as vendor and firmware strings.[[1]](#references)
### Passive Recon
@@ -170,11 +170,11 @@ In real assessments, attackers rarely start with memory corruption. The usual pa
- Replay or slightly modify legitimate **write** requests
- Abuse weak process assumptions such as "this register is only written by the HMI"
-Recent Modbus research and datasets keep emphasizing the same attacker behaviors: **query flooding, false data injection, brute-force writes, replay, and malformed length/frame handling**. Those are usually more realistic test cases than hunting for a single vendor-specific CVE.
+Recent Modbus research and datasets keep emphasizing the same attacker behaviors: **query flooding, false data injection, brute-force writes, replay, and malformed length/frame handling**. Those are usually more realistic test cases than hunting for a single vendor-specific CVE.[[2]](#references)
## References
-- [Nmap NSE: modbus-discover](https://nmap.org/nsedoc/scripts/modbus-discover.html)
-- [MOSTO: A toolkit to facilitate security auditing of ICS devices using Modbus/TCP](https://zaguan.unizar.es/record/127649)
+- [1] [Nmap NSE: modbus-discover](https://nmap.org/nsedoc/scripts/modbus-discover.html)
+- [2] [MOSTO: A toolkit to facilitate security auditing of ICS devices using Modbus/TCP](https://zaguan.unizar.es/record/127649)
{{#include ../banners/hacktricks-training.md}}
diff --git a/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/types-of-mssql-users.md b/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/types-of-mssql-users.md
index 6ee4bb0a641..036a39a9b07 100644
--- a/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/types-of-mssql-users.md
+++ b/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/types-of-mssql-users.md
@@ -2,7 +2,7 @@
{{#include ../../banners/hacktricks-training.md}}
-Table taken from the [**docs**](https://learn.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-principals-transact-sql?view=sql-server-ver17).[[3]](#references)
+Table taken from the [**docs**](https://learn.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-principals-transact-sql?view=sql-server-ver17).[[1]](#references)
| Column name | Data type | Description |
| --------------------------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
@@ -22,10 +22,6 @@ Table taken from the [**docs**](https://learn.microsoft.com/en-us/sql/relational
| **default_language_lcid** | **int** | Applies to: SQL Server 2012 (11.x) and later.
Signifies the default LCID for this principal.
|
| **allow_encrypted_value_modifications** | **bit** | Applies to: SQL Server 2016 (13.x) and later, SQL Database.
Suppresses cryptographic metadata checks on the server in bulk copy operations. This enables the user to bulk copy data encrypted using Always Encrypted, between tables or databases, without decrypting the data. The default is OFF.
|
-
-
-
-
## Offensive reading of `sys.database_principals`
From an attacker perspective, this view is more useful than just a user list:
@@ -94,9 +90,9 @@ ORDER BY name;
- **`dbo`**: this is **not** the same as the `db_owner` role and **not** the same as the login recorded as database owner. If you can reach `EXECUTE AS USER = 'dbo'` or `EXECUTE AS OWNER`, explicit `DENY` on the original principal is not a reliable barrier anymore.
- **`guest`**: every database has it. If `CONNECT` is available, users without a mapped database principal can inherit any permission granted to `guest`. Enumerate both `guest` and `public` grants when access seems broader than expected.
- **Contained users and `WITHOUT LOGIN` users**: contained users are good pivot and persistence indicators because they do not depend on a server login. `WITHOUT LOGIN` users cannot authenticate directly, but Microsoft explicitly notes that they can connect to other databases as `guest`, so they are especially interesting when you already control execution context changes.
-- **`db_securityadmin`**: this role can manage permissions and custom role membership, so it can often be turned into a stronger position even when it is not instant `sysadmin`. Fixed-role membership changes still require `db_owner`.
+- **`db_securityadmin`**: this role can manage permissions and custom role membership, so it can often be turned into a stronger position even when it is not instant `sysadmin`. Fixed-role membership changes still require `db_owner`.[[2]](#references)
- **`EXTERNAL_USER` / `EXTERNAL_GROUPS`**: in Azure SQL / SQL Managed Instance these are usually Microsoft Entra-backed identities. Do not ignore them during enumeration because they can own schemas, be role members, and participate in impersonation paths. Database-principal impersonation is supported even where server-level Entra impersonation is limited.
-- **Special roles in `msdb`**: enumerate them separately. Microsoft documents that `db_ssisadmin` and `dc_admin` can become privilege-escalation material because Integration Services packages may end up executing through SQL Server Agent in a high-privilege context.[[1]](#references)
+- **Special roles in `msdb`**: enumerate them separately. Microsoft documents that `db_ssisadmin` and `dc_admin` can become privilege-escalation material because Integration Services packages may end up executing through SQL Server Agent in a high-privilege context.[[2]](#references)
If you find interesting `IMPERSONATE`, `db_owner`, or linked-server paths, continue from the main MSSQL page:
@@ -106,7 +102,7 @@ README.md
## Tooling
-[MSSQLPwner](https://github.com/ScorpionesLabs/MSSqlPwner) is currently one of the most convenient options to enumerate **linked-server** and **impersonation chains** automatically:
+[MSSQLPwner](https://github.com/ScorpionesLabs/MSSqlPwner) is currently one of the most convenient options to enumerate **linked-server** and **impersonation chains** automatically:[[3]](#references)
```bash
mssqlpwner corp.com/user:pass@10.10.10.10 enumerate
@@ -116,8 +112,8 @@ mssqlpwner corp.com/user:pass@10.10.10.10 interactive
## References
-- [1] [Microsoft Learn - Database-Level Roles](https://learn.microsoft.com/en-us/sql/relational-databases/security/authentication-access/database-level-roles?view=sql-server-ver17)
-- [2] [ScorpionesLabs - MSSqlPwner](https://github.com/ScorpionesLabs/MSSqlPwner)
-- [3] [Microsoft Learn - sys.database_principals (Transact-SQL)](https://learn.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-principals-transact-sql?view=sql-server-ver17)
+- [1] [Microsoft Learn - sys.database_principals (Transact-SQL)](https://learn.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-principals-transact-sql?view=sql-server-ver17)
+- [2] [Microsoft Learn - Database-Level Roles](https://learn.microsoft.com/en-us/sql/relational-databases/security/authentication-access/database-level-roles?view=sql-server-ver17)
+- [3] [ScorpionesLabs - MSSqlPwner](https://github.com/ScorpionesLabs/MSSqlPwner)
{{#include ../../banners/hacktricks-training.md}}