Frederick

Welcome to my Alter Ego's site!

Jan 14, 2025 - 5 minute read - Comments

Web应用程序

Web应用程序

缺陷 真实场景
SQL 注入 获取 Active Directory 用户名并对 VPN 或电子邮件门户执行密码喷洒攻击。
文件包含 阅读源代码以查找隐藏的页面或目录,这些页面或目录公开了可用于获取远程代码执行的附加功能。
不受限制的文件上传 允许用户上传个人资料图片的 Web 应用程序,允许上传任何类型的文件(不仅仅是图片)。可以利用此功能通过上传恶意代码来完全控制 Web 应用程序服务器。
不安全的直接对象引用(IDOR) 当与访问控制失效等缺陷相结合时,这通常可用于访问其他用户的文件或功能。例如,在浏览到 /user/701/edit-profile 等页面时编辑您的用户个人资料。如果我们可以将 更改701702,我们就可以编辑其他用户的个人资料!
访问控制失效 另一个示例是允许用户注册新帐户的应用程序。如果帐户注册功能设计不佳,用户可能会在注册时执行权限提升。考虑POST注册新用户时的请求,该请求提交数据username=bjones&password=Welcome1&email=bjones@inlanefreight.local&roleid=3。如果我们可以操纵roleid参数并将其更改为0或会怎样1?我们已经看到了这种情况的真实应用程序,并且可以快速注册管理员用户并访问 Web 应用程序的许多非预期功能。

Web程序布局

层:

类别 描述
Web Application Infrastructure 描述 Web 应用程序按预期运行所需的组件(如数据库)的结构。由于 Web 应用程序可以设置为在单独的服务器上运行,因此了解它需要访问哪个数据库服务器至关重要。
Web Application Components 组成 Web 应用程序的组件代表与 Web 应用程序交互的所有组件。这些组件分为以下三个区域:UI/UXClientServer组件。
Web Application Architecture 架构包括各个 Web 应用程序组件之间的所有关系。

Web 应用程序基础设施

  • Client-ServerWeb 应用程序通常采用该client-server模型。服务器以客户端-服务器模型托管 Web 应用程序,并将其分发给任何尝试访问它的客户端。在这种模型中,Web 应用程序有两种类型的组件:前端组件,通常在客户端(浏览器)上解释和执行;后端组件,通常由托管服务器编译、解释和执行。
  • One Server如果任何托管的 Web 应用程序存在漏洞,则整个 Web 服务器都会受到漏洞。
  • Many Servers - One Database此模型将数据库分离到其自己的数据库服务器上,并允许 Web 应用程序的托管服务器访问数据库服务器以存储和检索数据。只要数据库分离在其自己的数据库服务器上,就可以将其视为多服务器对一个数据库和单服务器对一个数据库。这种模型的主要优势 ( from a security point of view) 是分段,其中 Web 应用程序的每个主要组件都单独放置和托管。如果一个 Web 服务器受到攻击,其他 Web 服务器不会受到直接影响。
  • Many Servers - Many DatabasesWeb 应用程序只能访问私有数据和跨 Web 应用程序共享的公共数据。也可以将每个 Web 应用程序的数据库托管在其单独的数据库服务器上。这种设计还被广泛用于冗余目的,因此如果任何 Web 服务器或数据库脱机,备份将代替其运行,以尽可能减少停机时间。

Web应用程序组件

  1. `Client

  2. Server

    • 网络服务器
    • Web 应用程序逻辑
    • 数据库
  3. Services

    (微服务)

    • 第三方集成
    • Web 应用程序集成
  4. `Functions(无服务器)

敏感数据泄露

