20242816 2024-2025-2 《网络攻防实践》第10次作业

20242816 2024-2025-2 《网络攻防实践》第10次作业

1 实践内容

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

我们已经创建了一个Web应用程序,并将其托管在 三达不溜.SEEDLabSQLInjection.com。该Web应用程序是一个简单的员工管理应用程序。员工可以通过此Web应用程序查看和更新数据库中的个人信息。此Web应用程序主要有两个角色:管理员是特权角色,可以管理每个员工的个人资料信息。员工是一般角色,可以查看或更新自己的个人资料信息。完成以下任务:
①熟悉SQL语句: 我们已经创建了一个名为Users的数据库,其中包含一个名为creditential的表。该表存储了每个员工的个人信息(例如,eid,密码,薪水,ssn等)。在此任务中,您需要使用数据库来熟悉SQL查询。
②对SELECT语句的SQL注入攻击:上述Web应用存在SQL输入漏洞,任务是在不知道密码的情况下登陆该Web应用程序。
③对UPDATE语句的SQL注入攻击:通过员工的更新个人界面实施UPDATE语句的SQL注入攻击。
④SQL对抗:修复上述SQL注入攻击漏洞。

1.2 SEED XSS跨站脚本攻击实验(Elgg)

为了演示攻击者可以利用XSS漏洞做什么,我们在预先构建的Ubuntu VM映像中设置了一个名为Elgg的Web应用程序。在本实验中,学生需要利用此漏洞对经过修改的Elgg发起XSS攻击,攻击的最终目的是在用户之间传播XSS蠕虫,这样,无论是谁查看的受感染用户个人资料都将被感染。
①发布恶意消息,显示警报窗口:在您的Elgg配置文件中嵌入一个JavaScript程序,以便当另一个用户查看您的配置文件时,将执行JavaScript程序并显示一个警报窗口。
②弹窗显示cookie信息:将cookie信息显示。
③窃取受害者的cookies:将cookie发送给攻击者。
④成为受害者的朋友:使用js程序加受害者为朋友,无需受害者干预,使用相关的工具了解Elgg加好友的过程。
⑤修改受害者的信息:使用js程序使得受害者在访问Alice的页面时,资料无需干预却被修改。
⑥编写XSS蠕虫。
⑦对抗XSS攻击。

1.3 基础知识

SQL攻击:

SQL注入攻击是一种常见的网络安全攻击方式,攻击者通过在用户输入中嵌入恶意SQL语句,诱使后台数据库执行非法操作,从而获取、篡改或删除数据库中的敏感数据,可能绕过身份验证,直接访问系统。SQL注入常见于输入未经过严格过滤或转义的Web应用中。为了防止此类攻击,开发者应使用参数化查询、预编译语句,并严格验证用户输入。

XSS攻击:

XSS攻击是一种常见的网页安全漏洞,攻击者通过向网站注入恶意脚本代码,使得当其他用户浏览受影响页面时,该脚本会在用户浏览器中执行,从而达到窃取用户信息、劫持会话、伪造操作等目的。XSS攻击主要分为三种类型:反射型(通过URL传递)、存储型(将恶意脚本存储在数据库或页面中)、DOM型(基于前端JavaScript处理造成的漏洞)。XSS攻击的本质是网站对用户输入缺乏足够的过滤和转义。为了防范XSS,应对用户输入进行严格的输入校验和输出编码,避免直接将用户输入的数据嵌入HTML、JavaScript中。

2 实践过程

2.1 环境配置

2.1.1 下载seedubuntu-16.04版本

2.1.2 安装新的虚拟机


2.1.3 更改主机名

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

2.2.1 输入sudo service apache2 status 开启apache服务

2.2.2 输入mysql -u root -pseedubuntu 登录MySQL数据库

2.2.3 输入show databases; 查看mysql中已有的数据库

2.2.4 输入use Users; 和 show tables;进行切换数据库,并在查看Users数据库

2.2.5 输入select * from credential; 查看credential中所有记录

2.2.6 输入select * from credential where Name = 'Ted'; 查询Name为Ted的相关记录

