20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告

20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告

文章目录

  • 20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告
    • 1.实验内容
    • 2.实验过程
      • 2.1 Web前端HTML
        • 2.1.1 正常安装、启停Apache
        • 2.1.2 编写一个含有表单的HTML
      • 2.2 Web前端javascipt
        • 2.2.1 基本概念
        • 2.2.2 编写Javascript
        • 2.2.3 尝试注入攻击
      • 2.3 Web后端MySQL基础
        • 2.3.1 正常安装、启动MySQL、修改密码
        • 2.3.2 建库、创建用户、建表
      • 2.4 Web后端:编写PHP网页,连接数据库,进行用户认证
      • 2.5 最简单的SQL注入,XSS攻击测试
        • 2.5.1 SQL注入
        • 2.5.1 XSS攻击
      • 2.6 安装Webgoat或类似平台,并完成SQL注入、XSS、CSRF攻击
        • 2.6.1 安装Webgoat
        • 2.6.2 SQL注入攻击
        • 2.6.3 XSS攻击
        • 2.6.4 CSRF攻击
    • 3.问题及解决方案
    • 4.学习感悟、思考等

1.实验内容

  1. Web前端HTML
    能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
  2. Web前端javascipt
    理解JavaScript的基本功能,理解DOM。
    在 1 的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”
    尝试注入攻击:利用回显用户名注入HTML及JavaScript。
  3. Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
  4. Web后端:编写PHP网页,连接数据库,进行用户认证
  5. 最简单的SQL注入,XSS攻击测试
  6. 安装Webgoat或类似平台,并完成SQL注入、XSS、CSRF攻击。

2.实验过程

2.1 Web前端HTML

2.1.1 正常安装、启停Apache
systemctl start apache2  #开启Apache服务
systemctl stop apache2  #关闭Apache服务

开启Apache服务后,打开浏览器,输入网址http://127.0.0.1(不能是https),显示如下页面即成功开启Apache服务。
20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第1张图片

2.1.2 编写一个含有表单的HTML
  1. HTML
    HTML(超文本标记语言),是一种用来结构化 Web 网页及其内容的标记语言。HTML 由一系列的元素组成,这些元素可以用来包围不同部分的内容,使其以某种方式呈现或者工作。HTML文本是由 HTML命令组成的描述性文本,HTML命令可以说明文字、 图形、动画、声音、表格、链接等。HTML的结构包括头部 、主体两大部分。头部描述浏览器所需的信息,主体包含所要说明的具体内容。

  2. 表单
    表单是一种用户界面,用于收集和提交数据。表单通常包含多个字段和文本框,用于输入各种信息,也可以有各种不同的控件。

  3. GET与POST方法
    在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。
    GET :从指定的资源请求数据。
    POST : 向指定的资源提交要被处理的数据。
    GET 提交参数一般显示在 URL 上,POST 通过表单提交不会显示在 URL 上,POST 更具隐蔽性。
    20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第2张图片

  4. 编写一个含有表单的HTML

  • vi /var/www/html/20202410.html 创建一个有表单的HTML
vi /var/www/html/20202410.html
<html>
<head> 
<title>20202410wyy</title> 
</head>
<body>
<h1 align="center">用户登录</h1> 
<meta http-equiv="Content-Type" charset="utf-8">
<center>
<form action="" target="_blank" method="POST">
  <label for="fname">账号:</label><br>
  <input type="text" id="username" name="username" ><br>
  <label for="lname">密码:</label><br>
  <input type="password" id="password" name="password"><br><br>
  <input type="submit" value="登录">
</form>
</center>
</body>
</html>

20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第3张图片

  • 在浏览器中访问127.0.0.1/20202410.html

20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第4张图片

2.2 Web前端javascipt

