Web安全-信息收集


信息收集


前言:在滲透測試過程中,信息收集是非常重要的一個環節,此環節的信息將影響到后續成功幾率,掌握信息的多少將決定發現漏洞的機會的大小,換言之決定着是否能完成目標的測試任務。也就是說:滲透測試的思路就是從信息收集開始,你與大牛的差距也是這里開始的

image


Part1:whois信息收集

whois是網站管理者進行域名注冊時留下的信息,收集whois信息可以幫助我們找到更多的域名,我們還可以查到郵箱,進而找到更多的東西。

查詢網站:

 http://whois.chinaz.com/(站長之家)
 https://www.whois.com/(國外網站)

Part2:子域名查詢

安全的高度取決於最短的那塊板子,很多時候主站的防護比較強,所以我們可以搜集其子域名去進行安全測試。而且子域名可以擴大攻擊范圍,子域名一定是有關聯的,很多時候基本上都同屬一個公司

image

搜集方法:
① 谷歌語法

site: 指定域名

② 通過在線平台

• ip反查域名
  https://dns.aizhan.com/
  https://reverseip.domaintools.com/
  
• 站長工具
  http://tool.chinaz.com/subdomain/
  
• 潮汐指紋
  http://finger.tidesec.com/

③ 使用工具爆破DNS服務器

• subDomainsBrute
  https://github.com/lijiejie/subDomainsBrute
  
• Layer子域名挖掘機

• teemo
  https://github.com/bit4woo/teemo

Part3:端口探測

有些危險端口開放了我們就可以嘗試入侵,例如 445|3306|22|1433|6379 可以嘗試爆破或者是使用某些端口存在漏洞的服務。而且有可能一台服務器上面不同端口代表着不同的Web網站~

常見端口與服務對應關系

445-局域網文件共享服務【永恆之藍】
3389-遠程桌面
80-web搭建默認端口
3306-MySQL默認端口
21-Ftp
22-SSH服務
1433-SQL Server默認端口
6379-Redis數據庫默認端口
8888-寶塔默認端口

nmap的使用:

nmap+ip #最簡單的使用方法
nmap+ip/24 #C段探測
nmap -p [port1,port2,...] [ip] #探測指定端口
nmap -p 1-65535 [ip] #全端口掃描
nmap -v [ip] #執行命令的同時顯示每一步具體做了什么
nmap -Pn [ip] #目標禁ping時可以使用
nmap -h #查看所有命令
nmap -O [ip] #探測主機是什么操作系統
nmap -A [ip] #最強指令,把所有的掃描|探測方法都用上

端口掃描狀態

Opened 端口開放
Closed 端口關閉
Filtered 端口被過濾

Part4:目錄掃描

用途:

1.可以下載備份文件(數據庫、源碼、上傳的內容)
2.尋找到網站的后台

御劍目錄掃描工具

https://github.com/foryujian/yjdirscan
https://github.com/7kbstorm/7kbscan-WebPathBrute

網站狀態碼對應信息:

200-網站正常訪問
302-重定向
404-頁面不存在
403-權限不足,但是頁面存在
502-服務器內部錯誤

Part5:CMS指紋識別

查詢到網站是CMS之后,我們可以百度這個CMS爆出過哪些漏洞,快速的有針對性地進行測試。

https://s.threatbook.cn/
http://finger.tidesec.com/ 潮汐指紋【推薦】

Part6:旁站查詢

旁站指同IP站點,旁站與主站一定有關聯關系,它們要么位於同一台主機,要么處於同一內網

在線工具:

http://stool.chinaz.com/same
https://www.webscan.cc/

Part7:CDN相關

首先,我們需要確定目標用戶是否使用了CDN

可以通過如下方法:

方法1:多節點ping

http://ping.chinaz.com/
http://ping.aizhan.com/
https://www.17ce.com/
https://www.boce.com/ping/

方法2:通過nslookup檢測

使用 nslookup 進行檢測,原理同上,如果返回域名解析對應多個 IP 地址多半是使用了 CDN。

有 CDN 的示例,如下圖:

image

方法3:直接連接查詢

在線工具:

https://www.cdnplanet.com/tools/cdnfinder/
https://www.ipip.net/ip.html

CDN繞過
(1) 利用子域名請求

原理:由於經濟等其他原因,子域名往往與主站在同一個服務器或網段

