API攻防&系统攻防笔记分享

APL

APL核心定义

核心定义:

API 的全称是 应用程序编程接口。它是一组预定义的规则、协议和工具,允许不同的软件应用程序之间相互通信和交换数据。

经典比喻:餐厅服务员

想象一下你去一家餐厅吃饭:

你(客户):就像一个应用程序(比如你的手机天气App)。

厨房(服务端):就像一个拥有所有资源和功能的系统(比如气象局的数据库)。

菜单(API文档):列出了你可以点的所有菜(可以请求的所有功能),以及每道菜需要什么信息(比如"牛排要几分熟")。

服务员(API):就是你和服务之间的桥梁。你不需要知道厨房如何做菜,你只需要根据菜单点菜(发出请求),服务员会把你的要求传递给厨房,然后把做好的菜(数据/结果)端给你。

在这个比喻中:

你不需要知道 厨房的布局、厨师的秘方或如何操作烤箱。

你只需要遵循 菜单上定义的规则(比如不能点一个菜单上没有的菜)。

服务员负责 将你的"请求"(点单)翻译成厨房能理解的指令,并确保你得到正确的"响应"(你点的菜)。

结论:API 就是一种让软件A以标准、安全的方式使用软件B的功能或数据,而无需了解软件B内部复杂实现细节的约定

核心组成部分

一个完整的 API 通常包含以下几个关键部分:

端点

这是 API 的 URL 地址,用于定位特定的资源或服务。

例如:https://api.example.com/v1/users

https://-协议

api.example.com-API服务的主机地址

v1/users-路径,指向特定的资源(用户)

HTTP 方法

用于指定要对资源执行的操作类型。最常用的有:

GET:获取资源(查询数据)。

POST:创建新资源(提交数据)。

PUT/PATCH:更新已有资源(修改数据)。

DELETE:删除资源。

参数

提供给 API 的附加信息,用于细化请求。

查询参数:通常用于 GET 请求,附加在 URL 问号后面,如 ?page=2&limit=10。

路径参数:作为 URL 的一部分,如 /users/{user_id}。

请求体:通常用于 POST、PUT 请求,包含要发送的数据(通常是 JSON 或 XML 格式)。

请求/响应头

包含关于请求或响应的元信息。

常见请求头:Authorization(身份验证令牌)、Content-Type(发送数据的类型,如 application/json)。

常见响应头:Content-Type(返回数据的类型)、Status Code(状态码)。

身份验证

大多数 API 不是完全开放的,需要验证调用者的身份。常见方式有:

API Key:一个简单的令牌,在请求头或参数中传递。

OAuth:更复杂、更安全的授权框架,常用于第三方登录(如"用微信登录")。

JWT:一种基于令牌的认证标准。

状态码

由服务器返回的三位数字代码,表示请求的结果。

2xx - 成功:200 OK(成功),201 Created(创建成功)。

4xx - 客户端错误:400 Bad Request(请求错误),401 Unauthorized(未认证),403 Forbidden(无权限),404 Not Found(资源不存在)。

5xx - 服务器错误:500 Internal Server Error(服务器内部错误)。

响应体

服务器返回的主要数据,通常是 JSON 或 XML 格式。

例如,一个成功的 GET 请求可能返回:

json 复制代码
{
  "id": 123,
  "name": "张三",
  "email": "zhangsan@example.com"
}

工作流程

javascript 复制代码
[你的应用程序] --(HTTP请求)--> [API端点] --(处理请求)--> [服务器/数据库]
                                                              |
[你的应用程序] <--(HTTP响应: 数据+状态码)-- [API端点] <--(返回结果)--

API 的主要类型和架构风格

Web API / HTTP API

这是目前最常见的 API 类型,基于 HTTP/HTTPS 协议,通过互联网进行通信。我们日常讨论的 API 大多指这一类。

REST API

REST 是一种设计风格,而不是一个标准。遵循 REST 原则的 API 称为 RESTful API。它是目前最流行的 Web API 风格。

核心原则:

无状态:每次请求都必须包含处理该请求所需的所有信息。

统一接口:使用标准的 HTTP 方法和资源标识(URI)。

资源导向:将数据和行为抽象为"资源"(如用户、订单)。

可缓存:响应应明确标示是否可被缓存。

优点:简单、灵活、易于理解和扩展。

GraphQL API

由 Facebook 创建的一种查询语言。它允许客户端精确地指定需要哪些数据,避免了 REST API 中常见的"过度获取"或"获取不足"的问题。

核心特点:客户端发送一个查询请求,服务器返回恰好匹配该查询的 JSON 数据。

SOAP API