2.2.7 在浏览器中输入www.SEEDLabSQLInjection.com 进入网页

2.2.8 选择view page source查看网页源码,发现登陆的表单中使用 get 方法访问 unsafe_home.php,

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



可以看到,该程序针对admin和普通用户具有不同的处理方法

2.2.10 因此,我们可以构造 Admin'#,这样会使得#后的Password判断不会执行,通过这样的方法我们便可以在不知道密码的情况下以admin用户进行登录


可以看到登录成功

2.2.11 查看 Edit_Profile 页面的源代码,可以看到表单依旧是以 get 方式将数据发到 unsafe_edit_backend.php 页面


2.2.12 同样查看 unsafe_edit_backend.php页面,其地址为/var/www/SQLInjection/unsafe_edit_backend.php

2.2.13 构造 $input_nickname 的值来进行SQL注入攻击。使 $input_nickname 的值等于 ', Salary='20242816' where name='Admin';


2.2.14 对unsafe_home.php文件中更改sql语句

$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);

2.2.15 对unsafe_edit_backend.php更改sql语句

$sql = $conn->prepare("UPDATE credential SET nickname=?,email=?,address=?,PhoneNumber=? where ID=$id;");
$sql->bind_param("ssss", $input_nickname, $input_email,$input_address, $input_phonenumber);

2.3 实验二 XSS跨站脚本攻击实验

2.3.1 在浏览器中访问 http://www.xsslabelgg.com

2.3.2 使用账号:Alice,密码:seedalice 进行登录

2.3.3 点击Alice头像进入主页,再选择 Edit profile

2.3.4 在 Brief description中输入XSS攻击代码,保存看到弹窗


2.3.5 将Brief description处的内容换成,再次保存提交,得到网页的cookie

2.3.6 要通过反射式的XSS来远程获取cookie,先输入ifconfig查看本机ip,ip为192.168.200.10

2.3.7 据seed的IP地址构造xss攻击代码,依旧是在Brief description 中输入代码

2.3.8 输入 nc -l 5555 监听5555端口

2.3.9 将鼠标悬停在boby主页的add friend上,可以看到下方有一个请求代码。这说明了要向http://www.xsslabelgg.com/action/friends/add发送一个请求,并且附带了id,时间戳和token三个参数

2.3.10 我们继续来到Alice的edit profile处,在edit html模式下往about me中填写如下代码:

2.3.11 切换到boby账户,可以看到还没有friend

2.3.12 点击Alice头像,访问其主页

2.3.13 可以看到自动加了好友

2.3.14 在Alice的edit profile处,在edit html模式下往about me中填写如下代码:

2.3.15 切换Boby用户访问Alice主页,可以看到boy主页信息被修改

2.3.16 再切换回Alice账户,在Alice的edit profile处,在edit html模式下往about me中填写如下代码:

2.3.17 用Boby账户访问Alice主页,发现about me部分被强制修改、

2.3.18 切换Samy账号,访问已被感染的Boby的主页


2.3.19 回到主页可以看到被传染了

2.3.20 登录Admin账号

2.3.21 找到Account->Administration->plugins

2.3.22 找到插件 HTMLawed ,将其关闭,设为 Deactivate 状态

2.3.23 再次登录Boby账号,发现攻击失效

3 学习中遇到的问题及解决

问题一:无法访问http://www.xsslabelgg.com网站

解决:修改网络适配器为桥接模式就可以访问

4 实践总结

在本次实验中,我了解了SQL注入与XSS攻击的攻击方式以及基础逻辑,同时也认识到了蠕虫病毒传染性的可怕,即使是简单的网页文本框,通过特定的代码也可以进行网络攻击。让我意识到网络安全的重要性,我们要加强防火墙,及时更新漏洞补丁,保护自身源代码,保护我们主机的安全,防止被黑客攻击,让我更深刻意识到网络安全的重要性。

5 参考文献

https://bbs.csdn.net/topics/618742013?spm=1001.2014.3001.6377

posted @ 2025-05-19 11:24  N0rmally  阅读(31)  评论(0)    收藏  举报