工具:在線子域名挖掘&Layer子域名挖掘機
http://z.zcjun.com/
https://phpinfo.me/domain
https://dnsdb.io/zh-cn/
Google 搜索;例如:用語法"site:baidu.com -www"就能查看除www外的子域名。

(2) 利用第三方查詢

在線查詢:
https://get-site-ip.com/
https://x.threatbook.cn/
https://tools.ipip.net/cdn.php

本方法效果一般,但是無成本

image

(3) 手機站點查詢

原理:手機站點有的時候也可以繞過CDN,它只是根據你的UA頭展示了貼近手機顯示的頁面

例:http://m.sp910.com其實和http://www.sp910.com訪問的是同一個頁面

(4) 國外地址請求

原理:目標對於國外用戶沒有做CDN,直接ping可以得到真實IP

在線工具:
https://check-host.net/check-ping?
http://port.ping.pe/

評價:本方法效果不是很好,但是成本低
案例:看到大量國外的服務器去Ping,得到IP都一樣,極大概率是真實IP

(5) 利用郵件服務器接口獲取真實IP

利用網站中有用到郵件的位置,例如注冊發郵件、找回密碼發郵件等等,查看郵件原文尋找真實IP。

案例:墨者學院注冊郵件

image

我們注意到上面這個是來自於騰訊的中轉郵件,應該不是真實的;那么我們再往下找

image

然后我們就發現了帶有mozhe標志的郵箱,不出意外這個應該就是真實IP地址

我們接下來去百度查詢一下,我們發現這個IP所在地在重慶

image

接下來我們怎么確定他就是這個IP呢?

方法:人情味【查備案地址、備案號】

我們在墨者學院官網下面發現

image

它的備案地址有渝,那么基本就可以確定它就是這個重慶的IP

(6) 歷史DNS解析記錄

在線工具:
https://viewdns.info/iphistory/?domain=
http://www.jsons.cn/nslookup/
https://dnsdumpster.com/
https://securitytrails.com/domain/baidu.com/history/a
https://securitytrails.com/domain
https://sitereport.netcraft.com/?url=
https://x.threatbook.cn/
https://dnsdb.io/zh-cn/

評價:本方法效果好,但是需要花時間去找

需要注意的是:除了過去的DNS記錄,當前的記錄也有可能泄露原始服務器IP。例如,MX記錄是一種常見的查找IP的方式。如果網站在與web相同的服務器和IP上托管自己的郵件服務器,那么原始服務器IP將在MX記錄中。

歷史DNS查詢演示:

image

(7) 去掉WWW大法

評價:本方法效果較好,並且無成本

案例:https://www.xueersi.com/

直接ping帶WWW的網址

image

去掉WWW后再ping,查詢到真實IP

image

(8) 利用黑暗引擎搜索ICO圖標的hash值

原理:圖片有一串唯一哈希,網絡空間測繪引擎會收集全網IP的信息進行排序收錄,
那么這些圖標的信息,也自然會采集在測繪解析的目標中。

工具:fofa
評價:本方法效果好

步驟:
1、找到網站的ICO路徑

image

2、Fofa 可以直接輸入URL,也可以上傳ico圖片,將自動轉化icon_hash

image

image

這里演示一下用shodan怎么做:

操作流程:
1、首先訪問獲取ico地址
2、然后利用python2獲取其ico地址的hash信息
3、再利用黑暗引擎shodan進行全網追蹤
4、最后通過結果訪問探針真實地址

image

第一步,直接查看網頁源代碼獲取完整ico地址

image

第二步,通過python2腳本獲取hash值(需要提前安裝好mmh3庫)

import mmh3
import requests
response = requests.get('http://www.xiaodi8.com/img/favicon.ico')
favicon = response.content.encode('base64')
hash = mmh3.hash(favicon)
print hash

#安裝mmh3失敗記得先安裝下這個
#Microsoft Visual C++ 14.0的百度雲下載地址為:
#https://pan.baidu.com/s/12TcFkZ6KFLhofCT-osJOSg 提取碼:wkgv

image

第三步,直接訪問shodan,通過特定語法搜索

xxxx是icon_hash
搜索語法:http.favicon.hash:xxxx

image

(9) 通過APP端

通過抓包工具來抓取APP的請求包,尋找真實IP。

(10) 通過網站證書

案例演示:

1、需要站點是HTTPS的

image

2、復制序列號

image

3、序列號是16進制,需要轉化為10進制

在線轉化工具

image

4、搜索語法:cert="xxxx"

image

(11) SSL證書查詢

工具:https://censys.io/certificates?q=
評價:該方法准確度高

案例演示:域名www.xxx.com

1、輸入語法: parsed.names: www.xxx.com and tags.raw: trusted

image

2、找到IPv4 Hosts,點進去

image

3、可以看見第一個就是了

image

(12) 利用歷史遺留文件

比如,phpinfo()、phpinfo.php等會暴露一些真實IP信息

(13) 利用全網掃描

掃描全網開放特定端口的IP,然后獲取他們的特定頁面的HTML源代碼,用這些源代碼和目標網站的特定頁面的HTM源代碼做對比,如果匹配上來了,就很可能是目標網站的真實P,工具匹配會匹配出來很多,最后還是要人工篩選。

全網掃描工具:zmap、w8fuckcdn、fuckcdn
https://github.com/Tai7sy/fuckcdn fuckcdn
https://github.com/boy-hack/w8fuckcdn w8fuckcdn 

通過zmap掃描

image

(14) 以量打量【DDOS將CDN流量打沒】

(15) 利用網絡空間搜索引擎

最常見的網絡空間搜索引擎有鍾馗之眼、shodan、fofa搜索。

1、鍾馗之眼:https://www.zoomeye.org/
2、Shodan:https://www.shodan.io/
3、FOFA:https://fofa.so/

這里主要是利用網站返回的內容尋找真實原始IP,如果原始服務器IP也返回了網站的內容,那么可以在網上搜索大量的相關數據。

我們只需要瀏覽網頁源代碼,尋找獨特的代碼片段。在JavaScript中使用具有訪問或標識符參數的第三方服務(例如Google Analytics、reCAPTCHA、Analytics)是攻擊者經常使用的方法。或者說用title,畢竟竟每個網站的title基本上都是獨一無二的。 以fofa為例:可以直接以 title=""來搜索。

再配合最常見的網絡空間搜索引擎就可以輕而易舉的找到網站的真實的IP

Part8:C段掃描

某些有錢的公司,為了方便公司管理以及價格優惠,會買整個段
同一個C段有很大的概率處於同一個機房

信息收集-補充知識

谷歌hacking語法:

filetype:指定文件類型
inurl:指定url包含內容
site:指定域名
intitle:指定title包含內容
intext:指定內容

inurl:/admin/index #這種很容易找到別人的后台
inurl:/admin.php #這種就很容易找到admin.php的內容

site:edu.cn inurl:.php?id=123 #找SQL注入站點時可以這么找

君子協議

/robots.txt => 防止蜘蛛爬蟲的協議
告訴搜索引擎哪些不要爬取,但是因為這是個君子協議,所以搜索引擎可以不遵守

WAF檢測

工具:
https://github.com/EnableSecurity/wafw00f wafw00f

APP及其他資產獲取
1、APP一鍵提取反編譯【工具:漏了個大洞】