2.2.1 基本概念
  1. Javascript
    JavaScript是一种解释型或即时编译型的高级编程语言,虽然是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。
    JavaScript是全世界通用且应用最为广泛的客户端脚本语言,几乎市面上绝大部分的网站、APP的客户端脚本都是用JS写的,拥有绝对的垄断地位
  2. DOM
    文档对象模型 (DOM) 是 HTML 和 XML 文档的编程接口。它提供了对文档的结构化的表述,并定义了一种方式可以使从程序中对该结构进行访问,从而改变文档的结构,样式和内容。DOM 将文档解析为一个由节点和对象(包含属性和方法的对象)组成的结构集合。简言之,它会将 web 页面和脚本或程序语言连接起来。
2.2.2 编写Javascript
  1. 在20202410.html中加入Javascript的代码,可以判断账号与密码是否为空。
<script type="text/javascript">
      function checked()
      {
          var user= document.forms["form1"]["username"].value;
          var pd=document.forms["form1"]["password"].value;
      if(user == "" || pd=="")
      {
if(user==''){
alert("用户名不能为空!");
          return false;
}
else if(pd == "" || pd==NULL)
      {
          alert("密码不能为空!");
          return false;
      }
      }
      
      }
</script>

20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第5张图片
2. 编写action_page.php,用于在用户点击登陆按钮后回显“欢迎+输入的用户名”。

<!DOCTYPE html>

<head>
    <meta charset="UTF-8">
    <title>Welcome!</title>
</head>
<body>
<h1 align="center">欢迎!<?php echo $_POST['username'];?></h1>
</body>
</html>

  1. 修改form
<form name="form1" action="action_page.php" method="POST" onsubmit="return checked()">
  1. 测试登录页面
    20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第6张图片
    20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第7张图片
    20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第8张图片
2.2.3 尝试注入攻击
 <script type="text/javascript"> alert("JavaScript注入攻击20202410") </script>   #JavaScript注入

20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第9张图片

2.3 Web后端MySQL基础

2.3.1 正常安装、启动MySQL、修改密码
service mysql start  #开启MySQL服务
mysql -u root -p  #使用root权限进入,默认的密码是password
show databases;  #查看数据库基本信息
use mysql;  #选择使用mysql数据库
select user, password, host from user;  #查看当前用户信息
set password for root@'localhost'= password(‘20202410’);  #修改密码
select user, password, host from user;  #查看当前用户信息,可以看到密码序列发生变化,密码修改成功
flush privileges;  #更新权限
quit  #退出数据库,使用新的密码登录

20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第10张图片
在这里插入图片描述
20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第11张图片
在这里插入图片描述
20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第12张图片

2.3.2 建库、创建用户、建表
create database wyy;  #建立数据库
use wyy;  #使用新建的wyy数据库
create table login (username VARCHAR(20),password VARCHAR(20));  #建立数据库表login,设置字段基本信息(username和password)
insert into login values('wenyinying','2410');  #插入数据
insert into login values('wyy','20202410');  #插入数据
grant select,insert,update,delete on wyy.* to wenyinying@localhost identified by "kali";
#在MySQL中增加新用户,使用grant select,insert,update,delete on 数据库.* to 用户名@登录主机(可以是localhost,也可以是远程登录方式的IP) identified by "密码";指令,这句话的意思是:将对某数据库的所有表的select,insert,update,delete权限授予当前主机localhost登录的用户wenyinying,kali是登录密码
mysql -u wenyinying -p  #exit退出后使用新的用户名和密码进行登录

在这里插入图片描述
20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第13张图片
在这里插入图片描述
20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第14张图片

2.4 Web后端:编写PHP网页,连接数据库,进行用户认证

  1. 编写login.php
<?php
$uname=$_POST["Email"];
$pwd=$_POST["Password"];
echo $uname;
$query_str="SELECT * FROM login where username='$uname' and password='$pwd';";
$mysqli = new mysqli("127.0.0.1", "wenyinying", "kali", "wyy");
$query_str1="use wyy;";

/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}
echo " Successfully connected!";
/* Select queries return a resultset */
if ($result = $mysqli->query($query_str1))
echo"
Success into database!"
; echo$uname; if ($result = $mysqli->query($query_str)) { if ($result->num_rows > 0 ){ echo "
{$uname}:Welcome!
"
; } else { echo "
Login Fail!
"
; } /* free result set */ $result->close(); } $mysqli->close(); ?>
  1. 修改form
