20184328yh 《网络对抗技术》实验八:web综合

《网络对抗技术》实验八:web综合

20184328yh

目录


一、实践目标

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.Web

1.1 Web前端HTML

  • kali默认已安装Apache,输入service apache2 start命令打开Apache服务,输入netstat -aptn查看端口信息,如果80端口被Apache2监听,则启动成功。

  • 浏览器打开127.0.0.1,可正常打开Apache介绍网页,则开启成功。

  • 终端输入 cd /var/www/html 进入Apache目录下,新建一个简单的含有表单的html文件

  • 编辑其中的内容

  •  在网页中输入/var/www/html/4328.html,显示一个网页表单

 1.2 Web前端 :javascript

  • 添加一段JavaScript代码,以完成对用户是否填写账号和密码的判断,在用户点击登陆按钮后回显“欢迎+输入的用户名”
  •  效果如下

 

 1.3 Web后端 :MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表

  • 输入 service mysql start开启MySQL服务
    输入sudo mysql -u root -p使用mysql,默认密码是password

  •  用show databases;查看数据库基本信息

  •  输入use mysql;选择使用mysql这个数据库

 

  • 输入select user, password, host from user;查看当前用户信息

  • 输入set password for root@'localhost'=password('20184328');,修改密码

  • 输入flush privileges;,更新权限

  • 输入exit退出数据库,使用新的密码登录

  •  用新用户登录

  •  输入create database YH;创建一个新的数据库YH,创建好之后查看一下

  •  使用use YH;使用我们创建的数据库

  •  输入create table login(username VARCHAR(20),password VARCHAR(20));建立数据库表login,并设置字段基本信息

  •  使用show tables;查看表信息

  •  使用insert into 表名 values('值1','值2','值3'...);插入数据;   insert into login values ('20184328@qq.com', '20184328');

  •   输入select * from login;查询表中的数据

  •  在MySQL中增加新用户,输入grant select,insert,update,delete on YH.* to yuhao@localhost identified by "20184328"; 命令在MySQL中增加新用户,这句话的意思是将对YH数据库的所有表的select,insert,update,delete权限授予当前主机localhost登录的用户yuhao,20184328是登录密码。

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

  • 在/var/www/html目录下新建一个PHP测试文件phptest.php
  • 1 <?php
    2 echo ($_GET["a"]);
    3 include($_GET["a"]);
    4 echo "Hello word! This is my php test page!<br>";
    5 ?>

  • 还可以在浏览器网址栏中输入localhost:80/phptest.php?a=/etc/passwd,可看到/etc/passwd文件的内容

  • 利用PHP和MySQL,编写login.php
  •  1 <?php
     2 $uname=$_POST["Email"];
     3 $pwd=$_POST["Password"];
     4 echo $uname;
     5 $query_str="SELECT * FROM login where username='$uname' and password='$pwd';";
     6 $mysqli = new mysqli("127.0.0.1", "yuhao", "20184328", "YH");
     7 $query_str1="use YH;";
     8  
     9 /* check connection */
    10 if ($mysqli->connect_errno) {
    11     printf("Connect failed: %s\n", $mysqli->connect_error);
    12     exit();
    13 }
    14 echo "connection ok!";
    15 /* Select queries return a resultset */
    16 if ($result = $mysqli->query($query_str1))
    17 echo"<br>Success into database!";
    18 echo$uname;
    19 if ($result = $mysqli->query($query_str)) {
    20     if ($result->num_rows > 0 ){
    21             echo "<br> {$uname}:Welcome!!! <br> ";
    22     }
    23     else {
    24         echo "<br> login failed!!!! <br> " ; }
    25     /* free result set */
    26     $result->close();
    27 }
    28 $mysqli->close();
    29 ?>
  • 修改20184328.html中的action设为login.php,在浏览器中输入127.0.0.1/login.php直接跳转到login.php 界面

  •  在浏览器中输入127.0.0.1/login.php直接跳转到login.php 界面,连接成功如下图,但是由于没有输入登录信息,因此查询失败

  • 利用PHP和MySQL,结合之前编写的登录网页进行登录身份认证,在浏览器输入127.0.0.1/20184328.html访问自己的登录界面,输入用户名和密码进行认证,成功登陆如下图

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

2.1SQL注入

  • 在用户名输入框输入' or 1=1#,密码任意,可登陆成功

 2.2xss攻击

  • 将一张图片放在/var/www/html目录下,在用户名输入框输入<img src="yh.jpg" />,密码任意,就能够读取图片

 3.选做Webgoat或类似平台的SQL注入、XSS、CSRF攻击各一例

  • 配置环境
    • 下载webgoat-container-7.0.1-war-exec.jar
    • 开启WebGoat: java -jar webgoat-container-7.0.1-war-exec.jar 
    • 打开浏览器,输入 localhost:8080/WebGoat 
    • 登录使用默认的账号密码就可以,但会发现左侧并未出现课程
    • 因为编译后的java程序与kali上的java Se版本不一致,所以需要安装对应的JDK,参考这篇简书
  • webgoa

WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。

WebGoat运行在带有java虚拟机的平台之上,目前提供的训练课程有很多,包含XSS、线程安全、SQL注入、访问控制、隐藏字段、Cookie等。

整合了一系列攻击方式教学,方便快捷,具有较高的实用性,能够帮助新手快速学习掌握基本攻击方式和手段

  • 安装,下载webgoat-container-7.0.1-war-exec.jar ,下载链接https://github.com/WebGoat/WebGoat/releases/tag/7.0.1,移动到kali中,右键点击提取解压到文件夹中。

  • 在命令行输入java -jar webgoat-container-7.0.1-war-exec.jar运行Webgoat ,等待一小会后出现如下提示则运行成功。

  • 在浏览器中输入http://localhost:8080/WebGoat 进入WebGoat登录界面

