並列処理でクソ早い(らしい)SQL Injection脆弱性スキャナー (KitPloit)

 

元URL: http://www.kitploit.com/2017/10/sqliv-massive-sql-injection.html

 

Bing、Google、Yahooでドメインサーチしてスキャンしたり、特定ドメインwクロールしてスキャンしたり、リバースドメインスキャンしたりできる。リバースドメインスキャン?逆引きした結果のドメインに対してスキャンするみたい。

まあコアバリューはSQL Injectionスキャン部分ということで。scanner.pyのこの部分を見ると。

    website = domain + "?" + ("&".join([param + "'" for param in queries]))
    result = html.getHTML(website)
    if result and sqlerrors.check(result):

シングルクオートをパラメータ全てに入れて、レスポンスデータに含まれるエラーメッセージが(あれば)どんなメッセージが入っているか、それによってDBの種類を識別しているだけですね。エラー誘発だけなので非破壊的だけどこれじゃちょっと網羅的なチェックは難しいし雑すぎるよねということで。このエントリー公開するほどでもないけどどうもこれは使えないツールっぽいですっていう情報のみってことで。

 

ちなみにUser-Agentだけは正規のUser-Agent文字列がランダムに使われるという仕様なので検知だけはし難いかもしれない面倒なやつ。 useragents.py)

def get():
    """return ramdomly chosen useragent"""

    return random.choice(useragents)


useragents = [
    {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'
    },
    {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36'
    },
    {
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36'
    },
    {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.4; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2225.0 Safari/537.36'
    },
    {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246'
    },
    {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'
    },
    {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0'
    },
    {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10; rv:33.0) Gecko/20100101 Firefox/33.0'
    },
    {
        'User-Agent': 'Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/31.0'
    },
    {
        'User-Agent': 'Mozilla/5.0 (X11; OpenBSD amd64; rv:28.0) Gecko/20100101 Firefox/28.0'
    },
    {
        'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.1 (KHTML, like Gecko) Maxthon/3.0.8.2 Safari/533.1'
    },
    {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A'
    },
    {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2'
    }
]

それにしても書き方が古いし汚い。

 

結論:いいか、これは悪い例だ。