備份文件、git、svn等漏洞批量掃描腳本


題記

    因為前些日子我一直看到文件泄露的漏洞,什么.git什么的,於是一直想自己整一個檢測的批量腳本,嘗試自己寫了一個,效果卻不太符合心意。今天偶然看到一個推薦git等漏洞利用的工具,我以為是批量掃的工具,后來發現是掃到漏洞后利用漏洞下載源碼的工具。工具地址:https://github.com/0xHJK/dumpall。於是我覺得還是一勞永逸吧,終於百度大法看到一個大哥的腳本。

批量掃描網站備份文件的腳本

    此腳本思路:把要檢測的網站放到tar.txt里面,通過在url后拼接敏感文件名字進行訪問,通過響應包判斷漏洞是否存在,存在的話把漏洞路徑保存在bfvul.txt中。

import requests

import re

import multiprocessing

 

list = ['wwwroot.rar','wwwroot.zip','新建文件夾.rar','新建文件夾.zip','www.rar','www.zip','web.rar','web.zip']

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0'}

 

content_type = ['application/x-rar','application/x-gzip','application/zip','application/octet-stream','application/x-7z-compressed']

 

def main(i):

    url1 = i.strip('\n')

    c = re.findall(r'https?://(?:[-\w.]|(?:%[\da-fA-F]{6}))+',url1)

    url2 = (',').join(str(x) for x in c)

    for i in list:

        try:

            b = url2 +'/'+ i

            r = requests.head(url = b ,headers = headers)

            if r.headers['Content-Type'] in content_type:

                with open (r'bfvul.txt','a', encoding ='utf-8' ) as f:

                    a = f.write('存在備份文件'+ '' + b + '\n')

            else:

                print('不存在'+b)

        except:

            print('無法連接')

 

if __name__ == '__main__':

    p = multiprocessing.Pool(50)#線程數

    with open(r'tar.txt','r',encoding = 'utf-8') as f:

        a = f.readlines()

        for i in a:

            p.apply_async(main,(i,))

    p.close()

    p.join()

    經過測試成功跑出來一些網站的備份文件,此腳本還是很好用的,如果想添加路徑可在數組內添加。

批量掃描git、svn等腳本

    經過思考,我嘗試改造一下嘗試跑git、svn這種漏洞,但是我並沒有遇到過svn泄露不太清楚返回包的內容,因此這里的判斷行為是,響應200后進行下一輪判斷,如果包含git響應內容存到git.txt中,不存在就放到qita.txt中,以后遇到在優化吧,還是挺好用的。

import requests

import re

import multiprocessing

 

list = ['.git','.svn','.DS_Store','robots.txt']

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0'}

 

 

def main(i):

    url1 = i.strip('\n')

    c = re.findall(r'https?://(?:[-\w.]|(?:%[\da-fA-F]{6}))+',url1)

    url2 = (',').join(str(x) for x in c)

    for i in list:

        try:

            b = url2 +'/'+ i

            r = requests.get(url = b ,headers = headers)

            m = r.status_code

            if m==200:

                r.encoding = r.apparent_encoding

                HtmlText = r.text

                if 'logs' in HtmlText:

                    with open (r'git.txt','a', encoding ='utf-8' ) as f:

                        a = f.write('存在泄露情況'+ '' + b + '\n')

                else:

                    with open (r'qita.txt','a', encoding ='utf-8' ) as w:

                        c = w.write('可能存在泄露情況'+ '' + b + '\n')

            else:

                print('不存在'+b)

        except:

            print('無法連接')

 

if __name__ == '__main__':

    p = multiprocessing.Pool(50)#線程數

    with open(r'tar.txt','r',encoding = 'utf-8') as f:

        a = f.readlines()

        for i in a:

            p.apply_async(main,(i,))

    p.close()

    p.join()

    腳本運行:

    運行結果:

Python腳本踩坑記錄

    第一種報錯:IndentationError: expected an indented block

    這個錯誤因為if語句后我沒在下一行多搞個tab鍵位,導致上下級關系不明確。

    第二種報錯:IndentationError: unindent does not match any outer indentation level

    這個錯誤是因為python腳本對空格和tab鍵不能共存。需要統一。Notepad++顯示出來空格與制表符,改成一樣的。

參考文章

    python 多進程批量掃描網站備份文件:http://blog.csdn.net/qq_39650046/article/details/110429544

    IndentationError: unindent does not match any outer indentation level筆記:http://cnblogs.com/kerrycode/p/11183963.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM