API漏洞检测研究

xray API漏洞检测_青霄的博客-CSDN博客
Swagger ui接口自动化批量漏洞测试_swgeer-ui 漏洞_山山而川'的博客-CSDN博客
    
    
什么是 API 安全测试以及它是如何工作的? | Synopsys
API 安全测试针对应用程序编程接口 (API) ,就其安全性、正确性和可靠性进行测试,以确保其符合组织的最佳实践。
API 安全测试有助于识别和预防漏洞及其相关的潜在组织风险。通过了解 API 的输入预期,API 扫描工具能够智能地模糊化数据,以发现隐藏的错误。
API 扫描背后的理念是精心设计输入,以发现 API 中的错误和未定义的行为,其在本质上是模仿潜在黑客的行为和攻击向量。
传统的DAST扫描工具无法完全覆盖API,它们只覆盖一小部分API。如果组织的前端无法与所有 API 端点进行交互,传统的 DAST 扫描工具则会将其遗漏。因此,必须采用全面的 API 测试策略,以解决 API 所有端点中的问题。
     
   
【API安全】KCon 2022议题分享:自动化API漏洞挖掘 (zhihu.com)
API漏洞检测研究_第1张图片
  API漏洞检测研究_第2张图片
  API漏洞检测研究_第3张图片
  
   
十款优秀API安全测试工具-51CTO.COM
商业 vs 开源:10大主流API检测工具_腾讯新闻 (qq.com)
商业API测试工具与平台:
  • APIsec:针对API的渗透测试工具。很多工具可以扫描用于脚本注入等典型攻击的常见漏洞,但APIsec重在测试目标API的方方面面,确保从核心网络到访问核心网络的端点都免于遭受API代码漏洞影响。
  • AppKnox:AppKnox通过扫描定位在生产环境、端点或任何可能部署之处的API。定位后,用户可以选择API提交,进行进一步的测试。AppKnox测试所有可能导致API中断或被破坏的常见问题,测试包括对Web服务器、数据库和服务器上与API交互的所有组件的完整分析。
  • Data Theorem API Secure:旨在适应任何持续集成和持续交付/部署(CI/CD)环境,从而在开发的每个阶段和生产环境中为API提供持续的安全。该分析器引擎会持续搜索网络,查找新的API,并快速识别未授权API或属于公司影子IT的那些API。
  • Postman:使用安全存储库可以确保未来的API从一开始就保持严格的安全和组织标准。
  • Smartbear ReadyAPI:支持一键执行API安全分析,也还支持其他关键功能,例如查看API处理非预期负载或使用量突增的性能。
  • Synopsis API Scanner:除了安全测试之外,该工具还在其深度扫描与测试套件中融合了模糊测试。
     
开源API测试工具:
  • Astra:主要专注于表征状态转移(REST)API。Astra的效用在于帮助集成进CI/CD流水线,进行检查,确保常见漏洞不会蔓延到所谓的安全REST API中。
  • crAPI:crAPI是可以连接到目标系统并使用根客户端默认处理程序集提供基本路径的少数封装器之一,并且无需创建任何新连接即可完成此操作。高级API开发人员可以之节省大量时间。
  • Apache JMeter:Apache JMeter精巧的套件可以测试静态或动态资源的性能。它可以大量生成真实流量的模拟负载,供开发人员发现其API在压力下的表现。
  • Taurus:可以很方便地将独立API测试程序转换为连续测试操作。
  • FuzzapiFuzzapi是一个使用API_Fuzzer并为gem提供UI解决方案的rails应用程序。
   
   
