CEH - 职业道德黑客 关于Hacking Web Applications
-
Web Applications are that applications that is running on a remote application server and available for clients over the internet. Web 应用程序是在远程应用程序服务器上运行并可通过 Internet 供客户端使用的应用程序。
-
Server Administrators are responsible for the web server's safety, speed, functioning and performance. 服务器管理员负责网络服务器的安全、速度、功能和性能
-
Application Administrators are responsible for the management and configuration required for the web application. 应用程序管理员负责 Web 应用程序所需的管理和配置。
-
Clients are the endpoints which interact with the web application / server. 客户端是与 Web 应用程序/服务器交互的端点。
-
Layers of Web Applications Web 应用程序层
- Presentation Layer is responsible for displaying the information to the user.表示层负责向用户显示信息。
- Logical Layer : manipulate information to and from the forms. 逻辑层:操纵信息进出表格。
- Data Layer : hold the data for the application. 数据层:保存应用程序的数据。
Web Services 网页服务
Web 服务是部署在 Internet 上的应用程序或软件。它使用一个标准消息传递协议standard messaging protocol(例如 SOAP),以实现在不同平台上开发的应用程序之间的通信。例如,基于 Java 的服务可以与 PHP 应用程序交互。这些基于 Web 的应用程序通过网络与 SOAP、UDDI、WSDL 和 REST 集成
- web服务架构,
Web 服务架构描述了服务提供者service provider、服务请求者service requester(用户)和服务注册service registry中心(比如网络证书注册机构等)之间的交互。这些交互包括三个操作,即发布、查找和绑定publish, find, and bind。所有这些角色和操作在称为软件模块(服务)及其描述的 Web 服务工件上协同工作。服务提供商提供网络服务。他们将 Web 服务的服务描述部署并发布到服务注册中心。请求者从服务注册表中找到这些描述,并使用它们与 Web 服务提供者绑定并调用 Web 服务实现。
- Characteristics of Web Services 网页服务特征
- XML-based: Web services use XML for data representation and transportation. XML usage can avoid OS, networking, or platform binding. Applications that provide web services are highly interoperable.Web 服务使用 XML 进行数据表示和传输。 XML 的使用可以避免操作系统、网络或平台绑定。提供 Web 服务的应用程序具有高度的互操作性。
- Coarse-grained service粗粒度服务: In web services, some objects contain a massive amount of information and offer greater functionality than fine-grained services. A coarse-grained service is a combination of multiple fine-grained services.在 Web 服务中,一些对象包含大量信息并提供比细粒度服务更强大的功能。粗粒度服务是多个细粒度服务的组合。
- Loosely coupled 松耦合: Web services support a loosely coupled approach for interconnecting systems. The interaction between the systems can occur via the web API by sending XML messages. The web API incorporates a layer of abstraction for the infrastructure to make the connection flexible and adaptable.Web 服务支持用于互连系统的松散耦合方法。系统之间的交互可以通过 Web API 通过发送 XML 消息进行。 Web API 为基础架构合并了一个抽象层,以使连接灵活且适应性强
- Asynchronous and synchronous support: Synchronous services are called by users who wait for a response, whereas asynchronous services are called by users who do not wait for a response. RPC-based messages and document-based messages are often used for synchronous and asynchronous web services.Synchronous and asynchronous endpoints are implemented using servlets, SOAP/XML, and HTTP.同步服务由等待响应的用户调用,而异步服务由不等待响应的用户调用。基于 RPC 的消息和基于文档的消息通常用于同步和异步 Web 服务。同步和异步端点是使用 servlet、SOAP/XML 和 HTTP 实现的。
- RPC support: Web services support remote procedure calls (RPC) similarly to traditional applications.与传统应用程序类似,Web 服务支持远程过程调用 (RPC)。
- Types of Web Services web服务类型
- SOAP(基于xml格式)
- RESTful
- 架构类型
- UDDI: Universal Description, Discovery, and Integration (UDDI) is a directory service that lists all the services available.一种目录服务,它列出了所有可用的服务。
- WSDL: Web Services Description Language is an XML-based language that describes and traces web services.基于 XML 的语言,用于描述和跟踪 Web 服务。
- WS-Security: Web Services Security (WS-Security) plays an important role in securing web services. It is an extension of SOAP and aims to maintain the integrity and confidentiality of SOAP messages as well as to authenticate use 保护 Web 服务方面发挥着重要作用。它是 SOAP 的扩展,旨在维护 SOAP 消息的完整性和机密性以及验证使用
- Characteristics of Web Services 网页服务特征
Web Application Threats 网页应用威胁
- Cookie poisoning,通过更改 cookie 中的信息,攻击者可以绕过身份验证过程。 一旦他们获得对网络的控制权,他们就可以修改其内容、使用系统进行恶意攻击或从用户系统中窃取信息
- Cookie/Session Poisoning,通过更改 cookie 中的信息,攻击者可以绕过身份验证过程。 一旦他们获得了对网络的控制权,他们就可以修改其内容、使用系统进行恶意攻击或从用户系统中窃取信息。
- Cookie Snooping,攻击者使用受害者系统上的 cookie 窥探来分析用户的上网习惯并将该信息出售给其他攻击者或对受害者的 Web 应用程序发起各种攻击。
- Directory traversal 目录遍历,攻击者通过目录遍历利用 HTTP,这使他们能够访问受限目录; 它们在 Web 服务器的根目录之外执行命令。
- Hidden Field Manipulation隐藏场操作,试图破坏电子商务网站的攻击者大多执行此类攻击。 他们操纵隐藏字段并更改存储在其中的数据。 每天都有几家在线商店面临这样的问题。 攻击者可以更改价格并完成交易,指定他们选择的价格
- DOS attack,DoS 攻击是对服务可用性的攻击,它减少、限制或阻止其合法用户访问系统资源。 例如,与银行或电子邮件服务相关的网站可能会在几个小时甚至几天内无法运行,从而导致时间和金钱的损失。
- Buffer overflow 缓存溢出,当 Web 应用程序未能正确保护其缓冲区并允许写入超出其最大大小时,就会发生 Web 应用程序的缓冲区溢出漏洞。
- Log tampering
- SQL injection
- Cross-site Script
- Cross-site Request Forgery,跨站点请求伪造方法是一种攻击类型,其中使经过身份验证的用户在攻击者选择的 Web 应用程序上执行某些任务,例如,用户单击通过电子邮件或聊天发送的特定链接。
- Security misconfiguration
- Broken session management,如果会话 ID 暴露在 URL 中,那么 Web 应用程序很容易受到会话固定攻击。 此外,如果会话超时时间较长并且每次登录后会话 ID 都没有更改,则攻击者可能会劫持会话并以与受害者相同的权限控制会话
- Obfuscation Application,攻击者通常会小心隐藏他们的攻击并避免被发现。 基于网络和主机的入侵检测系统 (IDS) 不断寻找已知攻击的迹象,促使攻击者寻求不同的方法来保持不被发现。 最常见的攻击混淆方法涉及使用 Unicode、UTF-8、Base64 或 URL 编码对攻击的部分进行编码。 Unicode 是一种表示字母、数字和特殊字符以正确显示它们的方法,与应用程序或底层平台无关。
- Session hijacking
- Network access attacks
- Watering Hole Attack,这是一种未经验证的重定向攻击,攻击者首先识别目标访问量最大的网站,确定网站中的漏洞,将恶意代码注入易受攻击的Web应用程序,然后等待受害者浏览该网站。 一旦受害者尝试访问该网站,恶意代码就会执行,从而感染受害者。
- DMZ Protocol Attacks,非军事区 (DMZ) 是一个半可信网络区域,将不受信任的 Internet 与公司的可信内部网络分隔开来。 可以破坏允许其他 DMZ 协议的系统的攻击者可以访问其他 DMZ 和内部系统。
其中排序方式依据OWASP风险等级评分标准:
-
A1 – Injection,Injection flaws, such as SQL, command injection, and LDAP injection, occur when untrusted data is sent to an interpreter as part of a command or query. The attacker’s hostile data can trick the interpreter into executing unintended commands or accessing data without proper authorization. 注入缺陷,例如 SQL、命令注入和 LDAP 注入,当不受信任的数据作为命令或查询的一部分发送到解释器时发生。攻击者的恶意数据可以欺骗解释器执行意外命令或在未经适当授权的情况下访问数据。
- SQL注入,注入到数据库,SQL 注入攻击使用一系列恶意 SQL 查询或 SQL 语句来直接操纵数据库。 应用程序经常使用 SQL 语句来验证用户、验证角色和访问级别、存储和检索应用程序和用户的信息,以及链接到其他数据源。 SQL 注入攻击之所以起作用,是因为应用程序在将输入传递给 SQL 语句之前没有正确验证输入。 例如,考虑以下 SQL 语句:
SELECT * FROM tablename WHERE UserID= 2302 OR 1=1表达式“OR 1=1”的计算结果为“TRUE”,通常允许枚举数据库中的所有用户 ID 值。 攻击者使用易受攻击的 Web 应用程序绕过正常的安全措施并直接访问有价值的数据。 攻击者从 Web 浏览器的地址栏、表单字段、查询、搜索等进行 SQL 注入攻击。 - 命令行注入,注入到应用里,
- shell注入, 攻击者试图制作输入字符串以获取对 Web 服务器的 shell 访问权限, Shell injection 包括 system(), StartProcess(), java.lang.Runtime.exec(), System.Diagnostics.Process.Start(), and similar APIs
- HTML Embedding嵌入,这种类型的攻击用于虚拟破坏网站。 使用此攻击,攻击者将额外的基于 HTML 的内容添加到易受攻击的 Web 应用程序中,在 HTML 嵌入攻击中,用户对 Web 脚本的输入被放置到输出 HTML 中,而无需检查 HTML 代码或脚本,比如黑客使用www.certifiedhacker.com/banner.gif||newpassword||1036|60|468 的命令的恶意代码更新密码,最后两组数字表示横幅banner大小。 一旦攻击者单击提交按钮,帐户 1036 的密码就会更改为“newpassword”。服务器脚本假定只有横幅图像文件的 URL 插入到该字段中。
- File injection 文件注入, 攻击者利用此漏洞,将恶意代码注入系统文件 www.certifiedhacker.com/vulnerable.…?
- LDAP注入,malicious LDAP statements, LDAP 目录服务根据其属性存储和组织信息。 信息被分层组织为目录条目的树。 轻量级目录访问协议Lightweight Directory Access Protocol (LDAP) 基于客户端-服务器模型,客户端可以使用过滤器搜索目录条目。LDAP 注入攻击的工作方式与 SQL 注入攻击相同,但它利用用户参数来生成 LDAP 查询。它运行在 TCP 等 Internet 传输协议上,是一种用于操作和查询目录服务的开放标准协议。 LDAP 注入技术用于利用未经验证的 Web 应用程序输入漏洞来传递用于搜索目录服务的 LDAP 过滤器,以直接访问 LDAP 树后面的数据库。LDAP 攻击利用基于使用本地代理的 LDAP 语句构建的基于 Web 的应用程序。 Web 应用程序可以使用用户提供的输入来为动态网页请求创建自定义 LDAP 语句。攻击者通常对使用用户输入生成 LDAP 查询的 Web 应用程序执行 LDAP 注入攻击。攻击者可以使用搜索过滤器属性来发现底层的 LDAP 查询结构。使用这种结构,攻击者在用户提供的输入中包含额外的属性,以确定应用程序是否容易受到 LDAP 注入的攻击,并评估 Web 应用程序的输出。例子:
- 要测试应用程序是否容易受到 LDAP 代码注入的攻击,请向生成无效输入的服务器发送查询。 如果 LDAP 服务器返回错误,则可以使用代码注入技术加以利用。如果攻击者输入有效用户名“certifiedhacker”并注入 Certifiedhacker)(&)),则 URL 字符串变为 (&(USER=certifiedhacker)(&))(PASS=blah))。 LDAP 服务器只处理第一个过滤器; 仅处理查询 (&(USER=certifiedhacker)(&))。 此查询始终为真,攻击者在没有有效密码的情况下登录系统。针对此类攻击的一个重要防御方法是过滤 LDAP 的所有输入; 否则,LDAP 中的漏洞允许执行未经授权的查询或修改其内容。 当攻击者修改 LDAP 语句时,该进程以与执行该命令的 Web 应用程序组件相同的权限运行。 其他的注入包括:
- Server-Side JS Injection
- Server-Side Includes Injection
- Server-Side Template Injection
- Log Injection
- CRLF Injection
- SQL注入,注入到数据库,SQL 注入攻击使用一系列恶意 SQL 查询或 SQL 语句来直接操纵数据库。 应用程序经常使用 SQL 语句来验证用户、验证角色和访问级别、存储和检索应用程序和用户的信息,以及链接到其他数据源。 SQL 注入攻击之所以起作用,是因为应用程序在将输入传递给 SQL 语句之前没有正确验证输入。 例如,考虑以下 SQL 语句:
-
A2 – Broken Authentication,Application functions related to authentication and session management are often implemented incorrectly, thereby allowing attackers to compromise passwords, keys, or session tokens or to exploit other implementation flaws to assume identities of other users (temporarily or permanently).与身份验证和会话管理相关的应用程序功能经常被错误地实现,从而允许攻击者泄露密码、密钥或会话令牌或利用其他实现缺陷来冒充其他用户的身份(临时或永久)。
- Session ID in URLs,攻击者嗅探网络流量或欺骗用户获取会话 ID,然后将这些会话 ID 用于恶意目的
- Password Exploitation,攻击者可以访问 Web 应用程序的密码数据库。 如果用户密码未加密,攻击者可以利用任何用户的密码
- Timeout Exploitation,如果应用程序的超时设置不正确,并且用户在未从通过公共计算机访问的站点注销的情况下关闭浏览器,则攻击者可以稍后使用相同的浏览器并利用该用户的权限,比如用户使用他/她的凭据登录到 www.certifiedhacker.com。 执行某些任务后,他/她会关闭 Web 浏览器而不退出页面。 Web 应用程序的会话超时设置为两个小时。 在指定的会话间隔内,如果攻击者可以物理访问用户的系统,他可能会启动浏览器,查看历史记录,然后单击 www.certifiedhacker.com 链接,这会自动将他重定向到用户的帐户,而无需 输入用户的凭据。
-
A3 – Sensitive Data Exposure, Many web applications and APIs do not properly protect sensitive data, such as financial, healthcare, and personally identifiable information (PII) data. Attackers may steal or modify such weakly protected data to conduct credit card fraud, identity theft, or other crimes. Sensitive data requires extra protection such as encryption at rest or in transit, as well as special precautions when exchanged with the browser。Many web applications do not properly protect their sensitive data from unauthorized users。Sensitive data exposure occurs due to flaws like insecure cryptographic storage and information leakage。When an application uses poorly written encryption code to securely encrypt and store sensitive data in the database, an attacker can exploit this flaw and steal or modify weakly protected sensitive data such as credit cards numbers, SSNs, and other authentication credentials许多 Web 应用程序和 API 没有正确保护敏感数据,例如财务、医疗保健和个人身份信息 (PII) 数据。攻击者可能会窃取或修改此类受保护较弱的数据,以进行信用卡欺诈、身份盗窃或其他犯罪。敏感数据需要额外的保护,例如静态或传输中的加密,以及与浏览器交换时的特殊预防措施,许多Web应用程序没有正确保护其敏感数据免受未经授权的用户的侵害。敏感数据暴露是由于不安全的密码存储和信息泄露等缺陷而发生的。当应用程序使用编写不良的加密代码来安全地加密和存储数据库中的敏感数据时,攻击者 可以利用此漏洞窃取或修改受保护较弱的敏感数据,例如信用卡号、SSN 和其他身份验证凭据
-
A4 – XML External Entity (XXE),Many older or poorly configured XML processors evaluate external entity references within XML documents. External entities can disclose internal files using the file URI handler, internal SMB file shares on unpatched Windows servers, internal port scanning, remote code execution, and DoS service attacks such as the billion laughs attack.许多旧的或配置不佳的 XML 处理器评估 XML 文档中的外部实体引用。外部实体可以使用文件 URI 处理程序、未打补丁的 Windows 服务器上的内部 SMB 文件共享、内部端口扫描、远程代码执行和 DoS 服务攻击(例如十亿笑攻击)公开内部文件。
- XML 外部实体攻击XXE是一种服务器端请求伪造server-side request forgery (SSRF) 攻击,当配置错误的 XML 解析器允许应用程序解析来自不可靠源的 XML 输入时,可能会发生这种攻击。攻击者可以通过在恶意 XML 输入中包含引用来将受害者的 Web 应用程序引用到外部实体。当目标 Web 应用程序的弱配置 XML 解析器处理此恶意输入时,它使攻击者能够从服务器或连接的网络访问受保护的文件和服务
-
A5 – Broken Access Control,Restrictions on what authenticated users are allowed to do are not properly enforced. Attackers can exploit these flaws to access unauthorized functionality and/or data, such as accessing other users' accounts, viewing sensitive files, modifying other users’ data, and changing access rights.没有正确执行授权用户可以做什么的限制。攻击者可以利用这些漏洞访问未经授权的功能和/或数据,例如访问其他用户的帐户、查看敏感文件、修改其他用户的数据以及更改访问权限。
-
A6 – Security Misconfiguration,Security misconfiguration is the most common issue in web security, which is due in part to manual or ad hoc configuration (or no configuration at all), insecure default configurations, open S3 buckets, misconfigured HTTP headers, error messages containing sensitive information, and not patching or upgrading systems, frameworks, dependencies, and components in a timely manner (or at all).安全配置错误是网络安全中最常见的问题,部分原因是手动或临时配置(或根本没有配置)、不安全的默认配置、打开的 S3 存储桶、错误配置的 HTTP标头、包含敏感信息的错误消息,以及不及时(或根本不)修补或升级系统、框架、依赖项和组件。
-
A7 – Cross-Site Scripting (XSS),XSS flaws occur whenever an application includes untrusted data in a new web page without proper validation or escaping, or whenever it updates an existing web page with user-supplied data using a browser API that can create JavaScript. XSS allows attackers to execute scripts in the victim’s browser, which can hijack user sessions, deface websites, or redirect the user to malicious sites.当应用程序在没有适当验证或转义的情况下在新网页中包含不受信任的数据时,或者当它使用用户提供的数据更新现有网页时,就会出现 XSS 缺陷可以创建 JavaScript 的浏览器 API。 XSS 允许攻击者在受害者的浏览器中执行脚本,这些脚本可以劫持用户会话、破坏网站或将用户重定向到恶意网站。攻击过程:
- 网页由服务器创建并由客户端浏览器获取的文本和 HTML 标记组成。 服务器可以控制客户端对静态生成的页面的解释,但不能完全控制客户端对服务器动态生成的页面输出的解释。 因此,如果攻击者将不受信任的内容插入到动态页面中,服务器和客户端都不会识别它。 不受信任的输入可能来自 URL 参数、表单元素、cookie、数据库查询等。如果网络服务器插入的动态数据包含特殊字符,用户的网络浏览器会将它们误认为是 HTML 标记,因为它会将某些字符视为特殊字符以区分文本和标记。 因此,攻击者可以选择插入到生成页面中的数据,并误导用户的浏览器运行攻击者的脚本。 由于恶意脚本将在浏览器的安全上下文中执行以与合法 Web 服务器进行通信,因此攻击者将完全访问检索到的文档,并将页面中的数据发送回他/她的站点。
-
A8 – Insecure Deserialization, Insecure deserialization flaws occur when an application receives hostile serialized objects. Insecure deserialization leads to remote code execution. Even if deserialization flaws do not result in remote code execution, serialized objects can be replayed, tampered with, or deleted to spoof users, conduct injection attacks, and elevate privileges. 当应用程序接收到恶意序列化对象时,会出现不安全的反序列化缺陷。不安全的反序列化会导致远程代码执行。即使反序列化缺陷不会导致远程代码执行,序列化对象也可以被重放、篡改或删除以欺骗用户、进行注入攻击和提升权限。
-
A9 – Using Components with Known Vulnerabilities,Components such as libraries, frameworks, and other software modules run with the same privileges as the application. If a vulnerable component is exploited, such an attack can facilitate serious data loss or server takeover. Applications and APIs using components with known vulnerabilities may undermine application defenses and enable various attacks and impacts.库、框架等软件模块等组件以与应用程序相同的权限运行。如果利用易受攻击的组件,这种攻击可能会导致严重的数据丢失或服务器接管。使用具有已知漏洞的组件的应用程序和 API 可能会破坏应用程序的防御并导致各种攻击和影响。
-
A10 – Insufficient Logging and Monitoring, Insufficient logging and monitoring, coupled with missing or ineffective integration with incident response, allows attackers to further attack systems, maintain persistence, pivot to more systems, and tamper with, extract, or destroy data. Most breach studies show that the time to detect a breach is over 200 days, typically by external parties rather than internal processes or monitoring。记录和监控不足,加上与事件响应的缺失或无效集成,允许攻击者进一步攻击系统,保持持久性,转向更多系统,以及篡改、提取或破坏数据。大多数违规研究表明,检测违规的时间超过 200 天,通常由外部方而不是内部流程或监控。
web application hacking 方法论
-
Footprint Web Infrastructure 足迹网络基础设施
- Detect Load Balancers 侦测负载均衡,组织使用负载平衡器将 Web 服务器负载分布在多个服务器上,并提高 Web 应用程序的生产力和可靠性,攻击者使用各种工具,例如 dig、负载均衡检测器 (lbd) 和 Halberd 来检测负载均衡器及其真实 IP 地址
- 主要任务:
- Server Discovery
- 使用whois lookup
- DNS Interrogation DNS 询问, 一些平台可以查到比如(o Professional Toolset (tools.dnsstuff.com) o DNS Records (network-tools.com) o DNSRecon (github.com) o Domain Dossier (centralops.net))
- Port scanning 端口扫描,常用工具有:o Nmap (nmap.org) o NetScanTools Pro (www.netscantools.com) o Advanced Port Scanner (www.advanced-port-scanner.com) o Hping (www.hping.org)
- Service Discovery,通过常用端口号发现
- Server Identification
- Local identity
- Local Address
- Self-Names,此字段指定服务器视为本地的所有领域,并将为它们发送的所有请求视为非领域请求。
- Hidden Content Discovery
- Load Balancer Discovery
- Server Discovery
-
Analyze Web Applications 分析 Web 应用程序
- 确定用户输入的入口点:Identify Entry Points for User Input:分析 Web 应用程序的第一步是检查应用程序入口点,该入口点以后可以用作攻击的网关。 入口点之一包括拦截 HTTP 请求的前端 Web 应用程序。 其他 Web 应用程序入口点是网页提供的用户界面、Web 服务提供的服务界面、服务组件和 .NET Remoting 组件。
- Identify Server-Side Technologies识别服务器端技术,服务器端技术或服务器端脚本系统用于生成客户端请求的动态网页,并将它们内部存储在服务器上。 服务器允许在网络浏览器上运行交互式网页或网站。
- Identify Server-Side Functionality:识别服务器端功能:服务器端功能是指服务器在输出网页上执行程序的能力。 用户请求会刺激驻留在 Web 服务器上的脚本来显示交互式网页或网站。 服务器执行服务器端脚本,这些脚本对用户是不可见的。
- Identify Files and Directories:识别文件和目录:Web 服务器托管 Web 应用程序,而托管这些 Web 应用程序时的错误配置可能会导致关键文件和目录在 Internet 上的暴露。 攻击者使用 Gobuster 等各种自动化工具识别在 Internet 上公开的目标 Web 应用程序的文件和目录。 此类信息进一步帮助攻击者收集存储在文件和文件夹中的敏感信息。
- Identify Web Application Vulnerabilities: Web 应用程序是使用各种技术和平台开发的。 在 Web 应用程序开发中不遵循安全编码实践可能会留下可被利用来执行各种类型攻击的缺陷。
- Map the Attack Surface: 攻击者将 Web 应用程序的攻击面映射到特定的易受攻击区域。 它们识别应用程序发现的各种攻击面以及与之相关的漏洞。
-
Bypass Client-Side Controls 绕过客户端控制,Web 应用程序在通过客户端组件传输数据时需要客户端控件来限制用户输入,并实施措施来控制用户与他或她自己的客户端的交互。 开发人员使用隐藏 HTML 表单字段和浏览器扩展等技术来允许通过客户端将数据传输到服务器。 通常,Web 开发人员假设从客户端传输到服务器的数据在用户的控制范围内,这种假设会使应用程序容易受到各种攻击。
- Attack Hidden Form Fields: Identify hidden form fields on the web page and manipulate the tags and fields to exploit the web page before transmitting the data to the server.攻击隐藏表单域:识别网页上的隐藏表单域并操纵标签和域以在将数据传输到服务器之前利用网页。
- Attack Browser Extensions: Attempt to intercept the traffic from the browser extensions or decompile the browser extensions to capture user data.尝试拦截来自浏览器扩展的流量或反编译浏览器扩展以捕获用户数据。
- Perform Source Code Review: Perform source code review to identify vulnerabilities in the code that cannot be identified by traditional vulnerability scanning tools.执行源代码审查:执行源代码审查以识别代码中传统漏洞扫描工具无法识别的漏洞。
- Evade XSS Filters: Evade XSS filters by injecting unusual characters into the HTML code.规避 XSS 过滤器:通过在 HTML 代码中注入不寻常的字符来规避 XSS 过滤器。
-
Attack Authorization Schemes 攻击授权方案
- Uniform Resource Identifier: 统一资源标识符 (URI) 提供了一种识别资源的方法。 它是远程或本地访问的 Internet 资源的全局标识符。 攻击者可能会使用 URI 访问受保护而无法发布的文档/目录,将 SQL 查询或其他未使用的命令注入应用程序,和/或让用户查看连接到另一台服务器的特定站点
- Parameter Tampering: 参数篡改涉及操纵服务器和客户端之间交换的参数以修改应用程序数据,例如产品的价格和数量、权限和用户凭据。 这些信息通常存储在 cookie、URL 查询字符串或隐藏的表单字段中,攻击者可以使用它们来增加控制和应用程序功能。
- POST Data: POST 数据通常包含授权和会话信息,因为客户端提供的信息必须与提供它的会话相关联。 攻击者可以利用帖子数据中的漏洞并轻松操纵它。
- HTTP Headers:Web 浏览器不允许修改标题。 因此,要修改头部,攻击者必须编写自己的程序并执行 HTTP 请求。 他/她还可以使用可用的工具来修改从浏览器发送的任何数据。通常,授权 HTTP 标头包含以 Base-64 编码的用户名和密码。 攻击者可以通过提交绑定在同一个标头中的两个 HTTP 请求来破坏标头。 代理系统执行第一个 HTTP 标头,目标系统执行另一个 HTTP 标头,从而允许攻击者绕过代理的访问控制。
- Query String and Cookies: 浏览器使用 cookie 在无状态 HTTP 协议中维护其状态,以及存储用户偏好、会话令牌和其他数据。 客户端可以修改 cookie 并通过 URL 请求将它们发送到服务器,从而允许攻击者修改 cookie 内容。 Cookie 修改取决于 cookie 的使用,范围从会话令牌到授权的决策数组。
- Hidden Tags: 当用户在 HTML 页面上选择任何内容时,选择将存储为表单字段值并作为 HTTP 请求(GET 或 POST)发送到应用程序。 HTML 可以将字段值存储为隐藏字段,浏览器不会将其提取到屏幕上; 相反,它在表单提交期间收集并提交这些字段作为参数,用户可以对其进行操作。 然而,他/她必须做出选择。 发送到浏览器的代码没有任何安全价值; 因此,通过操纵隐藏值,攻击者可以轻松访问该页面并在浏览器中运行它。
-
Attack Authentication Mechanism 攻击认证机制
- Username Enumeration
- Predictable Usernames
- Password Attacks
- Session Attacks
- Cookie Exploitation
-
Attack Access Controls 攻击访问控制
-
Attack Session Management Mechanism 攻击会话管理机制
-
Perform Injection Attacks 执行注射攻击
-
Attack Application Logic-Flaws 攻击应用程序逻辑缺陷
-
Attack Shared Environments 攻击共享环境
-
Attack Web App Client Attack Database Connectivity 攻击 Web App 客户端攻击数据库连接
-
Attack Web Services 攻击网络服务
Webhooks
Webhook 是用户定义的 HTTP 回调或基于事件引发的推送 API 触发,例如收到对帖子的评论并将代码推送到注册表。 Webhook 允许应用程序使用最新信息更新其他应用程序。一旦被调用,它就会向其他应用程序提供数据,这意味着用户可以立即收到实时信息。 Webhook 有时被称为“反向 API”,因为它们提供了 API 规范所需的内容,开发人员应该创建一个 API 来使用 Webhook。 Webhook 是一个 API 概念,也用于在触发特定事件时从应用程序向手机号码或电子邮件地址发送文本消息和通知。例如,如果您在在线商店中搜索某个商品并且所需商品缺货,您可以单击“通知我”栏以在该商品可供购买时从应用程序中获取警报。这些来自应用程序的通知通常通过 webhook 发送。
Web shells
Web shell 是一段恶意代码或脚本,它使用 PHP、ASP、PERL、RUBY 和 Python 等服务器端语言开发,然后安装在目标服务器上。恶意脚本使攻击者能够通过目标服务器及其文件系统获得远程访问或远程管理功能。攻击者通过利用远程文件包含 (RFI)、本地文件包含 (LFI)、管理接口公开和 SQL 注入等最常见的漏洞注入恶意脚本。攻击者还可以使用社会工程技术执行 XSS 攻击以安装恶意代码。攻击者还使用网络监控工具(主要是 Wireshark)来发现以后可被利用以进行 Web shell 注入的漏洞。这些漏洞通常存在于 Web 服务器的软件或内容管理系统 (CMS) 中。攻击者使用 Web shell 来执行权限提升并获得远程访问以下载、上传、擦除和执行目标 Web 服务器上的文件。利用 web shell,攻击者还可以窃取隐私数据、通过 DDoS 攻击损害网站声誉、改变网站结构、使网页资源在 Internet 上不可用、维护持久性、泄露数据等。
- tools:
- WSO Php Webshell Source: github.com
- b374k (github.com)
- C99 (github.com)
- China Chopper (www.fireeye.com)
- R57 (github.com)
- Pouya ASP Web Shell (github.com
- backdoor tool:
- Weevely Source: github.com
web API安全架构
API 是一种流行的技术,它充当通信网关并使用 Web 集成不同的应用程序。 API 因其先进的技术和对主流基础设施的使用而被广泛采用。由于糟糕的编程实践引起的各种安全漏洞以及它的透明度,它很容易受到最新和复杂的网络攻击。为了保护 API 免受这些攻击,安全专业人员和开发人员需要建立安全的 API 架构、有效的安全策略和缓解策略。 API 架构是使用由防火墙组成的 API 网关构建的,防火墙充当服务器来控制流量并检测所有可能的攻击。执行 API 安全架构的安全策略是通过将 API 实现和 API 安全隔离到不同的层来实现的。这些层强调 API 设计和 API 安全执行不同的角色,需要不同的专业领域。它侧重于关注点的逻辑分离,强调在正确的时间解决正确问题的知识。在安全的 API 架构下,API 开发人员只关注应用程序域,确保所有 API 设计正确,并帮助 API 与不同应用程序集成。已发布 API 的安全流程由 API 安全专业人员实施;因此,API 开发人员无需关心已发布 API 的安全。 只有 API 安全专业人员有权将安全策略应用于组织中的 API。这些专业人员主要关注身份、API 中的威胁和数据安全。因此,他们需要先进且适当的工具来执行与 API 实现分开的安全任务。安全专业人员使用 API 网关,这些网关是物理和虚拟形式的强化设备。这些网关安装在组织的非军事区 (DMZ) 中。 API 网关还充当内部应用程序和外部公共 Internet 之间的安全代理。它为 API 安全管理员提供了许多安全功能和控制,例如访问控制、威胁检测、机密性、完整性、审计管理、身份验证、消息验证和组织发布的所有 API 的速率限制.
Web 防御
-
Percent Encoding
Percent Encoding or URL Encoding is a technique for secure handling of URL by replaces unsafe and non-ascii characters with % followed by two hexadecimal digits.
Example:
%20 or + both are used for SPACE
In URL:, there are some reserved character such as '/' that is used to separate paths in URL. To use this not as separator, then it must be encoded.
%2F used for '/'
Full list of percent encoded characters here
-
HTML Encoding specify how special character will shown.
-
- Input validation
- Customized error messages
- Monitoring database traffic
- Limit length of user input
-
- Testing tools
- Filtering meta
- Filtering output
-
- Reverse proxy
- Remove unnecessary functions
- Secure remote administration
- Firewall
- IDS
-
- Dynamic testing
- Source Code analysis
- Strong cryptography
- Use SSL
- Hotfixes / patches
- Cookie timeout