闲话逼逼叨
api渗透 文章可能偏少,教程也不是很多,视频更没有几个。但是迪哥他有啊,每一期都更新技术,刚好有这个api,就看了下,货真价实。
去年工作中,的确碰到客户说 我们有几个接口,你会不会搞这个。去年网上的文章有少数,只是大致告诉了一些工具,思路,真正去干的时候,还是很懵逼的状态,半天的时间也不可能完全学会。安全专业,其实也挺杂的,会的也要多,甚至还会要求你去干运维的活,但也要专注一个方向发展。ok 不哔哔了。
什么是api?
-
api是应用程序接口,是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。
-
api目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问原码或理解内部工作机制的细节。
-
api的一个主要功能是提供通用功能集。api同时也是一种中间件,为各种平台提供数据共享,程序设计的实践中编程接口的设计首先要使软件系统的职责得到合理划分。
简单来说
疯狂星期四,你去吃KFC,来一份红烧鲸鱼汉堡,再来一份清蒸鲨鱼排,KFC没有,他就打电话给供货商,然后等十几分钟,你就吃到了。供货商就属于api的性质。
思维导图
常见接口概念
SOAP(Simple Object Access Protocol)简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。SOAP不是Web Service的专有协议。
SOAP使用HTTP来发送XML格式的数据,可以简单理解为:SOAP = HTTP +XML
REST(Representational State Transfer)即表述性状态传递,在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的Web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。
WSDL(Web Services Description Language)即网络服务描述语言,用于描述Web服务的公共接口。这是一个基于XML的关于如何与Web服务通讯和使用的服务描述;也就是描述与目录中列出的Web服务进行交互时需要绑定的协议和信息格式。通常采用抽象语言描述该服务支持的操作和信息,使用的时候再将实际的网络协议和信息格式绑定给该服务。
攻击思路
Method:请求方法
攻击方式:OPTIONS,PUT,MOVE,DELETE效果:上传恶意文件,修改页面等
URL:唯一资源定位符
攻击方式:猜测,遍历,跳转效果:未授权访问等
Params:请求参数
攻击方式:构造参数,修改参数,遍历,重发效果:爆破,越权,未授权访问,突破业务逻辑等
Authorization:认证方式
攻击方式:身份伪造,身份篡改效果:越权,未授权访问等
Headers:请求消息头
攻击方式:拦截数据包,改Hosts,改Referer,改Content-Type等效果:绕过身份验证。绕过referer验证,绕类型验证,DDOS
Body:消息体
攻击方式:SQL注入,XML注入,反序列化等
效果:提权,业务逻辑,未授权等
WebService类-Wsdl&SoapUI
探针:?wsdl
利用:SoapUI&ReadyAPI
google hacking
inurl:jws?wsdl
inurl:asmx?wsdl
inurl:aspx?wsdl
inurl:ascx?wsdl
inurl:ashx?wsdl
inurl:dll?wsdl
inurl:exe?wsdl
inurl:php?wsdl
inurl:pl?wsdl
inurl:?wsdl
filetype:jws
filetype:asmx
filetype:ascx
filetype:aspx
filetype:ashx
filetype:dll
filetype:exe
filetype:php
filetype:pl
filetype:wsdl
SOAP类-Swagger&SoapUI&EXP
探针:目录&JS资源
利用:SoapUI&EXP
https://github.com/lijiejie/swagger-exp
https://github.com/jayus0821/swagger-hack
目录:
/swagger
/api/swagger
/swagger/ui
/api/swagger/ui
/swagger-ui.html
/api/swagger-ui.html
/user/swagger-ui.html
/libs/swaggerui
/api/swaggerui
/swagger-resources/configuration/ui
/swagger-resources/configuration/security
HTTP类-Webpack&PackerFuzzer
探针:插件&JS资源
利用:PackerFuzzer
https://github.com/rtcatc/Packer-Fuzzer
以下案例均说明工具使用和思路分享
WebService类-Wsdl&ReadyAPI
下面涉及都是真实环境,脱敏处理,看懂思路就行,给一个接口,知道如何测试即可。
https://xxxxx.xxxx.com/wsdl/DPSGatewayImplService?wsdl
使用readyAPI工具 进行自动化扫描
首先创建一个安全项目
这里呢 就添加url地址,看后缀名 如果是 wsdl wadl 选第一个,则选第二个,这里选择第一个
然后就开始自动扫描
扫描过程 大概需要30分钟,静静等待即可。
SOAP类-Swagger&SoapUI&EXP
soapui测试
首页这样 记住json文件
手工验证,复制url到软件里
起个名字
导入成功就手工去测试
这个工具和postman差不多 ,这个工具可以把所有的接口地址放进来,一个一个测试,太麻烦了
脚本利用
swagger-hack
python exp.py -u http://xxx.xx.xx/
运行之后 他会生成csv的文件 关注状态码和响应包就行了
比如这个
谷歌插件
Talend API Tester
HTTP类-WebPack&PackerFuzzer
webpack 是一个用于现代JavaScript应用程序的静态模块打包工具
这里的静态模块指的是开发阶段,可以被 webpack 直接引用的资源(可以直接被获取打包进bundle.js的资源)
当 webpack处理应用程序时,它会在内部构建一个依赖图,此依赖图对应映射到项目所需的每个模块(不再局限js文件),并生成一个或多个 bundle
webpack的能力:
「编译代码能力」,提高效率,解决浏览器兼容问题
「模块整合能力」,提高性能,可维护性,解决浏览器频繁请求文件的问题
「万物皆可模块能力」,项目维护性增强,支持不同种类的前端模块类型,统一的模块化方案,所有资源文件的加载都可以通过代码控制
插件捕捉到了使用了webpack
上工具
python Packer-Fuzzer.py -u http://xxx.xx.x.x/
下篇再见~
本人组建了安全交流群,一起学习,分享经验,也有内推福利哦
目前人数超过200 只能加好友,后台回复进群。
原文始发于微信公众号(轩公子谈技术):API攻防-接口安全上
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论