20252907 2025-2026-2 《网络攻防实践》第十周作业
20252907 2025-2026-2 《网络攻防实践》第十周作业
1.实践内容
1.1 SEED SQL注入攻击与防御实验
我们已搭建并托管Web应用程序(地址:www.SEEDLabSQLInjection.com),该应用为简单员工管理系统,包含管理员(特权角色,可管理所有员工个人资料)和普通员工(仅可查看、更新自身个人资料)两种核心角色。实验需完成四项核心任务:一是熟悉SQL语句,通过操作Users数据库及其中的creditential表(存储员工eid、密码、薪水、ssn等个人信息),掌握SQL查询语法;二是实施SELECT语句SQL注入攻击,利用Web应用的SQL输入漏洞,在未知密码的情况下成功登录应用;三是实施UPDATE语句SQL注入攻击,通过员工个人信息更新界面,对UPDATE语句发起注入攻击;四是进行SQL注入防御,针对发现的漏洞完成修复,构建安全的SQL查询机制。
1.2 SEED XSS跨站脚本攻击实验(Elgg)
本实验基于预先配置的Ubuntu VM镜像中的Elgg Web应用程序,核心目标是利用Elgg存在的XSS漏洞实施攻击,最终实现XSS蠕虫传播,即任何查看受感染用户个人资料的用户都会被感染。实验需完成一系列攻击及防御任务:在个人Elgg配置文件中嵌入JavaScript程序,使其他用户查看时自动弹出警报窗口;通过恶意脚本弹窗显示用户Cookie信息,并将受害者的Cookie发送至攻击者指定地址实现窃取;借助JavaScript程序,无需受害者干预自动完成Elgg好友添加操作(需分析Elgg加好友流程);编写脚本使受害者访问Alice页面时,个人资料在无干预情况下被篡改;开发可自我传播的XSS蠕虫,实现恶意脚本在用户间自动扩散;最后针对Elgg的XSS漏洞部署防御措施,阻断攻击及蠕虫传播。
1.3 Web应用体系结构、安全威胁及信息收集
Web应用采用四层分层架构,从上至下依次为客户端(以浏览器为主)、Web服务器、应用服务器、数据库服务器,各层级协同完成用户请求处理与响应,核心流程为用户通过浏览器发起HTTP请求,经Web服务器转发至应用服务器处理业务逻辑并调用数据库,最终处理结果沿原路径返回并由浏览器呈现,该架构可隔离关注点、降低开发复杂度,便于分工与拓展。结合攻击目标与作用层面,Web应用安全威胁分为四类:应用层攻击(最普遍,针对应用逻辑漏洞,如SQL注入、XSS等,利用用户输入处理缺陷)、服务器攻击(针对Web服务器及中间件漏洞,获取权限或瘫痪服务)、数据层攻击(借助数据库漏洞或权限不当,窃取、篡改敏感数据)、客户端攻击(针对终端用户,通过钓鱼、恶意脚本等窃取会话信息)。信息收集是Web攻防首要环节,核心是获取目标应用相关信息,支撑后续漏洞挖掘与攻击实施,主要包括基础信息(域名、IP、端口、服务器及系统版本)、目录与文件(后台界面、备份文件等敏感路径)、应用信息(开发语言、CMS、数据库等技术栈),常用工具包括Nmap、DirBuster、Burp Suite、AWVS、Wappalyzer及Shodan、FOFA等辅助平台。
1.4 主流Web应用攻击技术
主流Web应用攻击技术以SQL注入和XSS跨站脚本攻击为主,两者核心原理、步骤、分类及危害各有侧重。SQL注入攻击的核心是Web应用未严格过滤用户输入,导致恶意输入被拼接至SQL查询语句并执行,针对开发者编程疏忽而非系统漏洞,攻击步骤为判断注入点、探测数据库结构、提取敏感数据、提升攻击权限,常见类型包括联合查询注入、报错注入、布尔盲注、时间盲注、堆叠查询及宽字节注入、二次注入等特殊类型。XSS跨站脚本攻击的核心是Web应用未有效过滤转义用户输入,导致恶意脚本(多为JavaScript,含HTML、CSS)嵌入网页,其他用户访问时脚本自动执行,本质是利用网页对用户输入的信任,分为反射型(非持久型,通过URL参数传入,单次生效)、存储型(持久型,存储至数据库,范围广、危害久)、DOM型(无需服务器交互,通过DOM解析触发)三类,主要危害包括窃取Cookie、会话劫持、钓鱼攻击、内网探测及传播XSS蠕虫等。
2.实践过程
2.1 创建环境
在百度网盘或者这个链接下载SEEDUbuntu-16.04-32bit.zip
https://seedsecuritylabs.org/lab_env.html
下载实验需要用到的SEEDUbuntu-16.04-32虚拟机资源,下.载完成后安装配置虚拟机,结束后启动新安装的SEED虚拟机.