一种较老的、基于 XML 的协议。它非常严格、标准化,内置了安全性和事务处理,但也比 REST 更复杂、更重。

核心特点:使用 WSDL 文件来严格定义接口。

gRPC

由 Google 开发的高性能、开源的 RPC 框架。它使用 Protocol Buffers 作为接口定义语言和序列化工具,比 JSON 更小更快,非常适合微服务之间的内部通信

API 的实际应用场景

第三方集成

支付:电商网站集成支付宝、微信支付的 API 来完成收款。

地图:外卖App集成高德地图或百度地图的 API 来展示配送路线。

社交媒体分享:新闻App集成微博、微信的 API 实现一键分享。

天气数据:你的手机天气App通过调用气象数据提供商的 API 来获取天气信息。

微服务架构

在一个大型复杂应用中,系统被拆分成多个小型、独立的服务(微服务)。这些服务之间通过轻量级的 API(通常是 REST 或 gRPC)进行通信。例如,用户服务、订单服务、商品服务各自独立,通过 API 协作。

前后端分离

在现代 Web 开发中,前端(浏览器、手机App)和后端(服务器)是分离的。它们之间通过 API 进行数据交互。前端负责展示和交互,后端负责数据处理和业务逻辑。

自动化脚本

开发者可以编写脚本,通过调用 API 来自动化完成一些任务,比如自动备份云盘文件、批量管理社交媒体帖子等

如何开始使用一个 API?

阅读官方文档:这是最重要的一步!好的文档会告诉你:

如何认证(获取 API Key)。

所有可用的端点(Endpoints)和它们的用途。

请求和响应的格式示例。

使用限制(频率限制、配额)。

获取身份凭证:通常是注册开发者账号,获取一个 API Key 或 Token。

使用工具进行测试:

Postman:最流行的 API 测试工具,提供图形化界面,可以轻松构建和发送请求、查看响应。

cURL:一个命令行工具,可以直接在终端中发送 HTTP 请求。

编写代码调用:

在你的应用程序中,使用任何编程语言的 HTTP 客户端库(如 Python 的 requests, JavaScript 的 fetch 或 axios)来构造请求并处理响应。

一个简单的 cURL 示例:

bash 复制代码
curl -X GET \
  'https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=Beijing' \
  -H 'Content-Type: application/json'

总结

APL是什么

软件组件之间的通信合约。

核心价值

解耦、复用、标准化。让开发更高效,系统更灵活。

关键组件

端点、HTTP 方法、参数、认证、状态码、响应体。

流行风格

REST(最通用)、GraphQL(灵活查询)、gRPC(高性能内部通信)。

如何使用

读文档 -> 拿密钥 -> 用工具测试 -> 写代码集成

攻防

API核心:需要知道参数,地址

类别:

SOAP

PEST

webservice:

  1. wsdi 爬虫url地址
  2. swagger:目录扫描、js资源
  3. webpack插件识别、js资源
    RPC

安全:

sql注入

身份验证

信息泄露

xss跨站

工具:

SoapUI

ReadyAPI

swagger-hack

类型特征:SOAP,RESTful,OpenAPI,GraphQL,gRPC 等

漏洞检测:接口发现,遵循分类,依赖语言,V1/V2 多版本等

项目使用:APIKit Postman Swagger-hack SoapUI ReadyAPI 等

API 分类特征

SOAP - WSDL:

一般的SOAP,后面加上-WSDL就会展现它所以的接口信息

OpenApi - Swagger:

打开窗口就可以看见所有的接口和参数信息

RESTful - /v1/api/:

地址中带了/v1/api/这样的关键字,基本就是restful了

PEST-WAPI:

软件框架风格

API 常见漏洞

OWASP API Security TOP 10 2023

API 检测流程

接口发现,遵循分类,依赖语言,V1/V2 多版本等

Method:请求方法

攻击方式:OPTIONS,PUT,MOVE,DELETE

效果:上传恶意文件,修改页面等

URL:唯一资源定位符

攻击方式:猜测,遍历,跳转

效果:未授权访问等

Params:请求参数

攻击方式:构造参数,修改参数,遍历,重发

效果:爆破,越权,未授权访问,突破业务逻辑等

Authorization:认证方式

攻击方式:身份伪造,身份篡改

效果:越权,未授权访问等

Headers:请求消息头

攻击方式:拦截数据包,改 Hosts,改 Referer,改 Content-Type 等

效果:绕过身份认证,绕过 Referer 验证,绕过类型验证,DDOS 等

Body:消息体

攻击方式:SQL 注入,XML 注入,反序列化等

效果:提权,突破业务逻辑,未授权访问等

API 检测项目

工具自动化:

SOAP - WSDL 测试 InfoSystem

Postman 联动

SoapUI

ReadyAPI

openAPI-swagger 测试

postman联动

https://github.com/lijie/swagger-exp

https://github.com/jayus0821/swagger-hack

RESTful- /v1/api/ 测试

Postman 联动

APIKit 联动(burp插件,安装到brup上面)

https://github.com/API-Security/APIKit

但是postman只是一个测试工具,postman发包,测试这个接口是否开放,不是安全工具,需要和别的工具联动使用,postman开个代理

把它转发到代理上面去,有几款工具是支持被动扫描的,就是等待数据包过来,它才开始扫描,比如xray

这里监听端口,即可扫描到postman通过代理端口发过来的包

也可以联动到burp上面,进行多重联动

手工发包测:vapi靶场

API1-身份越权

ID值更改遍历用户目录

API4-验证枚举

验证逻辑可持续提交

API5-接口枚举

更改URL地址尝试获取

API8-数据库注入

API9-v1/2多版本

v2无法爆破/v1爆破1655

系统攻防

操作系统上面的漏洞是很少的,一般操作系统漏洞存在内网,外网基本不存在,这里一般用工具扫描,推荐使用前两个工具

漏洞探针

操作系统:Windows、liunx

远程漏洞扫描(任意执行类):

Nessus

Nessus 号称是世界上最流行的漏洞扫描程序,全世界有超过 75000 个组织在使用它。该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。Nessus 不同于传统的漏洞扫描软件,Nessus 可同时在本机或远端上遥控,进行系统的漏洞分析扫描

Nexpose

Nexpose 是 Rapid7 出品,一款著名的、极佳的商业漏洞扫描工具。跟一般的扫描工具不同,Nexpose 自身的功能非常强大,可以更新其漏洞数据库,以保证最新的漏洞被扫描到。

漏洞扫描效率非常高,对于大型复杂网络,可优先考虑使用;对于大型复杂网络,可以优先考虑使用。可以给出哪些漏洞可以被 Metasploit Exploit,哪些漏洞在 Exploit-db 里面有exploit 的方案。可以生成非常详细的,非常强大的 Report,涵盖了很多统计功能和漏洞的详细信息。虽然没有 Web 应用程序扫描,但 Nexpose 涵盖自动漏洞更新以及微软补丁星期二漏洞更新(就是扫出漏洞,会教你如何利用)

Openvas

Goby

Goby 是一款新的网络安全测试工具,由赵武 Zwell(Pangolin、JSky、FOFA 作者)打造,它能够针对一个目标企业梳理最全的攻击面信息,同时能进行高效、实战化漏洞扫描,并快速的从一个验证入口点,切换到横向。能通过智能自动化方式,帮助安全入门者熟悉靶场攻防,帮助攻防服务者、渗透人员更快的拿下目标

本地漏洞扫描(权限提升):

wesng

tiquan

Linux-exploit-suggester

本地执行漏洞自检(溢出提权等)

Windows:(在线工具)

https://i.hacking8.com/tiquan

https://github.com/bitsadmin/wesng

Linux:

https://github.com/mzet-/linux-exploit-suggester

POC&CVE:

https://github.com/1nnocent1/PoC-in-GitHub

Win10-漏洞提权-CVE-2021-1732

https://github.com/KaLendsi/CVE-2021-1732-Exploit

Win08-漏洞提权-CVE-2019-1458

https://github.com/rip1s/CVE-2019-1458

Linux-漏洞提权-CVE-XXXX-XXXX

https://github.com/mzet-/liunx-exploit-suggester

相关推荐
漏洞文库-Web安全1 小时前
CTF密码学之SM4
安全·web安全·网络安全·密码学·ctf
知攻善防实验室2 小时前
双节期间,我收到了一封高危漏洞的邮件。
安全·网络安全
丝斯20112 小时前
AI学习笔记整理(22)—— AI核心技术(深度学习6)
人工智能·笔记·学习
koo3642 小时前
pytorch深度学习笔记1
pytorch·笔记·深度学习
jimmyleeee3 小时前
人工智能基础知识笔记二十一:Function Calling
人工智能·笔记
丝斯20113 小时前
AI学习笔记整理(21)—— AI核心技术(深度学习5)
人工智能·笔记·学习
虹科网络安全4 小时前
艾体宝洞察 | 图数据驱动:网络安全威胁管理从分散情报到攻击图谱
网络·安全·web安全
风123456789~4 小时前
【健康管理】第5章 流行病学、医学统计学 1/2
笔记·考证·健康管理
closejudge5 小时前
部署siyuan笔记docker问题记录
笔记