当前位置: 首页 > news >正文

20252921 2025-2026-2 《网络攻防实践》第10周作业

20252921 2024-2025-2 《网络攻防实践》实践10报告

1.实践内容

1.1 Web 应用体系结构与安全威胁
1.1.1 Web 应用体系结构
Web 应用采用四层分层架构,从上至下依次为客户端、Web 服务器、应用服务器和数据库服务器,客户端主要以浏览器为主。各层级分工明确,协同完成用户请求的处理与响应工作。
整体交互流程如下:用户通过浏览器发起 HTTP 请求,Web 服务器接收请求后转发至应用服务器处理业务逻辑。应用服务器根据业务需求调用数据库获取并处理数据,最后将处理结果沿原路径逐层回传,由浏览器解析并展示内容。这种分层架构能够分离业务关注点,降低开发难度,也便于团队分工协作与系统后续扩展。
1.1.2 Web 应用安全威胁分类
按照攻击目标和作用层级划分,Web 应用面临的安全威胁主要分为四类,不同类型威胁的攻击方向和造成的危害各有不同。
应用层攻击是目前最为常见的攻击形式,主要利用 Web 应用自身存在的逻辑漏洞实施破坏。常见攻击方式包括 SQL 注入、跨站脚本、命令注入、文件上传等,这类攻击的根源是应用程序没有对用户输入内容做完善的校验与处理。
服务器攻击将目标对准 Web 服务器和各类中间件,例如 Apache、IIS 等。攻击者利用服务器或中间件本身的漏洞,尝试获取管理权限,干扰正常服务运行,严重时会直接造成服务器瘫痪。
数据层攻击依托数据库漏洞或是不合理的权限配置,非法读取、篡改、删除系统内的敏感数据,窃取数据库配置信息,严重破坏数据的保密性与完整性。
客户端攻击以使用网站的终端用户为目标,通过发送钓鱼链接、植入恶意脚本、利用浏览器漏洞等方式,盗取用户会话信息、Cookie 等数据,进而冒用用户身份进行违规操作。
1.2 Web 应用信息收集
信息收集是 Web 攻防工作的第一步,主要作用是全面收集目标应用的相关资料,为后续漏洞挖掘和攻击测试提供支撑。具体收集内容及常用工具如下。
基础信息收集主要获取目标域名、服务器 IP 地址、开放端口、Web 服务器版本以及服务器搭载的操作系统类型和版本,为后续探测工作打下基础。
目录与文件探测可借助工具扫描或手动测试完成,重点查找网站后台登录入口、备份文件、配置文件、测试页面等敏感资源,从中寻找可利用的攻击入口。
应用信息探测主要识别网站使用的开发语言、内容管理系统、数据库类型、用户账号以及接口路径等内容,明确目标整体技术架构。
常用工具包含 Nmap,主要用于端口扫描和基础信息探测。DirBuster 负责网站目录扫描。Burp Suite 可实现请求拦截、修改和漏洞检测。AWVS 用于自动化扫描 Web 漏洞。Wappalyzer 能够快速识别网站技术栈。此外,Shodan、FOFA 等网络平台也可辅助开展信息收集,提升工作效率。
1.3 主流 Web 应用攻击技术
1.3.1 SQL 注入攻击
核心原理,Web 应用没有对用户输入内容进行严格过滤,攻击者构造的恶意内容会被直接拼接进 SQL 语句并被数据库执行,以此实现对数据库的非法操作。该攻击利用的是代码编写缺陷,并非系统底层漏洞。
攻击主要分为四个步骤。首先输入特殊字符判断目标是否存在注入漏洞。其次探测数据库的表名、字段名等结构信息。接着提取数据库中存储的各类敏感数据。最后利用已发现的漏洞提升权限,或是向服务器写入恶意文件,实现更深层次的攻击。
常见攻击类型包含联合查询注入、报错注入、布尔盲注、时间盲注以及堆叠查询。除此之外,宽字节注入、二次注入也属于较为典型的 SQL 注入攻击方式。
1.3.2 XSS 跨站脚本攻击
核心原理,Web 应用未对用户发布的内容进行过滤和转义,攻击者编写的恶意脚本会被嵌入网页当中。其他用户访问该页面时,脚本会在浏览器内自动运行,进而窃取信息或是执行恶意操作,该漏洞本质是程序盲目信任用户输入内容导致。
根据触发形式和留存特点,跨站脚本攻击分为三类。第一类是反射型跨站脚本,也叫非持久型攻击,恶意内容依附在链接参数中,仅单次访问生效,需要用户点击恶意链接才会触发。第二类是存储型跨站脚本,也叫持久型攻击,恶意脚本会被保存至网站数据库,所有访问对应页面的用户都会受到影响,影响范围更广,危害也更大。第三类是 DOM 型跨站脚本,该攻击无需和服务器产生交互,仅利用前端页面解析漏洞篡改页面结构,执行恶意代码。
跨站脚本攻击会造成诸多危害,包括窃取用户 Cookie 和会话数据,冒用身份登录系统。伪造内容开展钓鱼行为,诱导用户泄露隐私信息。借助浏览器权限探测内网、扫描端口。同时还能传播恶意代码,形成批量攻击,影响大量用户,甚至导致网站服务无法正常运行。

2.实践过程

先进行语句的熟悉
在此链接https://seedsecuritylabs.org/lab_env.html下载DigitalOcean: SEEDUbuntu-16.04-32bit.zip
image
进行安装
image

基本按照默认步骤,安装好后如图所示
image
image
修改主机名为自己姓名,密码:seedubuntu
image

2.2SEED SQL注入攻击与防御实验

1.熟悉SQL语句
首先我们输入mysql -u root -p 登录数据库,密码为seedubuntu
熟悉一下数据库里的基本语句
image
要查看mysql中的数据库,输入show databases;
image
进入Users数据库,输入use Users;
image
查看数据库中的表,输入show tables;
image
展示表中的内容,输入select * from credential;
image
接着使用SELECT查询语句查询某个具体信息,这里查的是Alice,select * from credential where Name = 'Alice';
image

熟悉语句之后我们开始考虑攻击了

1.对SELECT语句的SQL注入攻击

进入www.seedlabsqlinjection.com,这个网址是 SEED Labs 官方的 SQL 注入靶场网页
image
查看网页源码可以看到
image

提交地址:unsafe_home.php 提交方式:GET 请求(参数直接拼在 URL 里) 两个参数:username、Password,后端 PHP 直接拼接 SQL 语句,无过滤,存在字符型 SQL 注入漏洞

浏览器中输入地址/var/www/SQLInjection/unsafe_home.php查看相关源码

image

登录
$sql = "SELECT id, name, eid, salary, birth, ssn, phoneNumber, address, email,nickname,Password
FROM credential
WHERE name= '$input_uname' and Password='$hashed_pwd'";

image
这里看到有个if ($name != "Admin"),猜测管理员为Admin

注入绕过登录
SELECT id, name, eid, salary, birth, ssn, phoneNumber, address, email,nickname,Password FROM credential
WHERE name= 'Admin'#' and Password='$hashed_pwd'
用户名:admin'#,密码任意

注释掉后半段密码校验,直接命中 admin 用户,进入用户页面

image

2.对UPDATE语句的SQL注入攻击

点击edit profile
image
查看源码依旧是get方法好吧
image

表单三个参数:NickName、Email、Address,GET 全部暴露在 URL unsafe_edit_backend.php?NickName=xxx&Email=xxx&Address=xxx

image
输入了新密码($input_pwd 非空)
UPDATE credential
SET nickname='$input_nickname',email='$input_email',address='$input_address',Password='$hashed_pwd',PhoneNumber='$input_phonenumber'
where ID=$id;

密码框为空(不修改密码)
UPDATE credential
SET nickname='$input_nickname',
email='$input_email',
address='$input_address',
PhoneNumber='$input_phonenumber'
where ID=$id;

',salary=2921 WHERE name='Alice'#

image
填上之后变成
UPDATE credential
SET nickname='xxx',
email='xxx',
address='',salary=2921 WHERE name='Alice'#',
PhoneNumber='xxx'
WHERE ID=$id;

image

后面所有内容全部作废,所以只改了Alice的salary

3.SQL 对抗

在命令行输入vim /var/www/SQLInjection/unsafe_home.php
对文件进行一个查看
image

我们需要对文件进行一个改动使得sql注入失效
按i进行编辑
使用以下语句进行替换
$sql = $conn->prepare("SELECT id, name, eid, salary, birth, ssn, phoneNumber, address, email, nickname, Password FROM credential WHERE name= ? and Password= ?");
$sql->bind_param("ss", $input_uname, $hashed_pwd);
$sql->execute();
$result = $sql->get_result();
下面是替换后的结果
image

现在已经无法登录
image

3.XSS跨站脚本攻击实验

3.1 发布恶意消息,显示警报窗口:在您的Elgg配置文件中嵌入一个JavaScript程序,以便当另一个用户查看您的配置文件时,将执行JavaScript程序并显示一个警报窗口。
在火狐浏览器访问靶站 www.xsslabelgg.com,跳转至 XSS 实验平台登录界面,选用账号 Alice 完成登录操作,点击登录按钮提交,该账号对应的账号凭据如下:
用户名 密码

Alice seedalice
Boby seedboby
Samy seedsamy
Admin seedelgg
image

进入页面后依次点击profile→Alice→Edit Profile,在Brief description输入框内填入,实现弹窗输出字符20252921
image

2.2.2 弹窗显示cookie信息:将cookie信息显示。

之后在相同的位置输入
可以看到自动弹出cookie来了
image

2.2.3 窃取受害者的cookies:将cookie发送给攻击者
IP地址为192.168.200.11
image

终端执行nc -lv 1921开启 1921 端口监听,随后使用 Samy 账号登录网站并访问 Alice 主页,终端即可捕获回传数据
依旧在原地方
image

2.2.4 成为受害者的朋友:使用js程序加受害者为朋友,无需受害者干预,使用相关的工具了解Elgg加好友的过程。
访问boby主页点击add friend
image
image

点击f12进行network监听

image
image
附带了以下三个参数:
friend=45:请求添加的对象id
__elgg_ts=1715849723:时间戳
__elgg_token=8s6rxvluUUz-8kY8-VbeoQ:令牌

剩下所有人的id:Alice的id为44,Boby的id为45,Charlie的id为46,Samy的id为47,Admin的id为36
之后再Alice的About me栏中添加这段代码,可以直接添加boby的好友。

image

2.2.5 修改受害者的信息:使用js程序使得受害者在访问Alice的页面时,资料无需干预却被修改
在Alice的About me中输入以下代码:

可以发现已经添加了
image

2.2.6编写XSS蠕虫
在Alice的About me中输入以下代码:

image

2.2.7对抗XSS攻击
进入admin
image
在Account-Administration-Plugins中找到HTMLawed点按Actived按钮,此时显示deactived
image
该插件可在用户于个人简介、博文等模块提交 HTML 格式内容后,于数据入库前完成内容过滤与净化处理,自动剔除

http://www.zskr.cn/news/1449824.html

相关文章:

  • 如何用ok-ww实现鸣潮全自动挂机:从零开始的完整实战指南
  • QueryExcel:终极免费Excel批量查询工具,让数据检索效率提升100倍
  • MiniMax M3来了:编程超 GPT-5.5,即将开源
  • [Android] 一刻相册v6.30.6无广告版
  • 探寻AI Agent 权益:个人开发者能享受免费使用权限吗
  • 别再乱用电容了!从自谐振到反谐振,手把手教你搞定EMC滤波电容选型与PCB布局
  • Ultimate Vocal Remover 5.6:小白也能上手的音频分离神器完全指南
  • Java IO与File类学习笔记:从文件操作到各类流体系梳理
  • 【PC】[吾爱大神原创汉化] 开源PDF编辑器 KillerPDF v1.4.1汉化修改版
  • 别再让第三方库拖后腿!手把手教你用DependencyCheck给Maven项目做安全体检(附Jenkins集成)
  • 深度解析:索尼DPT-RP1电子纸底层破解与系统定制技术内幕
  • AI产品经理这条路,到底该怎么走?一份从零到精通的实战路线
  • 手把手教你用MATLAB给回归模型打分:从SSE到R方的完整计算与解读
  • AI通过图灵测试:技术实质、社会影响与未来应对策略
  • 基于Arduino与XOD可视化编程的智能植物监护系统设计与实现
  • 电子入门实践:从欧姆定律到并联电路,手把手搭建LED烽火台
  • Doherty功放设计进阶:从对称到非对称,再到多峰值的ADS仿真全攻略
  • 保姆级避坑指南:在Win11上搞定OMNeT++ 5.4.1、SUMO 0.30.0和Veins 4.7.1车联网仿真环境
  • 终极抖音下载指南:3分钟搞定无水印视频批量下载
  • DIY MIDI转CV接口:基于Arduino与MCP4728的模块合成器核心
  • 思科GRE隧道通了但业务不通?从抓包分析到故障排查的完整指南
  • 告别Xcode!用Homebrew在macOS上安装最新版GCC的保姆级教程(含环境变量配置)
  • 存储器层次结构——高速缓存存储器
  • 别再让电机乱转了!用Arduino Mega2560 + TB6612驱动MG513,手把手教你实现精准PWM调速与正反转控制
  • AI驱动网络安全实战:从威胁检测到自动化响应的架构与挑战
  • 语料蒸馏:从海量文档到结构化知识资产的工程实践
  • 从飞机上网到水下机器人:盘点LiFi(可见光通信)那些意想不到的硬核应用场景
  • 电阻式与电容式土壤湿度传感器对比:原理、校准与物联网应用实践
  • C/C++ 基础笔记(五)
  • SQL学习日志 Day_3 :(SELECT查询语句入门)