dorking

Google Dorking 자동화

2013. 5. 19. 11:41


이미 많이 알려진 google dorking.. 업무상으로나 호기심으로 가끔 특정사이트에 대한 dorking 을 시도해 보게 되는데


그리 잦은 일이 아니라 그동안은 수작업으로 해왔었다. 개인적인 이유+필요에 의해서 이번에 파이썬을 이용해서


간단하게 자동화를 해 보았다. 단점은 몇번 이상 쿼리를 날리면 제한되는 듯 하다. 아마도 구글 정책인 것 같다 :)


쿼리 간격을 랜덤하게 조절하고 에이전트를 바꿔주면 상관없이 될 것 같긴 하지만, 그렇게 쿼리를 많이 날릴 필요가


아직은 없기에 나중에 추가할 예정 :)



# googledorking.py

#-*- encoding:utf8 -*-

import json

import urllib

import sys

 

class googledock:

 

    def __init__(self,site,query,queryfilename="query.lst"):

        self.pages = 10

        self.query = query

        self.qfile = queryfilename

        self.site = site

 

    def search(self):

        results = []

        for page in range(0,self.pages):

            rsz = 8

            args = {'q' : "site:" + self.site + " " + self.query,'v' : '1.0','start' : page*rsz, 'rsz': "large",'safe' : "off", 'filter' : 1 }

            q = urllib.urlencode(args)

            search_results = urllib.urlopen('http://ajax.googleapis.com/ajax/services/search/web?' + q)

            data = json.loads(search_results.read())

            results.append(data)

        return results

   

    def get_urls(self):

        """Returns list of result URLs"""

        results = []

        searchresult = self.search()

        for data in searchresult:

            for result in data['responseData']['results']:

                if result:

                    results.append(urllib.unquote(result['unescapedUrl']))

        return results

 

if __name__ == "__main__":

    if len(sys.argv) != 2:

        print "Usage : %s [URL]\n [ex] %s www.target12345.com" % (sys.argv[0],sys.argv[0])

        sys.exit()

    site = sys.argv[1]

    f = open("query.lst")

    print "Starting GoogleDorks..."

    for querystr in f.readlines():

        print "[query : %s ]" % querystr.strip()

        g = googledock(site,querystr.strip())

        g.pages = 1

        resultset = g.get_urls()

        for url in resultset:

               print "\t- ", url 


내용이랄 것도 없고...그저 파일에 담긴 쿼리 리스트를 읽어와서 패킷을 전송하고 응답문을 보여준다.


아래는 실행 결과이다. 도메인은 *로 가렸다.

 C:\Users\hyunmini\Desktop\book\code\1.googledock>python googledork.py .org


Starting GoogleDorks...

[query : inurl:admin ]

        -  http://*.org/project/admin

        -  http://en.*.org/wiki/admin

        -  http://firstsearch.*.org/admin/

                       ...

[query : filetype:sql  intext:user ]

        -  https://www.*.org/trac/browser/branches/rewrite-user-management/docs/powerad

        -  http://www.*.org/trac/browser/contributed_modules/modules/a2billing/a2b/DataBas

        -  http://*.org/trac/browser/guacamole-auth-mysql/schema/002-create-admin-user.sq

                    ...

[query : filetype:bak inurl:"asp|jsp|php" ]

        -  http://www.*.org/home/_baks/home.php.0055.38ec.bak

        -  https://*.org/City Manager Message/_baks/CityManagerMessage.php.0030.da7

        -  http://www.*.org/government/generalinfo/_baks/hours.php.0012.907c.bak

                      ...

[query : intext:"Microsoft OLE DB" +intext:"오류" filetype:asp ]

        -  http://www.*.org/network_information/network_directory/directory_details2.asp

        -  http://www.*.org/help/FAQdetail.asp?FAQid=18

        -  http://www.*.org/gen3/data/clubs/ship_conf.asp

                      ...


어디선가 하루 100번 쿼리 제한이라고 들었던것 같긴 한데 확실친 않다. 나중에 확인해 봐야지...ㅎ


그럼 이만!


+ Recent posts