敏感数据泄露是指最终用户可以以明文形式获取敏感数据ctrl + u`通过 Web 代理(如)键入或查看页面源代码Burp Suite

有时,我们可能会发现登录名credentials、hashes或其他敏感数据隐藏在网页源代码的注释中或JavaScript正在导入的外部代码中。其他敏感信息可能包括暴露的链接或目录,甚至暴露的用户信息,所有这些都可能被利用来进一步访问 Web 应用程序或 Web 应用程序的支持基础设施

HTML注入

HTML 注入是指未经过滤的用户输入显示在页面上。这可以通过检索之前提交的代码(例如从后端数据库检索用户评论)或直接在JavaScript前端显示未经过滤的用户输入来实现。

<a href="http://www.hackthebox.com">Click Me</a>

跨站点脚本XSS

HTML Injection漏洞通常还可用于通过注入要在客户端执行的代码来执行 跨站点脚本 (XSS)攻击。一旦我们可以在受害者的机器上执行代码,我们就有可能访问受害者的帐户甚至他们的机器。在实践中与非常相似。但是,涉及注入代码以在客户端执行更高级的攻击,而不仅仅是注入 HTML 代码。主要有三种类型:

类型 描述
Reflected XSS 当用户输入经过处理(例如搜索结果或错误消息)显示在页面上时发生。
Stored XSS 当用户输入存储在后端数据库并在检索时显示(例如,帖子或评论)时发生。
DOM XSS 当用户输入直接显示在浏览器中并写入HTMLDOM 对象(例如,易受攻击的用户名或页面标题)时发生。
#"><img src=/ onerror=alert(document.cookie)>

显示当前用户的cookie

后端服务器

软件

  • Web Server
  • Database
  • Development Framework
Combinations Components
LAMP Linux, Apache, MySQL, and PHP.
WAMP Windows, Apache, MySQL, and PHP.
WINS Windows, IIS, .NET, and SQL Server
MAMP macOS, Apache, MySQL, and PHP.
XAMPP Cross-Platform, Apache, MySQL, and PHP/PERL.

组件

Combinations Components
LAMP Linux, Apache, MySQL, and PHP.
WAMP Windows, Apache, MySQL, and PHP.
WINS Windows, IIS, .NET, and SQL Server
MAMP macOS, Apache, MySQL, and PHP.
XAMPP Cross-Platform, Apache, MySQL, and PHP/PERL.

硬件

HTTP响应代码:

成功的响应
200 OK 请求已成功
重定向消息
301 Moved Permanently 请求资源的 URL 已永久更改
302 Found 请求资源的 URL 已临时更改
客户端错误响应
400 Bad Request 由于语法无效,服务器无法理解请求
401 Unauthorized 未经身份验证尝试访问页面
403 Forbidden 客户端无权访问内容
404 Not Found 服务器找不到请求的资源
405 Method Not Allowed 请求方法已被服务器所知,但已被禁用,无法使用
408 Request Timeout 某些服务器会在空闲连接上发送此响应,即使客户端之前没有任何请求
服务器错误响应
500 Internal Server Error 服务器遇到了不知道如何处理的情况
502 Bad Gateway 服务器在作为网关获取处理请求所需的响应时,收到了无效响应
504 Gateway Timeout 服务器作为网关,无法及时得到响应
  • 端口有两种类型:传输控制协议 (TCP)和用户数据报协议 (UDP)
Port(s) Protocol
20/21 (TCP) FTP
22 (TCP) SSH
23 (TCP) Telnet
25 (TCP) SMTP
80 (TCP) HTTP
161 (TCP/UDP) SNMP
389 (TCP/UDP) LDAP
443 (TCP) SSL/TLS (HTTPS)
445 (TCP) SMB
3389 (TCP) RDP
  • shell连接
shell类型 描述
Reverse shell 启动与攻击箱上的“监听器”的连接。
Bind shell “绑定”到目标主机上的特定端口并等待来自我们的攻击箱的连接。
Web shell 通过 Web 浏览器运行操作系统命令,通常不是交互式或半交互式的。它还可用于运行单个命令(即利用文件上传漏洞并上传PHP脚本来运行单个命令)。

渗透测试流程

  • tmux

tmux new -s <名称>

执行命令 ctrl+b+ d

重新连接tmux attach -t <名称>

tmux ls展示所有会话

  • nmap

例:nmap 10.129.42.253

运行 Nmap 脚本的语法是`nmap –script comments powered by Disqus