PunkSPIDER API Documentation

Information is split up into summary and search information, which represents a basic search in the PunkSPIDER system. Information returned includes the exploitability level of a site as well as the number of each type of vulnerability that your search results have. Specific details of vulnerabilities are requests from our details API. Below is a breakdown of how to get the information you need from both of them.

Summary and Search Information

Basic PunkSPIDER searches can be performed with the API by POSTing to http://www.punkspider.org/service/search/domain/. An example request is below.

POST data to http://www.punkspider.org/service/search/domain/

{
    "searchKey": "url",
    "searchValue": "some search value",
    "pageNumber": 1,
    "filterType": "or",
    "filters": [
        "bsqli",
        "mxi",
        "osci",
        "sqli",
        "trav",
        "xpathi",
        "xss"
    ]
}

 

***Important Note*** when you send this data, it should be sent as JSON , in other words make sure you're actually sending the data as JSON and not defining a dictionary that is then processed into POST-style parameters. Our API is expecting a JSON string as the payload. ALSO, just as important, make sure to send the content-type header with the type of application/json or it will fail with a 500 error. This applies to both search summary and details endpoints.***

API Request Info:

searchKey -  allowed values are "url" and "title". This specifies whether you wish to search for sites by their URL or Title.

searchValue - allowed value is any string. This specifies the search term to use. * is a special wildcard character meaning that in the example above, we are searching for ALL urls in the system with the specified filters.

pageNumber - allowed value is an integer. This allows you to paginate the results.

filterType - allowed value is "or" or "and". This allows you to specify whether your filters are additive or not. For example, in the example above, the "or" value specifies that a page with bsqli or mxi or osci or xss etc. should be returned in the search

filters - allowed values are a list of strings, the allowed strings are "bsqli", "mxi", "osci", "sqli", "trav", "xpathi", and "xss". These correspond to blind SQL injection, mail header injection, operating system command injection, SQL injection, path traversal, xpath injection and cross site scripting respectively.

A response looks like the following:

{
    "output": {
        "rowsFound": 106844,
        "qTime": 0,
        "domainSummaryDTOs": [
            {
                "id": "http://www.sj3888.com/",
                "timestamp": "Wed May 01 17:00:03 GMT 2013",
                "title": "娱乐用品,棋牌用品,变牌器,单人操作扑克分析仪,扑克隐形眼镜,麻将隐形眼镜,程序麻将机,扑克千术,麻将千术,牌九筒子千术",
                "xss": 0,
                "trav": 0,
                "mxi": 0,
                "osci": 0,
                "xpathi": 0,
                "exploitabilityLevel": 2,
                "bsqli": 1,
                "sqli": 0,
                "url": "http://www.sj3888.com/"
            },
            {
                "id": "http://www.sfgcd.com/",
                "timestamp": "Wed May 01 17:00:03 GMT 2013",
                "title": "³É¶¼ÉÏÓ°¹ú¼ÊÓ°³Ç",
                "xss": 3,
                "trav": 0,
                "mxi": 0,
                "osci": 0,
                "xpathi": 0,
                "exploitabilityLevel": 1,
                "bsqli": 0,
                "sqli": 0,
                "url": "http://www.sfgcd.com/"
            },
            {
                "id": "http://www.pastease.com.au/",
                "timestamp": "Wed May 01 17:00:03 GMT 2013",
                "title": "Pastease Waterproof Nipple Pasties And Self-Adhesive Nipple Covers",
                "xss": 2,
                "trav": 0,
                "mxi": 0,
                "osci": 0,
                "xpathi": 0,
                "exploitabilityLevel": 1,
                "bsqli": 0,
                "sqli": 0,
                "url": "http://www.pastease.com.au/"
            },
            {
                "id": "http://www.sierrasystems.com/",
                "timestamp": "Wed May 01 17:00:03 GMT 2013",
                "title": "Sierra Systems",
                "xss": 0,
                "trav": 0,
                "mxi": 0,
                "osci": 0,
                "xpathi": 0,
                "exploitabilityLevel": 2,
                "bsqli": 1,
                "sqli": 0,
                "url": "http://www.sierrasystems.com/"
            },
            {
                "id": "http://www.sigg3.net/",
                "timestamp": "Wed May 01 17:00:03 GMT 2013",
                "title": "Sigg3.net - just another weblog",
                "xss": 1,
                "trav": 0,
                "mxi": 0,
                "osci": 0,
                "xpathi": 0,
                "exploitabilityLevel": 3,
                "bsqli": 0,
                "sqli": 3,
                "url": "http://www.sigg3.net/"
            },
            {
                "id": "http://www.sexfilmstars.com/",
                "timestamp": "Wed May 01 17:00:03 GMT 2013",
                "title": "Sexfilm Stars gratis Pornostars Tube",
                "xss": 1,
                "trav": 0,
                "mxi": 0,
                "osci": 0,
                "xpathi": 0,
                "exploitabilityLevel": 1,
                "bsqli": 0,
                "sqli": 0,
                "url": "http://www.sexfilmstars.com/"
            },
            {
                "id": "http://www.xing-yu.net/",
                "timestamp": "Wed May 01 17:00:03 GMT 2013",
                "title": "美容院装修|SPA会所装修|美发店装修|美容美发装修|足疗店装修",
                "xss": 1,
                "trav": 0,
                "mxi": 0,
                "osci": 0,
                "xpathi": 0,
                "exploitabilityLevel": 1,
                "bsqli": 0,
                "sqli": 0,
                "url": "http://www.xing-yu.net/"
            },
            {
                "id": "http://www.roomaccess.jp/",
                "timestamp": "Wed May 01 17:00:03 GMT 2013",
                "title": "京都 賃貸の京都賃貸情報ショップルームアクセス",
                "xss": 2,
                "trav": 0,
                "mxi": 0,
                "osci": 0,
                "xpathi": 0,
                "exploitabilityLevel": 1,
                "bsqli": 0,
                "sqli": 0,
                "url": "http://www.roomaccess.jp/"
            },
            {
                "id": "http://www.sdjssc.com/",
                "timestamp": "Wed May 01 17:00:03 GMT 2013",
                "title": "欢迎进入山东技术市场网!|山东省技术合同认定|山东省技术市场管理办公室|山东省技术市场协会",
                "xss": 1,
                "trav": 0,
                "mxi": 0,
                "osci": 0,
                "xpathi": 0,
                "exploitabilityLevel": 1,
                "bsqli": 0,
                "sqli": 0,
                "url": "http://www.sdjssc.com/"
            },
            {
                "id": "http://www.tcgjj.com/",
                "timestamp": "Wed May 01 17:00:03 GMT 2013",
                "title": "桐城住房公积金网",
                "xss": 3,
                "trav": 0,
                "mxi": 0,
                "osci": 0,
                "xpathi": 0,
                "exploitabilityLevel": 1,
                "bsqli": 0,
                "sqli": 0,
                "url": "http://www.tcgjj.com/"
            }
        ],
        "numberOfPages": 10685
    },
    "input": {
        "pageNumber": "1",
        "filters": [
            "bsqli",
            "mxi",
            "osci",
            "sqli",
            "trav",
            "xpathi",
            "xss"
        ],
        "filterType": "or",
        "searchKey": "url",
        "searchValue": "*"
    }
}