3.1SQL注入攻击

注入攻击是攻击者通过Web应用传播恶意的代码到其他的系统上。这些攻击包括系统调用(通过shell命令调用外部程序)和后台数据库调用(通过SQL注入)一些设计上有缺陷的Web应用中的Perl,python和其他语言写的脚本(script)可能被恶意代码注入和执行。任何使用解释执行的Web应用都有被攻击的危险。
原理:SQL注入是一种广泛使用的危险度极高的注入攻击方式。要使用这种攻击方式,攻击者必须找到Web应用传递给数据库的参数。通过把恶意的SQL命令嵌入参数中,攻击者可以让Web应用把这些查询发送到数据库中。发现这些攻击和系统漏洞并不难。但是攻击产生的后果却相当致命,攻击者可以得到,破坏或者摧毁你所有数据库的内容。

  • 日志欺骗(Log Spoofing)
  • 概念:通过在日志文件中插入脚本实现欺骗。
  • 原理:在日志文件中愚弄人的眼睛,攻击者可以利用这种方式清除他们在日志中的痕迹
  • 目标:灰色区域代表在 Web 服务器的日志中的记录的内容,我们的目的是使用户名为“admin”的用户在日志中显示“成功登录”
  • 操作方法
    • 前提:本题目接受用户输入的任何一个用户名,并将其追加到日志文件中。

    • 利用入回车(0D%)和换行符(%0A),在 username 中填入 wr%0d%0aLogin Succeeded for username: admin

 3.2XXS

跨站脚本攻击是通过HTML注入劫持用户的浏览器,任意构造用户当前浏览的HTML内容,可以模拟用户当前的操作。这里实验的是一种获取用户名和密码的攻击。

  • 存储型XSS攻击(Stored XSS Attacks)
  • 原理:这种攻击常见于论坛等留言平台,用户留言的时候输入一段JavaScript脚本,这段脚本就会被保存在数据库中。因为是留言,所以任何用户在打开网页的时候,这个脚本就会被从数据库中取出来而运行。
  • 目标:写入非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容
  • 操作方法:
    • 在title中任意输入字符,留言板中输入 <script>alert("I am YH. You've been attacked!!!");</script>

 3.3CSRF

跨站请求伪造,尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

原理及过程如下:

       1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;

       2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;

       3. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;

       4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;

  • 目标:向新闻组发送一封email。这个email包含一个image,其URL指向一个恶意请求。URL应该指向“攻击”servlet,其中包含“屏幕”和“菜单”参数,以及一个额外的参数“transferFunds”,其数值为5000。可以通过在右侧插入的参数中找到“Screen”和“menu”值来构造链接。当经过身份验证的CSRF电子邮件的收件人将被转移他们的资金。
  • 操作方法
    • 在title中输入任何参数,message框中输入<img src="http://localhost:8080/WebGoat/attack?Screen=&menu=900&transferFunds=104"/>,以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件,点击 Submit 提交
    • 在Message List中生成以Title命名的消息。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。可以从左侧的任务栏看到任务已完成。


 三、基础问题回答

(1)什么是表单 ?

表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域、下拉列表、单选框、复选框等等)输入信息的元素,表单在网页中主要负责数据采集功能,一个表单有三个基本组成部分:表单标签、表单域、表单按钮。

(2)浏览器可以解析运行什么语言?

支持HTML(超文本标记语言)、XML(可扩展标记语言)以及Python、PHP、JavaScript、ASP等众多脚本语言。

(3)WebServer支持哪些动态语言?

JavaScript、ASP、PHP、Ruby等脚本语言,ASP基于IIS WEB SERVER,是微软的服务器端脚本技术,PHP基于APACHE WEB SERVER,与ASP有几分类似,都是一种在服务器端执行的嵌入HTML文档的脚本语言。 

(4) 防范注入攻击的方法有哪些?

 1、普通用户与系统管理员用户的权限严格区分。
     对于终端用户,即应用软件的使用者,没有必要给他们数据库对象的建立、删除等权限。那么即使在他们使用SQL语句中带有嵌入式的恶意代码,由于其用户权限的限制,这些代码也将无法被执行。
2、使用参数化语句。
     在编写SQL语句的时候,用户输入的变量不是直接嵌入到SQL语句。而是通过参数来传递这个变量的话,那么就可以有效的防治SQL注入式攻击。
3、使用SQL Server数据库自带的安全参数。
     为了减少注入式攻击对于SQL Server数据库的不良影响,在SQLServer数据库专门设计了相对安全的SQL参数。在数据库设计过程中,工程师要尽量采用这些参数来杜绝恶意的SQL注入式攻击。
4、可以使用专业的漏洞扫描工具来寻找可能被攻击的点。
     使用专业的漏洞扫描工具,可以帮助寻找可能被SQL注入式攻击的点。凭借专业的工具,可以帮助管理员发现SQL注入式漏洞,并提醒管理员采取积极的措施来预防SQL注入式攻击。


四、实践总结与体会

 本次实验由浅入深,先通过学习web服务前端后端的基本表单传递操作,再到体会数据库注入语句简单的数据库入侵操作,为后续在搭建好的平台进行实验进行了铺垫,最后在WebGoat进行了SQL注入攻击、XSS跨站脚本攻击、CSRF跨站请求伪造攻击等相关的操作,作为网络对抗课程的最后一次实验,回顾开学初第一次使用Linux到现在对于网络对抗技术有一定的理解,的确学习到了不少知识,虽说这一个学期的实验碰到了不少的问题,但是每一次解决问题对自己来说都是一次成长。


 

posted @ 2021-05-30 21:21  20184328  阅读(105)  评论(0编辑  收藏  举报