接口测试很常见,但是每次遇到接口测得都不够全面,这里做个记录。
遇到了一个swagger,可以批量测试,但是如果想深入,得批量替换参数,结果发现参数替换很麻烦,之前都是在burp里直接替换,但是后面发现burp的替换参数那个模块太费劲了,不方便改,于是有了这篇文章
接口测试,笔者习惯导入postman或者是用lijiejie师傅的swagger-exp
这里导入到postman
导入即可 这里需要修改的一个值,baseUrl的属性
填入api请求的域名地址,保存
最后一步,删除postman的header头,以及挂上burp的代理
挂上burp的代理,这一步是为了方便看请求和响应
点run,继续点run
就可以在burp上看到请求了
swagger的请求,很多接口大概率都是401或者访问不通的,安全防护越来越好、开发人员的安全意识越来越强、接口安全的普及,但是,100个里面有1个接口没有做好限制,基本就是前功尽弃,如下:
这里返回了公司的所有信息,如地址,姓名、手机号、commpanyid等等字段 一般来说,这就算是未授权信息泄露了,但是如何深入其他的接口呢,比如这些响应是200的接口,又有参数
那么我们可以把获得的json数据,进行转换,如下:
转换后
这里转换成post的参数,一来直接加在url后面,如http://xxxx/api?a=1&b=2&c=3
二来也可以进行参数替换
然后根据参数对应关系,编写autoDecoder脚本:
# -*- coding:utf-8 -*-
# author:f0ngf0ng
# 替换参数
from flask import Flask,Response,request
from pyDes import *
import base64,hashlib,json
app = Flask(__name__)
@app.route('/encode',methods=["POST"])
def encrypt():
param = request.form.get('dataBody') # 获取 post 参数
param_headers = request.form.get('dataHeaders') # 获取 post 参数
param_requestorresponse = request.form.get('requestorresponse')
print(param_headers )
param_headers = param_headers.replace("company_id=voluptate","company_id=xxxxx")
param_headers = param_headers.replace("userid=voluptate","userid=yyyyyy")
if param_requestorresponse == "request":
print(param_headers.strip() + "\r\n\r\n\r\n\r\n" + param.strip())
return param_headers.strip() + "\r\n\r\n\r\n\r\n" + param.strip()
else:
return param.strip()
@app.route('/decode',methods=["POST"]) # 不解密
def decrypt():
param = request.form.get('dataBody') # 获取 post 参数
param_headers = request.form.get('dataHeaders') # 获取 post 参数
param_requestorresponse = request.form.get('requestorresponse')
print(request.form)
if param_requestorresponse == "response":
return param_headers.strip() + "\r\n\r\n\r\n\r\n" + param.strip()
else:
return param.strip()
if __name__ == '__main__':
app.debug = True # 设置调试模式,生产模式的时候要关掉debug
app.run(host="0.0.0.0",port="8888")
如果请求包为json,同样也可以进行替换
autoDecoder配置如下:
实际效果:
lijiejie师傅的swaagger-exp工具修改如下:(顺带一提,lijiejie师傅牛逼!)
python3 swagger.py http://vuln.com/swagger/v1/swagger.json vuln.com
就可以在burp看到请求和响应了
同样,可以在autoDecoder里修改参数,这里不再举例
https://github.com/lijiejie/swagger-exp lijiejie师傅的swagger-exp工具
https://www.postman.com/ postman工具
https://github.com/f0ng/autoDecoder 替换请求包、响应包
公众号回复【接口测试】,获取修改后的swagger-exp脚本。