创建新的虚拟机,选择磁盘位置为SEEDUbuntu-16.04-32bit.vmdk,成功安装!



修改主机名为自己姓名:

2.2 SEED SQL注入攻击与防御实验
2.2.1 熟悉SQL语句
打开虚拟机终端命令行,输入命令mysql -u root -p登录数据库,密码为seedubuntu

输入命令use Users切换到Users数据库,再输入命令show tables;查看数据库中所有的表

输入命令select * from credential;查询表项

输入条件,查询Name为‘Boby’的相关信息‘
select * from credential where Name = 'Boby';

2.2.2 对SELECT语句的SQL注入攻击:上述Web应用存在SQL输入漏洞,任务是在不知道密码的情况下登陆该Web应用程序。
浏览器打开www.SEEDLabSQLInjection.com网页。

按F12进入开发者模式,任意输入用户名和密码点击登录。发现登录过程中是使用 get请求访unsafe_home.php。

通过本地文件查看他的源码/var/www/SQLInjection/unsafe_edit_frontend.php。发现是直接将用户输入拼接到SQL语句中。这里存在典型的SQL注入漏洞。

当输入Admin'#作为用户名时,实际执行的SQL变为:SELECT ... FROM CREDENTIAL WHERE name='Admin'#'。也就是只要数据库中存在用户名为Admin的记录,攻击者即可绕过密码验证获取管理员权限。


2.2.3 对UPDATE语句的SQL注入攻击:通过员工的更新个人界面实施UPDATE语句的SQL注入攻击。
任意输入点击保存。发现登录过程中同样使用get请求访unsafe_edit_backend.php。

用终端打开vim /var/www/SQLInjection/unsafe_edit_backend.php查看页面源代码.观察代码可以发现查询语句回改变不应改变的字段的值,例如假设输入nickname字段为‘,Salary='1' where Name='Ryan';#,最终结果不该改变的salary值会被成功修改

打开Edit Profile页面,在nickname栏输入', Salary='20252907' where name='Ryan';#,点击Save后发现界面中的Salary项成功修改


2.2.4 SQL对抗:修复上述SQL注入攻击漏洞
这里unsafe_home.php文件默认为只读,因此要先修改unsafe_home.php文件权限为可以编辑

修改unsafe_home.php中的内容
$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注入漏洞。输入Admin’#发现不能成功登录了,说明漏洞修复成功。


2.3 SEED XSS跨站脚本攻击实验、
2.3.1 发布恶意消息,显示报警窗口
在浏览器中访问 http://www.xsslabelgg.com,并登录Alice的账号(使用账号:Alice,密码:seedalice 进行登录)


点击Alice头像进入主页,再选择 Edit profile,最后在 Brief description中输入XSS攻击代码 。

输入:<script>alert("20252907zyx");</script>

点击保存,发现弹出xss警告弹窗。

2.3.2 弹窗显示cookie信息:将cookie信息显示。
将Brief description中的信息更改,点击保存则可以弹出cookie信息。
<script> alert(document.cookie);</script>


2.3.3 窃取受害者的cookies:将cookie发送给攻击者
打开终端命令行输入ifconfig查看本机ip地址为192.168.200.10

