進行滲透測試之前,最重要的一步就是信息收集。在這個階段,我們要盡可能地收集目標的信息。所謂“知己知彼,百戰不殆”,我們越了解測試目標,測試的工作就越容易。
信息收集的方式可以分為兩種:主動和被動。
.’主動信息收集:通過直接訪問、掃描網站,這種流量將流經網站。
.被動信息收集:利用第三方的服務對目標進行訪問了解,比例:Google 搜索、Shodan、 fofa 搜索等。
whois 是用來查詢域名注冊所有者等信息的傳輸協議。簡單的說,就是通過 whois 來對域名信息進行查詢,可以查到注冊商、注冊人、郵箱、DNS 解析服務器、注冊人聯系電話等等,可以進行郵箱反查域名,爆破郵箱,社工,域名劫持,尋找旁站等等。
因為有些網站信息查得到,有些網站信息查不到,所以推薦以下信息比較全的查詢網站, 直接輸入目標站點即可查詢到相關信息。
l 在線 whois 查詢
(1) 國內 WHOIS 信息查詢地址:
站長之家 http://whois.chinaz.com/愛站網 https://whois.aizhan.com/
(2) 國外 WHOIS 信息查詢地址 https://who.is/
一定要養成收集站點郵箱賬號收集的習慣(因為好多官方后台都是用內部郵箱賬號登錄的,指不定哪天你就得到一個進后台的機會)。
(1) 通過說明文檔以及網站頁面收集,或者網站發表者以及留言板信息處收集賬號
(2) 通過 teemo,metago,burpusit,awvs,netspker 或者 google 語法收集
l 在線網站備案查詢
(1) 天眼查 https://www.tianyancha.com/
(2) ICP 備案查詢網 http://www.beianbeian.com/
l 利用技巧
(1) DNS 解析記錄可以反查 IP,比較早的解析記錄有時可以查到真實 IP,需要留意一下。
(1) 提高用戶訪問速率,優化用戶使用體驗。(2)隱藏真實服務器的 IP
(3)提供WAF 功能,目前很多 CDN 也提供了 WAF 的功能,我們的訪問請求會先經過 CDN 節點的過濾,該過濾可對 SQL 注入、XSS、Webshell 上傳、命令注入、惡意掃描等攻擊行為進行有效檢測和攔截。CDN 節點將認為無害的數據提交給真實的主機服務器。所以在滲透測試中,為了要知道網站服務器的真實 IP,我們必須繞過 CDN 查找出網站的真實 ip 地址。 判斷域名對應的真實 IP首先,我們要判斷該域名是否存在 CDN 的情況,我們可以去在線 CDN 查詢網站: http://ping.chinaz.com/ 。https://wepcc.com/ http://ping.chinaz.com/ http://ping.aizhan.com/ http://17ce.com
畢竟 CDN 還是不便宜的,所以很多站長可能只會對主站或者流量大的子站點做了 CDN, 而很多小站子站點又跟主站在同一台服務器或者同一個 C 段內,此時就可以通過查詢子域名對應的 IP 來輔助查找網站的真實 IP。
查詢子域名有四種方法:
-
通過爆破子域名進行查詢,如 Layer 子域名爆破機、subDomainBrute,在線子域名查詢網站:https://phpinfo.me/domain。
-
通過查詢 DNS 服務器,查詢該域下的解析記錄。
-
通過 HTTPS 證書來查詢(只適用於 https 網站) ,如:https://crt.sh/ 就是通過https 證書查詢子域名。
-
通過 google 查詢
(2) 查詢主域名
以前用 CDN 的時候有個習慣,只讓 WWW 域名使用 cdn,禿域名不適用,為的是在維護網站時更方便,不用等 cdn 緩存。所以試着把目標網站的 www 去掉,ping 一下看 ip 是不是變了,您別說,這個方法還真是屢用不爽。
(3) 郵件服務器
一般的郵件系統都在內部,沒有經過 CDN 的解析,通過目標網站用戶注冊或者 RSS 訂閱功能,查看郵件,尋找郵件頭中的郵件服務器域名 IP,ping 這個郵件服務器的域名,就可以獲得目標的真實IP(必須是目標自己的郵件服務器,第三方或者公共郵件服務器是沒有用的)。
(4) 查看域名歷史解析記錄
也許目標很久之前沒有使用 CDN,所以可能會存在使用 CDN 前的記錄。所以可以通過網站 https://www.netcraft.com 來觀察域名的 IP 歷史記錄。
(5) 國外訪問
國內的 CDN 往往只對國內用戶的訪問加速,而國外的 CDN 就不一定了。因此,通過國外在線代理網站 https://asm.ca.com/en/ping.php 訪問 ,可能會得到真實的 ip 地址。
nslookup xxx.com 199.89.126.10
C:\Users\asus\Desktop> nslookup hi-ourlife.com 199.89.126.10名稱: hi-ourlife.com
Address: 45.64.65.85
(6) Nslookup 查詢
查詢域名的 NS 記錄、MX 記錄、TXT 記錄等很有可能指向的是真實 ip 或同 C 段服務器。
(7) 網站漏洞
利用網站自身存在的漏洞,很多情況下會泄露服務器的真實 IP 地址。
(8) Censys 查詢 SSL 證書找到真實 IP
利用“Censys 網絡空間搜索引擎”搜索網站的 SSL 證書及 HASH,在 https://crt.sh
操作系統判斷方法:
(1) 大小寫訪問網站:
http://www.xxx.com/index.html && http://www.xxx.com/inDex.html
Windows 操作系統不區分大小寫,Linux 系統大小寫敏感,用此方法能夠判斷是 Windows還是 Linux 系統。
(2) ping
判斷是 Linux 還是 Windows 最簡單就是通過 ping 來探測,Windows 的 TTL 值都是一般是 128,Linux 則是 64。所以大於 100 的肯定是 Windows,而幾十的肯定是 Linux。
但是,通過 TTL 值來判斷服務器類型也不是百分之百准確的,有些 windows 服務器的 TTL值也是幾十,而且有的服務器禁止 ping。
• 網站會進行偽裝,要么沒有后綴,要么就是偽靜態。
• 有些站點會修改解析后綴,比如:本來是 PHP 的站點,可以修改文件把 asp 后綴當作 php 解析。
(2) 探測腳本類型:
• 如果不是靜態或者偽靜態 則多點開幾個界面,可以看到腳本后綴。
• 最簡單的方法,在域名后面分別加個 /index.asp /index.aspx /index.php /index.jsp不報錯則是網站支持的腳本語言(原理:大部分網站根目錄都會放個 index 首頁文件,這是最快速最簡單的方式)。
• F12 審查元素,在返回頭一般都能看到網站腳本。
• 網站的 robots.txt site.xml 這些文件很可能會有暴露網站的語言 這個直接就訪問, robots.txt 等等就可以,存在的話網站腳本一目了然。
• 在網站任意界面直接查看源碼,搜索 asp 或 aspx 或 php 或 jsp 很多偽靜態的站,都可以用這種方法。他會調用一些動態腳本,在源碼會看到。
• 用 google 搜索 site:xxx filetype:php site:目標站域名 inurl:腳本語言類型 如果收錄不是很少,一般都能看出來。
• 抓取數據包,分析 cookie 或 session 名稱,有可能有腳本前綴 比如:php 的站點, session 名稱是 phpsesssion。
ü 報錯獲得
在處理報錯信息的問題上如果處理不當,就可導致路徑信息泄露,比如訪問一些不存在的文件等思路。
這里的報錯方法就很多了,說不完的,具體還要根據實際情況操作。下面說幾種實用的:
• 有動態 URL 的地方可以替換參數 替換參數值為不存在的,很多時候都能爆物理路徑。
• 訪問不存在的文件名 文件 或者改正常后綴為不支持的后綴。
IIS7.0 以上,如果沒有修改 404 頁面,只要瀏覽 web 任意不存在的文件,都會直接暴出絕對路徑。同理,thinkphp 也有這個性質。在 id=1 的注入點,使用各種不支持的字符,比如 id=1’ id=? id=-1 id=\ id=/ 都有可能暴出絕對路徑。 還有的時候傳一些錯誤圖片會報錯 windows不支持的符號,?:<>之類的,還有 windows 不支持的文件名 aux Windows 服務器上傳 aux 文件或者新建 aux 文件夾,因為不允許這種文件存在而報錯泄露絕對路徑。
• 尤其是 php 框架寫的站,上傳很容易爆出物理路徑,根據具體情況了,比如一次提交允許的后綴,整體提交時抓包改為不支持的后綴,放包,很多時候都能爆出物理路徑。 有一部分都是 sql 語句報錯,sql 很多時候會爆物理路徑,所以相信你已經會拓展了。
ü 后台獲得
可以登錄后台的話,后台首頁一般都有服務器信息的,大部分情況下物理路徑都在里面。
ü 上傳圖片處
在上傳圖片處,這里我說下最可能存在問題的點,就是關於上傳相關證明,進行實名制上傳信息等功能頁面,在上傳圖片時進行抓包,然后查看返回包,那么就可看到當前服務器的絕對路徑信息。
ü 搜索引擎探測
結合關鍵字和 site 語法搜索出錯頁面的網頁快照,常見關鍵字有 warning 和 fatal error。
注意,如果目標站點是二級域名,site 接的是其對應的頂級域名,這樣得到的信息要多得多。
Site:xxx.edu.tw warning Site:xxx.com.tw “fatal error”由於很多網站本身容錯做的不好,會有一些暴露物理路徑的界面,如果被搜索引擎收錄了, 那么可以通過搜索引擎來找到在搜索引擎搜索 site:目標 關鍵字常見的報錯關鍵詞warning error module file not exist 數據庫 配置出錯 找不到包含文件 包含路徑 路徑為 select Warning: mysqli_query() expects parameter to be mysqli boolean given in on line directory in Fatal error require_once() Failed opening required include_path=
容器特性爆物理路徑
如:Apache Tomcat、Struts2、CMS、zabix、Nginx 等等,例如 Nginx 的某版本解析漏洞,就可造成路徑信息泄露。
• IIS 大於 6 的版本,基本都是 導致他 404 就可以爆出物理路徑、IIS 名、IIS 版本。這個很簡單,隨便訪問個不存在的目錄或文件就可以。
• nginx 文件類型錯誤解析爆路徑: 說明:要求 Web 服務器是 nginx,且存在文件類型解析漏洞。有時在圖片地址后加/x.php,該圖片不但會被當作 php 文件執行,有可能爆出物理路徑www.xxx.com/xx.jpg/x.php
• /etc/httpd/conf/httpd.conf
這是 apache 默認目錄,最底下有一句
Load config files in the "/etc/httpd/conf.d" directory, if any. IncludeOptional conf.d/.conf
這代表,在/etc/httpd/conf.d 目錄下的所有.conf 文件都會被加載,也就是說管理員可以在
/etc/httpd/conf.d/.conf 里面寫網站目錄。
所以最后讀 /etc/httpd/conf.d/vhost.conf 成功讀出網站絕對路徑
思 路 就 是 先 讀 /etc/httpd/conf/httpd.conf 沒 有 網 站 目 錄 就 看 IncludeOptional conf.d/*.conf 看完就嘗試讀 /etc/httpd/conf.d/httpd.conf
/etc/httpd/conf.d/vhost.conf
/etc/httpd/conf.d/httpd-vhost.conf
/etc/httpd/conf.d/httpd.conf.bak 等 等
ü 遺留文件 探針文件
通過遺留文件獲得,比如 phpinfo.php info.php site.php 1.php a.php 一些探針文件啊都有,等等。在遺留文件中搜索 SCRIPT_FILENAME。
很多網站的根目錄下都存在測試文件,腳本代碼通常都是 phpinfo(),如:
test.php ceshi.php info.php phpinfo.php php_info.php 1.php
ü phpmyadmin 爆路徑
一旦找到 phpmyadmin 的管理頁面,再訪問該目錄下的某些特定文件,就很有可能爆出物理路徑。至於 phpmyadmin 的地址可以用 wwwscan 這類的工具去掃,也可以選擇 google。
/phpmyadmin/libraries/lect_lang.lib.php
/phpMyAdmin/index.php?lang[]=1
/phpMyAdmin/phpinfo.php
/phpmyadmin/themes/darkblue_orange/layout.inc.php
/phpmyadmin/libraries/select_lang.lib.php
/phpmyadmin/libraries/lect_lang.lib.php /phpmyadmin/libraries/mcrypt.lib.php XML 處
一些 XML 限制或刪除不完全,可導致服務器等信息泄露。
配置文件找路徑
如果注入點有文件讀取權限,就可以手工 load_file 或工具讀取配置文件,再從中尋找路徑信息(一般在文件末尾)。各平台下 Web 服務器和PHP 的配置文件默認路徑可以上網查, 這里列舉常見的幾個。
(1) Windowsc:\windows\php.ini php 配置文件 c:\windows\system32\inetsrv\MetaBase.xml IIS 虛擬主機配置文件如果有 root 讀取文件的權限,或者任意文件讀取漏洞,可以讀取容器的配置文件,或者集成環境的固定 web 目錄,判斷集成環境,可以通過 mysql 的根目錄判斷,前面注入時說到的@@datadir: 常見配置文件:
C:\Windows\system32\inetsrv\metabase.xml C:\Windows\System32\inetsrv\config\applicationHost.config C:\xampp\apache\conf\httpd.conf /var/www/conf/httpd.conf
常見集成環境默認目錄,后面往往還有以域名命名的目錄,比如: C:\www\baidu
C:\Inetpub\wwwroot C:\xampp\htdocs
D: \phpStudy\WWW
(2) Linux
/home/wwwroot/
/www/users/
/var/www/html/網站名
其實 linux 還可以用瞎蒙大法
/etc/php.ini php 配置文件
/etc/httpd/conf.d/php.conf
/etc/httpd/conf/httpd.conf Apache 配置文件
/usr/local/apache/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
常我們所說的敏感文件、敏感目錄大概有以下幾種:
后台、robots.txt、數據庫 log、sitemap.xml、mysql.sql、licence.txt、WEB-INF 泄露、備份文件泄露、配置文件泄露
· 收集方向
后台目錄:弱口令,萬能密碼,爆破 (常用后台 admin\admin.后綴\admin/login.后綴 \manage \webmanager\等等)
安裝包:獲取數據庫信息,甚至是網站源碼上傳目錄:截斷、上傳圖片馬等
mysql 管理接口:弱口令、爆破,萬能密碼,然后脫褲,甚至是拿到 shell安裝頁面 :可以二次安裝進而繞過
phpinfo:會把你配置的各種信息暴露出來編輯器:fck、ke、等
iis 短文件利用:條件比較苛刻 windows、apache 等 robots.txt 文件
robots.txt 文件是專門針對搜索引擎機器人 robot 編寫的一個純文本文件。我們可以在這個文件中指定網站中不想被 robot 訪問的目錄。這樣,我們網站的部分或全部內容就可以不被搜索引擎收錄了,或者讓搜索引擎只收錄指定的內容。因此我們可 以利用robots.txt 讓 Google 的機器人訪問不了我們網站上的重要文件,GoogleHack 的威脅也就不存在了。 假如編寫的 robots.txt 文件內容如下:
User-agent: * Disallow: /data/ Disallow: /db/ Disallow: /admin/ Disallow: /manager/ Allow:/images/
其中“Disallow”參數后面的是禁止 robot 收錄部分的路徑,例如我們要讓 robot 禁止收錄網站目錄下的“data”文件夾,只需要在 Disallow 參數后面加上 /data/ 即可。如
果想增加其他目錄,只需按此格式繼續添加。文件編寫完成后將其上傳到網站的根目錄, 就可以讓網站遠離 Google Hacking 了。
雖然 robots 文件目的是讓搜索蜘蛛不爬取想要保護的頁面,但是如果我們知道了robots 文件的內容的話,我們就可以知道目標網站哪些文件夾不讓訪問,從側面說明這些文件夾是很重要的了。如:https://www.baidu.com/robots.txt
· 常用工具
探測目標網站后台目錄的工具有:
字典爆破:dirb[kali 如:dirb http://192.168.200.113]對目標網站進行目錄掃描]、 DirBuster、 wwwscan 、御劍后台、Webdirscan 等
蜘蛛爬行:Burp、OWASP ZAP、AWVS 等
在線工具站:webscan
· 聯網設備搜索
鍾馗之眼 www.zoomeye.com。傻蛋 www.oshadan.com(使用)
聯網設備搜索引擎可以檢索到許多搜索引擎不收錄的頁面,通常是后台等頁面。 構造檢索關鍵詞時:
系統/后台類,可以搜索“xxx 系統/平台/管理”。企業類,可以搜索“xxx 企業/公司/平台”。
比如我們要挖電信的系統,可以搜索“電信系統/平台/管理”。
· 搜索引擎site:xxx.xxx system site:xxx.xxx 內 部site:xxx.xxx 系 統site:目標 admin site:目標 login site:目標 管理員登陸site:目標 后台
site:目標 中心site:目標 登錄site:目標 登陸site:目標 管理中心
等等很多,可以自行拓展
4、中間件和容器(CMS)
我們需要知道網站用的 web 服務器是什么類型的:Apache、Nginx、Tomcat 、Lighttpd、 Weblogic、Jboss 還是 IIS。
知道了 web 服務器是哪種類型后,我們還要探測 web 服務器具體的版本。
比如 Ngnix 版本<0.83 會有解析漏洞 ,IIS6.0 會有文件名解析漏洞、IIS7.0 會有畸形解析漏洞等。不同的 web 服務器版本,存在着不同漏洞。
CMS(Content Management System)又稱整站系統或文章系統。在 2004 年以前,如果想要進行網站內容管理,基本上都靠手工維護,但在信息爆炸的時代,完全靠人維護相當困難。 所以就出現了 CMS,開放者只要給客戶一個軟件包,客戶自己安裝配置好,就可以定期更新數據來維護網站,節省了大量的人力和物力。
常見的 CMS 有:WordPress、Dedecms、Discuz、PhpWeb、PhpWind、Dvbbs、PhpCMS、ECShop、、 SiteWeaver、AspCMS、帝國、Z-Blog 等。
CMS 指紋識別又有很多方法,比如說御劍指紋識別、Webrobot 工具、whatweb 工具、還有在線查詢的網站等等。
CMS 在線指紋識別:
我們需要知道網站用的是哪種類型的數據庫:Mysql、Oracle、SqlServer 還是 Access 。雖然這幾種數據庫的語法大體上相同,但是還是有區別的。
所以我們還是要知道目標網站用的是哪種數據庫,並且數據庫是哪個版本的。 幾種數據庫的區別:
• Access 全名是 Microsoft Office Access,是由微軟發布的關聯式數據庫管理系統。小型數據庫,當數據庫達到 100M 左右的時候性能就會下降。
數據庫后綴名:.mdb 一般是 asp 的網頁文件用 access 數據庫
• SQL Server 是由 Microsoft 開發和推廣的關系數據庫管理系統(DBMS),是一個比較大型的數據庫。
端口號為 1433。數據庫后綴名 .mdf
• MySQL 是一個關系型數據庫管理系統,由瑞典 MySQL AB 公司開發,目前屬於 Oracle 旗下產品。
MySQL 是最流行的關系型數據庫管理系統,在 WEB 應用方面 MySQL 是最好的應用軟件之一,MySQL 數據庫大部分是 php 的頁面。默認端口是 3306
• Oracle 又名 Oracle RDBMS,或簡稱 Oracle。
是甲骨文公司的一款關系數據庫管理系統。常用於比較大的網站。默認端口是 1521
首先,成本上的差距,access 是不要錢的,mysql 也是開源的,sql server 是收費的一般也就幾千,Oracle 的費用則數萬。
其次,處理能力,access 支持千以內的訪問量,sql server 支持幾千到上萬的訪問,而Oracle 則支持海量的訪問。
再次,從數據庫的規模來看,access 是小型數據庫,mysql 是中小型數據庫,sql server是中型數據庫,Oracle 是大型數據庫。
根據腳本語言判斷
如果語言為 asp,基本就是 access 數據庫 aspx 可能是 mssql 很少是 access jsp 的站 oracle 居多 php 一般為 mysql (也有可能是其他數據庫)
ü 根據報錯判斷
在參數后面使網站報錯也可能會給出數據庫報錯信息,報錯方法很多,可以修改參數為不存在的參數,比如 9999999 也可以用特殊符號,等等。
ü 根據數據庫特性判斷
存在注入時 在參數后面加上 and len('a')=1 如果返回正常,一般數據庫為 mssql 或 mysql,大站的話可能是 db2,界面返回錯誤的話,數據庫基本是 oracle
在參數后面加上 ;and (select count(*) from sysobjects)>0 如果返回正常那就是 mssql 數據庫,如果不正常那就不是 mssql(sql server)
ü 根據端口判斷
這個很簡單,其實你掃一下端口,就知道是什么數據庫了。1433 對應 mssql 數據庫, 3306對應 mysql 數據庫,1521 對應 oracle 數據庫 。
如果端口被更改,可以逐一用 xx.xx.xx.xx:: 嘗試訪問端口,如果是數據庫端口,會返回對應的無法連接數據庫的英文 。不是數據庫,服務器會一直載入或者找不到界面。
ASP 和 ASPX:ACCESS 、 SQL Server PHP:MySQL 、 PostgreSQL JSP:Oracle、MySQL
6、
Waf 也叫 Web 應用防火牆,是通過執行一系列針對 HTTP/HTTPS 的安全策略來專門為 Web應用提供保護的一款產品。
常用的兩種方式:
(1) 手工(提交惡意數據,簡單粗暴)
(2) Kaili 工具(WAFW00F、Nmap)
• Nmap 探測 WAF 有兩種腳本一種是 http-waf-detect。
命令:nmap -p80,443 --script=http-waf-detect ip一種是 http-waf-fingerprint。
命令:nmap -p80,443 --script=http-waf-fingerprint ip
• WAFW00F 探測 WAF
命令:wafw00f -a 域名
• 在線識別https://scan.top15.cn/web
7、C 段和旁站
旁站指的是同一服務器上的其他網站,很多時候,有些網站可能不是那么容易入侵。那么,可以查看該網站所在的服務器上是否還有其他網站。如果有其他網站的話,可以先拿下其他網站的 webshell,然后再提權拿到服務器的權限,最后就自然可以拿下該網站了!
對於紅藍對抗和護網,C 段掃描比較有意義。對於單獨網站的滲透測試,C 段掃描意義不大。C 段指的是同一內網段內的其他服務器,每個 IP 有 ABCD 四個段,舉個例子,192.168.0.1, A 段就是 192,B 段是 168,C 段是 0,D 段是 1,而 C 段嗅探的意思就是拿下它同一 C 段中的其中一台服務器,也就是說是 D 段 1-255 中的一台服務器,然后利用工具嗅探拿下該服務器。
旁 站 和 C 段 在 線 查 詢 地 址 : http://www.webscan.cc/ https://phpinfo.me/bing.php https://scan.top15.cn/web/webside ttp://www.5kik.com/