python寫一個信息收集四大件的腳本

0x0前言:python

帶來一首小歌:數據庫

以前看了小迪老師講的課,仔細作了些筆記windows

而後打算將其寫成一個腳本。api

0x01準備:服務器

requests模塊架構

socket模塊oracle

optparser模塊app

time模塊socket

0x02筆記和思路:網站

筆記:
信息收集四大件
6.快速判斷網站系統類型:  
  改一個網站後綴名文件,看它對大小寫是否敏感
  windows:不區分大小寫
   Linux:區分大小寫
7.判斷網站語言格式
  看後綴
  動態語言
  疑問:僞靜態該怎麼判斷
8.判斷網站的數據庫類型
  端口掃描、
  SQL報錯注入
   搭建分析
  如下3種方法會致使探測數據庫失敗:
   知識點:
   ACCESS:無故口
   MYSQL:3306
   MSSQL:1433
   ORACLE:1521
   1.內網服務器   (經過內網穿透將本機的東西眏射出來,就是轉發某個端口(相似於ngrok))
   2.將數據庫默認端口修改了
   3.站庫分離(網站源碼和數據庫不在一臺服務器上)
9.判斷網站架構
  審查元素(F12)

 判斷系統的思路:

隨便找一個網站的目錄而後將其後綴其中一個改成大寫

若是頁面返回和原來同樣的頁面就是windows系統

若是頁面返回和原來的頁面不同就是Linux系統

那咱們也就能夠知道了,返回也面的字節是不同的

咱們就能夠寫一個判斷了

 

證明:

原來的頁面

更改後綴最後一個字符

結果:返回的頁面不同,是Linux或者Unix

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

判斷數據庫類型思路:這裏我採用端口判斷,若是目標網站改了默認端口或站庫分離是識別不出來的,到時候寫個SQL注入的判斷的腳本。

端口掃描用socket就能實現。

  ACCESS:無故口
   MYSQL:3306
   MSSQL:1433
   ORACLE:1521

--------------------------------------------------------------------------------------------------------------------------

判斷服務架構思路:看http響應頭就行

0x03代碼:
import requests
import os
import socket
import time
import optparse
from bs4 import BeautifulSoup
def main():
    usage='-x 判斷系統類型' \
          '-t 判斷數據庫類型' \
          '-g 判斷服務架構' \
          '-j 判斷網站語言'
    parser=optparse.OptionParser(usage)
    parser.add_option('-x',dest='system',help='判斷系統,判斷原理經過目錄來判斷例:https://www.btime.com/finance')
    parser.add_option('-t',dest='database',help='判斷數據庫,經過端口來判斷數據庫類型')
    parser.add_option('-g',dest='headerss',help='判斷架構')
    parser.add_option('-j',dest='language',help='判斷語言')
    (options,args)=parser.parse_args()
    if options.system:
        system=options.system
        SYSTEM(system)
    elif options.database:
        database=options.database
        DATABASE(database)
    elif options.language:
        language=options.language
        LANGUAGE(language)
    elif options.headerss:
        headerss=options.headerss
        HEADERSS(headerss)
    else:
        parser.print_help()
        exit()
def SYSTEM(system):
    sc = "{}".format(system)
    gs = sc[-1].capitalize()
    sw = sc.strip(sc[-1])
    url = sw + gs
    sg = requests.get(url)
    print(sg.url)
    a = requests.get(sc).content
    b = requests.get(url).content
    if a != b:
        print('系統是:Linux')
    else:
        print('系統是:windows')
def DATABASE(database):
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    try:
      s.settimeout(3)
      s.connect((database,1433))
      print('[+]MSSQL數據庫開放')
    except:
        print('[-]1433關閉')

    time.sleep(0.1)

    try:
        s.settimeout(3)
        s.connect((database,1521))
        print('[+]oracle數據庫開放')
    except:
        print('[-]1521端口關閉')

    time.sleep(0.1)

    try:
        s.settimeout(3)
        s.connect((database,3306))
        print('[+]MYSQL數據庫開放')
    except:
        print('[-]3306關閉')
def HEADERSS(headerss):
    url="{}".format(headerss)
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'}
    r=requests.get(url,headers=headers)
    print('[+]協議類型:',url[0],url[1],url[2],url[3],'/',r.status_code)
    print('[+]服務架構:',r.headers['Server'])
    print('[+]頁面類型',r.headers['Content-Type'])
def LANGUAGE(language):
    url="{}".format(language)
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'}
    g=requests.get(url,headers=headers)
    try:
      print('[+]程序支持',g.headers['X-Powered-By'])
    except:
        print('[-]沒有找出該網站的程序支持')
if __name__ == '__main__':
    main()

  腳本運行:

 

 

 

 

相關文章
相關標籤/搜索