DAST( 动态应用程序安全测试
DAST是测试web、移动和API应用程序以通过模拟攻击发现漏洞的过程。
DAST是使用自动扫描仪或手动渗透测试实践来实时测试应用程序的过程。
主要由 appsec 和渗透测试人员使用。
大多数自动扫描程序会发现 SQL 注入、NoSQL 注入、XSS 等严重漏洞。逻辑错误、身份验证和授权缺陷等难以发现的漏洞通常由道德黑客、渗透测试人员和 AppSec 工程师完成。首选方法是编写可以作为 CI/CD 的一部分执行的自动化测试用例。
优点
  • 独立于应用程序堆栈。它作为一个整体测试应用程序。在运行时的所有源代码和库都经过漏洞测试。
  • 不需要访问源代码
  • 误报率低:根据 OWASP 的基准项目,DAST 解决方案产生的误报率低于其他测试方法。
  • 识别配置问题:DAST 擅长发现仅在应用程序运行时出现的安全漏洞。此外,DAST 从外向内攻击应用程序,将其置于完美位置,以发现其他 AST 工具遗漏的配置错误。
  • 逻辑漏洞:这些缺陷在开发早期很难检测到。这些问题是由安全配置、数据和其他因素引起的,所以很难在非生产环境中检测到,检测这些缺陷需要在编写测试用例并在开发/生产中连续执行它们。
缺点:
  • 在代码中找不到漏洞的确切位置
  • 无法完全覆盖API
  • 测试可能很耗时。
免费的 DAST 解决方案:
  • EthicalCheck:API 的免费和自动化 DAST。   Free and Instant API penetration Testing | EthicalCheck™
  • Burp Suite:编写你的测试  Download Burp Suite Community Edition - PortSwigger
   
  
Astra:针对REST API的自动化安全测试工具
GitHub - flipkart-incubator/Astra: Automated Security Testing For REST API's
Astra可以自动检测和测试登录和注销(身份验证API),因此任何人都很容易将其集成到CI/CD管道中。Astra可以将API集合作为输入,因此这也可以用于在独立模式下测试API。
  • SQL注入
  • 跨站点脚本
  • 信息泄露
  • 断开的身份验证和会话管理
  • CSRF(包括盲CSRF)
  • Rate limit
  • CORS错误配置(包括CORS旁路技术)
  • JWT攻击
  • CRLF检测
  • XXE盲注
  
要求:
  • Linux or MacOS
  • Python 2.7
  • mongoDB
  
安装:
# 运行mongo容器
docker run --name astra-mongo -d mongo
# 安装GUI Docker
$ git clone https://github.com/flipkart-incubator/Astra.git
$ cd Astra
$ docker build -t astra .
$ docker run --rm -it --link astra-mongo:mongo -p 8094:8094 astra
# 安装CLI Docker
$ git clone -b docker-cli https://github.com/flipkart-incubator/Astra.git  # -b指定分支
$ cd Astra
$ docker build -t astra-cli .
$ docker run --rm -it --link astra-mongo:mongo astra-cli
     
http://192.168.11.135:8094/,经测试,感觉效果不行,dvwa漏洞环境现有的sql注入与csrf接口居然没检测出。
Fuzzapi:
Fuzzapi/fuzzapi: Fuzzapi is a tool used for REST API pentesting and uses API_Fuzzer gem (github.com)
https://youtu.be/rh7U6Kob24g  fuzzapi视频
https://youtu.be/viCCrt1aySE  fuzzapi视频
Automating API Penetration Testing using fuzzapi - AppSecUSA 2016 - YouTube fuzzapi POST请求
Fuzzapi是一个使用API_Fuzzer并为gem提供UI解决方案的rails应用程序。
安装:
​git clone https://github.com/Fuzzapi/fuzzapi.git
cd fuzzapi
docker-compose build
docker-compose up
web访问:http://localhost:3000 
安装问题:
1、Gemfile依赖于ruby,Gemfile文件中要求ruby2.3.0版本,所以要修改Dockerfile中“FROM ruby:2.3.0 ”
  API漏洞检测研究_第4张图片
2、错误“There are problems and -y was used without --force-yes”可按照如下解决:
 
3、根据ruby 2.2安装bundler_tigergm310的博客-CSDN博客,可知由于bundler的最新版本已经不再支持ruby 2.3以下版本,需要指定bundler的版本:
 
4、错误“Bundler::Fetcher::CertificateFailureError Could not verify the SSL certificate
 
Rails Assets有段话:
 
据此修改如下:
  API漏洞检测研究_第5张图片
  
构建后:
  API漏洞检测研究_第6张图片
  
访问web:http://127.0.0.1:3000/
   
GET请求:填写参数如下:
API漏洞检测研究_第7张图片
文件上传接口扫描结果如下:服务器版本信息披露,通过x-powered-by进行信息披露、IDOR(越权漏洞)、Rate limit
  API漏洞检测研究_第8张图片
   
   
POST请求:参数如下:
中级sql注入接口扫描结果:
API漏洞检测研究_第9张图片
   
   
xray:

chaitin/xray: 一款完善的安全评估工具,支持常见 web 安全问题扫描和自定义 poc | 使用之前务必先阅读文档 (github.com)

xray 安全评估工具文档

一款功能强大的安全评估工具。
xray 并不开源
目前支持的漏洞检测类型包括:
  • XSS漏洞检测 (key: xss)
  • SQL 注入检测 (key: sqldet)
  • 命令/代码注入检测 (key: cmd-injection)
  • 目录枚举 (key: dirscan)
  • 路径穿越检测 (key: path-traversal)
  • XML 实体注入检测 (key: xxe)
  • 文件上传检测 (key: upload)
  • 弱口令检测 (key: brute-force)
  •  jsonp 检测 (key: jsonp)
  • ssrf 检测 (key: ssrf)
  • 基线检查 (key: baseline)
  • 任意跳转检测 (key: redirect)
  • CRLF 注入 (key: crlf-injection)
  • Struts2 系列漏洞检测 (高级版,key: struts)
  • Thinkphp系列漏洞检测 (高级版,key: thinkphp)
  • XStream 系列漏洞检测 (key: xstream)
  • POC 框架 (key: phantasm)
  
主要特性:
  • 漏洞范围广
  • 检测速度快
  • 检测算法优秀
  • 高度定制化
  • 更新速度快
    
使用方法:
1、查看版本号
./xray_linux_amd64 version
  API漏洞检测研究_第10张图片
  
2、使用使用 xray 基础爬虫模式进行漏洞扫描
./xray_linux_amd64 webscan --basic-crawler http://testphp.vulnweb.com/ --html-output xray-crawler-testphp.html
   
    API漏洞检测研究_第11张图片
   
3、使用http代理进行被动扫描
./xray_linux_amd64 webscan --listen 127.0.0.1:7777 --html-output proxy.html
通过插件FoxyProxy设置浏览器 http 代理为 http://127.0.0.1:7777,就可以自动分析代理流量并扫描。
  
4、手动指定本次运行的插件
默认情况下,将会启用所有内置插件,可以使用下列命令指定本次扫描启用的插件。
xray webscan --plugins cmd-injection,sqldet --url http://example.com
xray webscan --plugins cmd-injection,sqldet --listen 127.0.0.1:7777
  
5、指定插件输出
可以指定将本次扫描的漏洞信息输出到某个文件中:
xray webscan --url Example Domain \
--text-output result.txt --json-output result.json --html-output report.html
 
  
报告样例: XRay Report
API漏洞检测研究_第12张图片

你可能感兴趣的:(安全,API漏洞)