![image](https://img2020.cnblogs.com/blog/2516340/202109/2516340-20210926171012743-139017018.png)

2、APP 抓數據包進行工具配合【模擬器+Burp】

利用Burp歷史抓取更多URL

image

其它方法

同一個域名的不同后綴有可能屬於同一個網站(.cn|.com|.net)

知識學習庫

https://websec.readthedocs.io/zh/latest/ Web安全學習筆記

Github監控
Github監控最新的EXP發布及其它

# Title: wechat push CVE-2020
# Date: 2020-5-9
# Exploit Author: weixiao9188
# Version: 4.0
# Tested on: Linux,windows
# coding:UTF-8
import requests
import json
import time
import urllib3
import os
import pandas as pd

time_sleep = 20 # 每隔20秒爬取一次
while(True):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400"}
    # 判斷文件是否存在
    datas = []
    response1 = None
    response2 = None
    if os.path.exists("olddata.csv"):
        # 如果文件存在則每次爬取10個
        df = pd.read_csv("olddata.csv", header=None)
        datas = df.where(df.notnull(),None).values.tolist()# 將提取出來的數據中的nan轉化為None
        requests.packages.urllib3.disable_warnings()
        response1 = requests.get(url="https://api.github.com/search/repositories?q=CVE-2021&sort=updated&per_page=10",
                                 headers=headers,verify=False)
        response2 = requests.get(url="https://api.github.com/search/repositories?q=RCE&ssort=updated&per_page=10",
                                 headers=headers,verify=False)

    else:
        # 不存在爬取全部
        datas = []
        requests.packages.urllib3.disable_warnings()
        response1 = requests.get(url="https://api.github.com/search/repositories?q=CVE-2021&sort=updated&order=desc",headers=headers,verify=False)
        response2 = requests.get(url="https://api.github.com/search/repositories?q=RCE&ssort=updated&order=desc",headers=headers,verify=False)

    data1 = json.loads(response1.text)
    data2 = json.loads(response2.text)
    for j in [data1["items"],data2["items"]]:
        for i in j:
            s = {"name":i['name'],"html":i['html_url'],"description":i['description']}
            s1 =[i['name'],i['html_url'],i['description']]
            if s1 not in datas:
                #print(s1)
                #print(datas)
                params = {
                     "text":s["name"],
                    "desp":" 鏈接:"+str(s["html"])+"\n簡介"+str(s["description"])
                }
                print("當前推送為"+str(s)+"\n")
                print(params)
                requests.packages.urllib3.disable_warnings()
                requests.get("https://sctapi.ftqq.com/SCT68513T20RxXKZZlL1mtwHtu8UtTyPQ.send",params=params,timeout=10,verify=False)
                #time.sleep(1)#以防推送太猛
                print("推送完成!")
                datas.append(s1)
            else:
                pass
                #print("數據已存在!")
    pd.DataFrame(datas).to_csv("olddata.csv",header=None,index=None)
    time.sleep(time_sleep)

實戰案例演示:

群友 WEB 授權測試下的服務測試【https://www.caredaily.com/】

image

網站表面上看起來存在漏洞的可能性不高,功能都比較簡單

接下來直接從以下5方面開始

image

我們直接去fofa、shodan、zoomeye進行域名搜索

image

查看特定IP開放的端口服務可以通過

https://fofa.so/hosts/121.40.216.101 -> 替換成想要查詢的IP

我們注意到這里8000端口出現了OpenSSH服務,我們就可以去搜對應版本存在的漏洞,去驗證

image

我們又注意到他這27017開了MongoDB,那么就可能存在MongoDB數據庫相關的漏洞,我們也可以去進行嘗試

image

這個地方又可以成為一個攻擊點

其他端口也類似,端口代表着服務,有服務就代表可能存在相應的服務的漏洞

我們就可以先記錄下來,然后最后統一對各個點進行攻擊。

我們還可以搜索它的目錄站點、子域名站點、旁注/C段站點進一步擴大我們的攻擊面【利用工具:7kbScan御劍掃描、Layer子域名挖掘機、同IP站點查詢】

最后講一下類似域名怎么找?

利用接口查,第一步就是查備案信息【需要VIP】

image

然后我們就新獲得了幾個域名

http://hkaspire.net/ 和 https://hkaspire.cn/

http://hkaspire.net/ 這個網站我們發現這里可以點擊,點擊之后跳轉到一個新的頁面 http://hkaspire.net:8080/login

image

image

這其實也是可以成為一個攻擊面的

他這里其實還暴露了很多,類似於探針信息,phpinfo信息

image

針對這個WDCP登陸系統,我們也可以直接在網上搜漏洞,進行漏洞測試

針對這個 https://hkaspire.cn/ 網站,這也是個系統,我們也可以進行漏洞測試

image

與此同時,這個域名https://hkaspire.cn/也涉及到新的IP地址,我們也可以針對這個IP地址進行測試【進行fofa的搜索】

image

所以能做的事情是很多的

這樣還沒完,我們可以拿這種網站的標題去百度|谷歌搜索

image

image

像是域名差不多的都可以進行測試

我們還可以去搜索域名的關鍵字【盡量用Google去搜索】

image

這個是我們通過谷歌搜到的 http://caredaily.xyz/

image

我們查看其robots.txt可以查到其一些路徑

image

我們進這個Install看看

image

然后我們就又可以去百度搜索youdiancms漏洞

這搜到的信息已經足夠多了,而且我們每個得到的域名對應的每個IP,每個端口都要掃,我們會拿到相當多信息,足夠我們進行滲透測試


免責聲明!

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



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