The results are fairly self explanatory, and return a list of sites and their "summary" information, including the site's exploitability level (we tell folks that anything over 0 is not great and anything over 1 should be avoided at all costs) and number of each type of vulnerability.

Details Information

Details information lets you retrieve detailed information on the vulnerabilities of a website.

Details can be retrieved by posting data to http://www.punkspider.org/service/search/detail/<reversed_domain> where <reversed_domain> is the requested URLs domain reversed. For example:

POST to http://www.punkspider.org/service/search/detail/com.sfgcd.www search for vulnerability details on the site http://www.sfgcd.com. The response will look something like the following:

{
    "data": [
        {
            "id": "com.sfgcd.www.1",
            "protocol": "http",
            "level": null,
            "info": "",
            "bugType": "xss",
            "mainUrl": "com.sfgcd.www",
            "vulnerabilityUrl": "http://www.sfgcd.com/ProductsBuy.asp?ProNo=%22%3E%3CSCrIpT%3Ealert%2826702%29%3C%2FScRiPt%3E&ProName=%C2%A2%C3%81%C2%A03%083D%09",
            "parameter": "ProNo"
        },
        {
            "id": "com.sfgcd.www.2",
            "protocol": "http",
            "level": null,
            "info": "",
            "bugType": "xss",
            "mainUrl": "com.sfgcd.www",
            "vulnerabilityUrl": "http://www.sfgcd.com/ProductsBuy.asp?ProNo=2013-5-3&ProName=%22%3E%3CSCrIpT%3Ealert%287106%29%3C%2FScRiPt%3E",
            "parameter": "ProName"
        },
        {
            "id": "com.sfgcd.www.3",
            "protocol": "http",
            "level": null,
            "info": "",
            "bugType": "xss",
            "mainUrl": "com.sfgcd.www",
            "vulnerabilityUrl": "http://www.sfgcd.com/ResourceJob.asp?JobName=%22%3E%3CSCrIpT%3Ealert%281310%29%3C%2FScRiPt%3E",
            "parameter": "JobName"
        }
    ]
}