Python全棧(五)Web安全攻防之1.信息收集

一、Kali虛擬機安裝

主要分爲兩個步驟:
(1)安裝虛擬機,如VMware:
具體安裝過程可參考https://blog.csdn.net/qq_40950957/article/details/80467513
(2)在VMware上安裝Kali:
具體安裝過程可參考https://blog.csdn.net/qq_40950957/article/details/80468030
或者直接參考https://blog.csdn.net/chaootis1/article/details/84137460完成(1)、(2)步的操作。

二、域名介紹及查詢

1.域名介紹

域名(Domain Name),是由一串用點分隔的名字組成的Internet上某一臺計算機或計算機組的名稱,用於在數據傳輸時標識計算機的電子方位。
瀏覽器訪問網頁的流程
(1)客戶端上傳域名到DNS服務器;
(2)DNS服務器返回指定域名對應的IP地址到客戶端;
(3)客戶端根據IP訪問目標服務器;
(4)目標服務器返回訪問內容給客戶端。
如下:
DNS
由於IP地址具有不方便記憶並且不能顯示地址組織的名稱和性質等缺點,人們設計出了域名。
並通過網域名稱系統(DNS,Domain Name System)來將域名和IP地址相互映射,使人更方便地訪問互聯網,而不用去記住能夠被機器直接讀取的IP地址數串。

2.域名查詢方法whois

whois是一個用來查詢域名是否已經被註冊,以及註冊域名的詳細信息的數據庫(如域名所有人、域名註冊商等)。
不同域名後綴的whois信息需要到不同的whois數據庫查詢,如.com的whois數據庫和.edu的就不同。目前國內提供WHOIS查詢服務的網站有萬網、站長之家等。每個域名或IP的WHOIS信息由對應的管理機構保存,例如以.com結尾的域名的WHOIS信息由.com域名運營商VeriSign管理,中國國家頂級域名.cn域名由CNNIC管理。
whois查詢方式如下:

web接口查詢

通過whois命令行查詢

whois baidu.com

顯示:
在這裏插入圖片描述

3.ICP備案

英文全稱:Internet Content Provider,中文全稱:網絡內容提供商。
ICP可以理解爲向廣大用戶提供互聯網信息業務和增值業務的電信運營商,是經國家主管部門批准的正式運營企業或部門。
《互聯網信息服務管理辦法》指出互聯網信息服務分爲經營性和非經營性兩類。國家對經營性互聯網信息服務實行許可制度;對非經營性互聯網信息服務實行備案制度。未取得許可或者未履行備案手續的,不得從事互聯網信息服務。
可以通過http://www.beianbeian.com查看網站備案信息,示例如下
http://www.beianbeian.com

三、收集子域名信息

1.域名和子域名

頂級域名包括.com.net.org.cn等。
子域名:
凡頂級域名前加前綴的都是該頂級域名的子域名,而子域名根據技術的多少分爲二級子域名、三級子域名以及多級子域名。
收集子域名是因爲某個主域名做了大量防護,手機難度較大,從二級域名入手難度相對較低,從子域名靠近主域名及相關信息。

2.子域名挖掘工具

git clone https://github.com/ring04h/wydomain
cd wydomain/
cat requirements.txt
pip3 install -r requirements.txt

查看參數:

python dnsburte.py -h

顯示:

usage: dnsburte.py [-h] [-t] [-time] [-d] [-f] [-o]

wydomian v 2.0 to bruteforce subdomains of your target domain.

optional arguments:
  -h, --help          show this help message and exit
  -t , --thread       thread count
  -time , --timeout   query timeout
  -d , --domain       domain name
  -f , --file         subdomains dict file name
  -o , --out          result out file

使用:

python dnsburte.py -d baidu.com

顯示:

2020-02-10 10:15:41,739 [INFO] starting bruteforce threading(16) : baidu.com
2020-02-10 10:15:48,653 [INFO] dns bruteforce subdomains(100) successfully...
2020-02-10 10:15:48,653 [INFO] result save in : /root/wydomain/bruteforce.log

查看結果:

cat /root/wydomain/bruteforce.log

顯示:

[
    "m.baidu.com", 
    "www.baidu.com", 
    "wap.baidu.com", 
    "pop.baidu.com", 
    "bbs.baidu.com", 
	...
    "u.baidu.com", 
    "sp.baidu.com", 
    "svn.baidu.com", 
    "hb.baidu.com", 
    "vc.baidu.com"
]
  • 搜索引擎挖掘
    例如:
    在Google中輸入
site:sina.com

結果示例:
Google
如無法訪問谷歌,也可以在百度中輸入

site:sina.com

結果示例:
Baidu

四、端口信息收集

1.端口介紹

如果把IP地址比作一間房子,端口就是出入這間房子的門。真正的房子只有幾個門,但是一個IP地址的端口可以有65536個。
端口是通過端口號來標記的,端口號只有整數,範圍是從0到65535
在計算機中每一個端口代表一個服務。
在Windows種查看端口-管理員身份打開命令行執行:

netstat -anbo

打印

活動連接                                                                                     
                                                                                         
  協議  本地地址          外部地址        狀態           PID                                         
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       1032              
  RpcSs                                                                                  
 [svchost.exe]                                                                           
  TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       26800             
 [vmware-hostd.exe]                                                                      
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4                 
 無法獲取所有權信息                                                                               
  TCP    0.0.0.0:902            0.0.0.0:0              LISTENING       19200             
 [vmware-authd.exe]                                                                      
  TCP    0.0.0.0:912            0.0.0.0:0              LISTENING       19200             
 [vmware-authd.exe]                                                                      
 ...                                                                         
  UDP    [fe80::e908:14c9:dc52:d1d5%5]:2177  *:*                                    4836 
  QWAVE                                                                                  
 [svchost.exe]                                                                           
  UDP    [fe80::e908:14c9:dc52:d1d5%5]:52240  *:*                                    7608
  SSDPSRV                                                                                
 [svchost.exe]                                                                           
  UDP    [fe80::f55a:3b0f:f090:458%14]:1900  *:*                                    7608 
  SSDPSRV                                                                                
 [svchost.exe]                                                                           
  UDP    [fe80::f55a:3b0f:f090:458%14]:2177  *:*                                    4836 
  QWAVE                                                                                  
 [svchost.exe]                                                                           
  UDP    [fe80::f55a:3b0f:f090:458%14]:52242  *:*                                    7608
  SSDPSRV                                                                                
 [svchost.exe]                                                                           

2.端口信息收集

對於收集目標機器端口狀態可以使用工具來進行測試。
工具原理:
使用TCP或者UDP等協議向目標端口發送指定標誌位等的數據包,等待目標返回數據包,以此來判斷端口狀態。

使用nmap探測

nmap標誌像一隻眼睛,稱其爲“上帝之眼”。
命令:

nmap -A -v -T4 baidu.com

打印:

Starting Nmap 7.80 ( https://nmap.org ) at 2020-02-10 10:26 CST
NSE: Loaded 151 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 10:26
Completed NSE at 10:26, 0.00s elapsed
Initiating NSE at 10:26
Completed NSE at 10:26, 0.00s elapsed
Initiating NSE at 10:26
Completed NSE at 10:26, 0.00s elapsed
Initiating Ping Scan at 10:26
Scanning baidu.com (220.181.38.148) [4 ports]
Completed Ping Scan at 10:26, 0.04s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:26
Completed Parallel DNS resolution of 1 host. at 10:26, 0.01s elapsed
Initiating SYN Stealth Scan at 10:26
Scanning baidu.com (220.181.38.148) [1000 ports]
Discovered open port 443/tcp on 220.181.38.148
Discovered open port 80/tcp on 220.181.38.148
Completed SYN Stealth Scan at 10:26, 5.00s elapsed (1000 total ports)

TRACEROUTE (using port 80/tcp)
HOP RTT    ADDRESS
1   ... 30

NSE: Script Post-scanning.
Initiating NSE at 10:27
Completed NSE at 10:27, 0.00s elapsed
Initiating NSE at 10:27
Completed NSE at 10:27, 0.00s elapsed
Initiating NSE at 10:27
Completed NSE at 10:27, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 44.19 seconds
           Raw packets sent: 2168 (98.008KB) | Rcvd: 5 (208B)

說明:
443和80端口是開放的,分別對應https和http。

使用在線網站探測

地址:
http://tool.chinaz.com/port/
測試示例:
http://tool.chinaz.com/port
這種方式不能探測本地。

3.端口攻擊

針對不同的端口具有不同的攻擊方法。

攻擊方法

攻擊方法

防禦措施

  • 關閉不必要的端口
  • 對重要業務的服務端口設置防火牆
  • 經常更換用戶密碼
  • 經常更新軟件,打補丁

五、收集敏感信息

1.敏感信息收集重要性

針對某些安全做的很好的目標,直接通過技術層面是無法完成滲透測試。
在這種情況下,可以利用搜索引擎搜索目標暴露在互聯網上的關聯信息,例如數據庫文件、SQL注入、服務器配置信息、甚至是通過Git找到站點泄露源代碼、以及Redis等未授權訪問,從而達到滲透測試的目的。

2.Google hacking語法

Google hacking是指使用Google等搜索引擎對某些特定的網絡主機漏洞進行搜索,以達到快速找到漏洞主機或特定主機的漏洞的目的。

intext:——搜索正文內容 例如intext 網站管理
intitle:——搜索標題內容 例如intitle 後臺管理
filetype:——搜索指定文件格式 例如filetype:txt
inurl:——搜索特定URL 例如.php?id
site:——搜索特定的站點 例如:site:baidu.com
info:——搜索網頁信息 例如:info:baidu.com

示例:
在Google中輸入

intext 後臺管理

如圖:
後臺管理
顯然,有很多後臺管理系統暴露出來,隨便點進去一個,可以看到
後臺登錄頁
顯然,這是極其危險的。
再如,在百度中輸入

intitle 後臺管理

如圖
intitle 後臺管理
同樣,有很多後臺管理系統暴露,隨便嘗試一個,顯示
後臺管理平臺
顯然,網絡安全存在着很大威脅。
更多關於Google hacking的語法、使用和最新消息可查看
https://www.exploit-db.com/google-hacking-database

3.HTTP響應收集server信息

通過HTTP或HTTPS與目標站點進行通信中目標響應的報文中serve頭和X-Powered-By頭會暴露目標服務器和使用的編程語言信息,通過這些信息可以有針對的利用漏洞嘗試。
獲取HTTP響應的方法:

利用瀏覽器審計工具

點擊F12,再選擇Network,點擊F5刷新,如下
Network
顯然,Server中間件爲nginxX-Powered-ByThinkPHP,即編寫語言爲PHP語言的一個框架ThinkPHP。

編寫Python腳本(使用requests庫)

簡單測試:

import requests

r = requests.get('http://www.beianbeian.com')
print(r.headers)

打印:

{'Server': 'nginx', 
'Date': 'Mon, 10 Feb 2020 03:08:34 GMT', 
'Content-Type': 'text/html; charset=utf-8', 
'Transfer-Encoding': 'chunked', 
'Connection': 'keep-alive', 
'Vary': 'Accept-Encoding', 
'Expires': 'Thu, 19 Nov 1981 08:52:00 GMT', 
'Pragma': 'no-cache', 
'Cache-control': 'private', 
'X-Powered-By': 'ThinkPHP', 
'Set-Cookie': 'PHPSESSID=v0ee5tiumr3pat5kpnltdvnbh4; path=/, sc__jsluid_h=43c68abd9efb5d2ebed43d88a1ab550c; expires=Mon, 10-Feb-2020 03:18:34 GMT; Max-Age=600, scJSESSIONID=04D2B6C6538CDD8A48003405C29F52B0; expires=Mon, 10-Feb-2020 03:18:34 GMT; Max-Age=600', 
'Content-Encoding': 'gzip'}

和第一種方法結果是一樣的,Server中間件爲nginxX-Powered-ByThinkPHP

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章