将Brief description处的内容换成

打开命令行输入命令nc -l 5555监听5555端口,之后只要有用户访问Alice的主页,netcat就会接收到该用户的cookie

2.3.4 成为受害者朋友
使用Alice的账户访问Boby的主页,打开开发者工具,点击添加好友这一按钮,下方显示请求代码,说明要发送一个附带id时间戳与token三个参数的请求


再回到Alice主页中的Edit profile处,在about me模块中加入如下代码

点击保存后回到主页发现已经自动添加Boby为好友

退出Alice账户后回到主页显示的最近活动中记录了Boby成为Alice好友这一信息

2.3.5 修改受害者信息
在alice账户的about me中填写,并保存。
获取当前登录用户的身份信息、安全令牌,构造篡改个人资料的请求,自动悄悄发送请求,把用户简介改成:I am 20252907zyx.
构造修改信息xss攻击代码,并输入Alice中about me中edit HTML模式:

Boby访问Alice之后,发现Boby主页个人信息已经被强制更改

2.3.5 修改受害者信息
在alice账户的about me中填写,并保存
下面一段XSS蠕虫病毒代码,不仅会偷偷篡改个人资料,还会把自身代码复制到个人简介里,实现自我复制、无限传播,访问者打开页面就会中招。
回到Alice主页中的Edit profile处,在about me模块中加入如下代码

登录Boby账户

点击Alice主页

登录Boby账户并访Aalice主页后,可以看到个人信息已经被强制修改

2.3.7 对抗xss攻击
登录admin账号(账号Admin,密码seedelgg),链接为www.xsslabelgg.com/admin,“plugin”——>“HTMLawed” ——>改为"Deactivate"


重新模拟XSS攻击后发现攻击失败

3.学习中遇到的问题及解决
问题一:解决粘贴问题
问题一解决方案:
虚拟机里面不能粘贴本机的剪切板信息,安装vm tools也没有成功
解决方案:最后选择共享文件夹成功实现。
sudo mkdir -p /zyx/temp
nautilus /zyx/temp
sudo vmhgfs-fuse .host:/temp /zyx/temp -o allow_other
cd /zyx/temp
ls


问题二:unsafe_home.php文件不能编辑
问题二解决方案:chmod u+w 授权即可
4.实践总结
完成第十周 Web 应用攻防实验后,我收获满满,也真切体会到网络攻防实践的严谨性和实操难度。本次实验主要围绕 SQL 注入与 XSS 跨站脚本攻击展开实操,整个过程既有攻破漏洞时的成就感,也在不断踩坑、排错中积累了经验。在 SQL 注入实验中,我先熟悉数据库表结构、探测注入点漏洞,通过构造Admin'#恶意语句成功绕过登录验证,还利用 UPDATE 语句篡改管理员账号信息,切实感受到网站若未做用户输入过滤,会留下极大的安全隐患。在 XSS 跨站脚本实验里,我从简单嵌入弹窗脚本、窃取用户 Cookie 入手,进一步尝试编写脚本实现自动添加好友、篡改受害者资料;实操中还因混淆用户 GUID 出现逻辑错误,不小心改动了自己的账号资料,经过反复调试修改才把问题解决。实验初期我还遇到虚拟机无法粘贴内容、共享文件夹挂载失败等问题,通过查阅相关资料、重装配套工具,借助 vmhgfs-fuse 命令顺利搭建文件共享环境,扫清了实验障碍。经过这次完整的 Web 攻防实践,我不仅系统掌握了 SQL 注入和 XSS 攻击的底层原理与实操流程,直观了解了恶意脚本的传播危害,更深刻意识到开发环节的一处细小疏忽,都可能演变为致命安全漏洞。同时也让我明白,网络安全需要攻防并重、主动做好漏洞防护,在提升自身实操能力和问题排查能力的同时,也看清了日常网页浏览中潜藏的安全风险,由衷感受到 IT 开发者在维护网络环境、守护网民安全上网方面的重要价值。

浙公网安备 33010602011771号