Skip to content

Latest commit

 

History

History
107 lines (81 loc) · 3.94 KB

File metadata and controls

107 lines (81 loc) · 3.94 KB
created updated
2023-01-10 23:21:35 +0800
2023-01-13 12:48:26 +0800

遇到了一个swagger,后面发现参数替换很麻烦,之前都是在burp里直接替换,但是后面发现burp的替换参数那个模块太费劲了,还不好改,于是有了这篇文章

swagger个人习惯导入postman或者是用lijiejie师傅的swaggerexp

这里导入到postman

导入即可 这里需要修改的一个值,就是baseUrl 填入api的地址,记得保存

最后一步,删除postman的header头,以及挂上burp的代理 600

挂上burp的代理,这一步是为了方便看请求和响应 600

点run,继续点run

500

就可以在burp上看到请求了 500 swagger的请求,很多接口大概率都是401或者访问不通的,安全防护越来越好、开发人员的安全意识越来越强、接口安全的普及,但是,100个里面有1个接口没有做好限制,基本就是前功尽弃,如下:

500

这里返回了公司的所有信息,如地址,姓名、手机号、commpanyid等等字段 一般来说,这就算是未授权信息泄露了,但是如何深入其他的接口呢,比如这些响应是200的接口,又有参数 500 那么我们可以把获得的json数据,进行一个转换,如下: 500 转换后 500 这里转换成post的参数,一来直接加在url后面,如xxxx/api?a=1&b=2&c=3

二来也可以进行参数替换 500

然后根据参数对应关系,编写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配置如下: 500

实际效果: 开启之前:

开启之后:

实际请求:

当然,也可以配合xray,这样测得更全面,而且更细致了