记一次web api接口渗透测试

web api渗透测试,没有界面,其实和有界面都一样,只不过有界面更直观一些,没有界面就需要对比html页面了,这次接触的api,包括appid,token,certificate每次发请求可以通过burpsuite或w3af都可以构造请求,而且请求的参数又提供了一个接口,如果提供的接口数据是自动的,可以获取第一个接口的数据去提交到另一个接口,可是提供数据的接口不是自动化的,也是需要手工配合的,这样只能实现半自动化测试了。用python每次都去对比html的话,不太方便。于是就用django实现了下。因为这次测试环境pc不能访问,还需要伪造微信的User-Agent和Cookies。也便于以后写poc吧。代码如下:

def tests(request):
    headers={
    "Host":"0535code.com",
    "User-Agent":"Mozilla/5.0 (Linux; Android 6.0.1; MI 4LTE Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/46.0.2490.76 Mobile Safari/537.36 MicroMessenger/6.3.16.49_r03ae324.780 NetType/WIFI Language/zh_CN",
    "Accept":"application/json, text/javascript, */*; q=0.01",
    "Accept-Language":"en-us,en;q=0.8",
    "Accept-Encoding":"gzip, deflate",
    "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
    "X-Requested-With":"com.tencent.mm",
    "Origin": "http://0535code.com",
    "Connection":"keep-alive",
    "Referer":"http://0535code.com/",
    "Cookie":"JSESSIONID=ABF49C644F089D00FE6A303D05417AB3; iwowo_weixin_session=b5ab0561-7d6e-47c2-b702-c38a16c51f82",
    }
    sid = requests.session()
    api = "http://0535code.com/poc/"
    api_1 = api + "coder.html"
    params_1 = { 'point':'99',
    'tradeNo':'88888888', #tradeNo,
    'version':'1.0',
    'appId':'90c3d705e46049ea7cb9a56be69f4cf1',
    'sign':'976fb26afe8aa3bbdf26b600611ebc53',
    'QRCodeExpireDate':'2016-05-01 00:00:00',
    #appId,key
    }
    test = requests.get(api_1,params = params_1,headers = headers,verify = False)
    html =  test.content
    echo_html = html.replace(""/", ""http://0535code.com/")
    return HttpResponse(echo_html)

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.