<form name="form1" action="login.php" method="POST" onsubmit="return checked()">
  1. 登录页面进行测试
  • 输入正确账号和密码时:
    20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第15张图片
  • 输入错误账号和密码时:
    20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第16张图片

2.5 最简单的SQL注入,XSS攻击测试

2.5.1 SQL注入
' or 1=1#

输入的用户名和代码中select语句组合起来变成了
SELECT * FROM login where username=' ' or 1=1# and password=' ';
#为注释符,即把后面的内容都注释掉了,由于1=1是永真式 ,所以这个条件永远成立,所以不管密码是否输入正确,都能够成功登陆

20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第17张图片

2.5.1 XSS攻击
<script> alert("来自20202410的XSS攻击") </script>	

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、 LiveScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

此处使用反射型XSS,只是简单的把用户输入的数据从服务器反射给用户浏览器,要利用这个漏洞,攻击者必须以某种方式诱导用户访问一个精心设计的URL(恶意链接),才能实施攻击。
20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第18张图片

20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第19张图片

2.6 安装Webgoat或类似平台,并完成SQL注入、XSS、CSRF攻击

2.6.1 安装Webgoat
  1. 下载链接,下载完成后输入 java -jar Webgoat-2023.4.jar进行解压。
  2. 浏览器通过http://localhost:8080/WebGoat进入WebGoat,进行注册,完成后会跳出如下页面,即可使用。
    20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第20张图片
2.6.2 SQL注入攻击
  1. SQL injection
    找到SQL Injection(Intro),选择9号。
    选择Smith or '1'='1,获得数据。

构造1=1永真式。

20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第21张图片

  1. Numeric SQL injection
    选择10号。
    填入1=11 or 1=1

构造1=1永真式。

20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第22张图片

2.6.3 XSS攻击
  1. Reflected XSS
    找到Cross Site Sorpting,选择7号。
    输入

20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第23张图片

  1. DOM-Based XSS
    选择10号。
    在空栏处输入start.mvc#test/

提示“The ‘base route’ in this case is: start.mvc#lesson”,打开js文件,可以看到“‘test/:param’: ‘testRoute’”,故输入“start.mvc#test/”。

20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第24张图片
20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第25张图片

2.6.4 CSRF攻击

CSRF(跨站请求伪造攻击),是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。

  1. 找到Site Request Forgeries,选择3号。
    点击Submit Query按钮,发现flag值为null。
    20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第26张图片
  2. 查看Submit Query按钮部分的html代码。
    20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第27张图片
  3. 新建一个html文件,将Submit Query按钮部分的html代码复制进去,修改action部分。
    20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第28张图片
  4. 参照2.1,打开页面。
    20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第29张图片
  5. 点击Submit Query按钮,发现flag值为3514。
    20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第30张图片
  6. 输入3524,攻击成功。
    20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第31张图片

3.问题及解决方案

  • 问题1:开启Apache服务后,浏览器直接输入127.0.0.1,无法成功进入Apache网页。
    20202410 2022-2023-2 《网络与系统攻防技术》实验八实验报告_第32张图片

  • 问题1解决方案:Firefox默认使用https,所以此时跳转地址为https://127.0.0.1,应为http://127.0.0.1。

  • 问题2:我先在主机里创建了html文件和php文件进行调试,在做2.2.2时总无法正常提示账户和密码不能为空。

  • 问题2解决方案:检查代码无误后尝试在kali里运行,没有出现问题。可能是环境的原因。

4.学习感悟、思考等

这次实验在Linux下编写了前端和后端,搭建了一个比较简单的网页,并对此进行一些简单攻击。同时接触了用来说明WEB应用中存在的安全漏洞的靶场WebGoat,在其中尝试了SQL注入、XSS攻击和CSRF攻击。本次实验类似于在实际情况下对一些防护不到位的网站进行攻击,在实践中增强网络安全意识,同时警醒我们牢记法律,不要在底线上试探。

你可能感兴趣的:(网络,apache)