Hinweise zum Schnittstellentest

Weitergeleitet von: https://mp.weixin.qq.com/s/BHUhqveRjHIThGvcL7_MDw

0x01 Hintergrund

Ich bin auf einen Swagger gestoßen, der stapelweise getestet werden kann, aber wenn ich tiefer gehen möchte, muss ich die Parameter stapelweise ersetzen. Es stellt sich heraus, dass das Ersetzen der Parameter sehr mühsam ist. Früher habe ich es direkt in Rülpsen ersetzt. Später stellte ich jedoch fest, dass das Modul zum Ersetzen der Parameter von Burp zu mühsam und unpraktisch war. Ändern, also gibt es diesen Artikel

0x02 zwei Methoden

Für Schnittstellentests ist der Autor es gewohnt, Postman zu importieren oder Swagger-Exp von Master Lijiejie zu verwenden

0x001 Postbote

Import zum Postboten hier

Importieren Sie einfach einen Wert, der hier geändert werden muss, das Attribut von baseUrl

Geben Sie die Domänennamenadresse der API-Anfrage ein und speichern Sie sie

Der letzte Schritt besteht darin, den Header von Postman zu löschen und den Proxy von Burp aufzuhängen

Legen Sie den Burp-Proxy auf. Dieser Schritt dient der bequemen Anzeige der Anfrage und Antwort

Klicken Sie auf „Ausführen“ und dann auf „Ausführen“.

Sie können die Anfrage auf Rülpsen sehen

Bei Swagger-Anfragen ist es wahrscheinlich, dass viele Schnittstellen 401 sind oder nicht auf sie zugegriffen werden können. Der Sicherheitsschutz wird immer besser, das Sicherheitsbewusstsein der Entwickler wird stärker und die Schnittstellensicherheit wird immer beliebter. Bei einer von 100 Schnittstellen ist dies jedoch nicht der Fall Gut gemacht. Einschränkungen, im Grunde sind alle bisherigen Bemühungen umsonst, wie folgt:

Hier werden alle Informationen des Unternehmens zurückgegeben, z. B. Adresse, Name, Mobiltelefonnummer, Firmen-ID usw. Im Allgemeinen wird dies als unbefugter Informationsverlust angesehen, aber wie kann man tief in andere Schnittstellen eindringen, z. B. diese Schnittstellen, die darauf reagieren? bis 200 und verfügt über Parameter

Dann können wir die erhaltenen JSON-Daten wie folgt konvertieren:

nach der Konvertierung

Die hier in Post konvertierten Parameter werden direkt nach der URL hinzugefügt, z. B. http://xxxx/api?a=1&b=2&c=3

Zweitens kann auch eine Parameterersetzung durchgeführt werden

Schreiben Sie dann das AutoDecoder-Skript gemäß der Parameterkorrespondenz:

# -*- 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")

Wenn das Anforderungspaket JSON ist, kann es auch ersetzt werden

Die Konfiguration von autoDecoder ist wie folgt:

tatsächlicher Effekt:

  • Vor dem Öffnen:

    • Repeater-Anfrage

  • Nach dem Öffnen:

    • Repeater-Anfrage

    • Bei der eigentlichen Anforderungsanforderung wird der Parameter durch autoDecoder ersetzt

0x002 Swagger-Exp

Das Swaagger-Exp-Tool von Meister Lijiejie wurde wie folgt geändert: (Meister Lijiejie ist übrigens großartig!)

  1. Direkter Proxy hinzugefügt, der beim Senden einer Anfrage direkt an Burps Standard-Proxy gesendet wird (http://127.0.0.1:8080)

  2. { {baseUrl}}-Anpassung hinzugefügt . Manchmal tritt ein Fehler im { {BaseUrl}}-Wert der API auf, der dazu führt, dass Batch-Anfragen nicht normal initiiert und einige andere kleine Details nicht geändert werden können, aber das spielt keine Rolle. Direkt Geben Sie den Befehl ein:

python3 swagger.py http://vuln.com/swagger/v1/swagger.json vuln.com

Sie können die Anfrage und die Antwort in Rülpsen sehen

Ebenso können Parameter in autoDecoder geändert werden, hier keine weiteren Beispiele

0x03 Zusammenfassung

  1. Nachdem mehrere Anfragen mit korrekten Parametern initiiert wurden, kann Burp als Zwischenbrücke für die Zusammenarbeit mit Xray verwendet werden, sodass die Messung umfassender und detaillierter ist

  2. Erkai-Tools können besser in tatsächlichen Projekten und beim Lernen eingesetzt werden und können auch mehr über Code und Lernarchitektur erfahren

  3. Es kann eine Verknüpfung zwischen Tools bestehen

0x04 Zitat

https://github.com/lijiejie/swagger-exp Lijiejies Swagger-Exp-Tool

https://www.postman.com/ Postman-Tools

https://github.com/f0ng/autoDecoder Ersetzen Sie das Anforderungspaket und das Antwortpaket

Ich denke du magst

Origin blog.csdn.net/weixin_52501704/article/details/128824511
Empfohlen
Rangfolge