实践内容
1. Web前端HTML
- 安装与配置:能够正确安装和启停Apache服务器。
- HTML基础:深入理解HTML结构,包括表单的创建与使用。
- 表单与GET/POST:编写一个包含表单的HTML页面,了解GET与POST方法的不同之处。
安装相关软件、数据库、并注册为ses
编写html,这里使用去年网络攻防课程的源码
完成数据库创立
web后端 PHP
- 在/var/www/html文件夹下新建php文件
修改之前的html文件,使其点击登录按钮后能跳转到对应的php页面
在数据库中添加数据,做登陆测试
采用跳过验证的方式登录,或条件恒为真。
数据库有记录
采用跨站脚本攻击注入,上网搜索的注入代码
XSS注入攻击
2. Web前端JavaScript
- JavaScript基础:掌握JavaScript的基本语法和功能。
- DOM操作:理解并实践DOM(文档对象模型)的操作,包括获取和修改HTML元素。
- 表单验证:在HTML表单的基础上,使用JavaScript编写用户名和密码的验证逻辑。实现用户点击登录按钮后显示“欢迎+输入的用户名”的功能。
- 注入攻击尝试:了解并尝试使用注入攻击来测试网页的安全性,包括HTML和JavaScript注入。
3. Web后端1:MySQL基础
- 安装与配置:成功安装、启动MySQL数据库,并掌握基本的数据库操作。
- 用户与权限管理:创建数据库用户、修改密码,并为用户分配适当的权限。
- 建库与建表:根据需求创建数据库和表结构。
4. Web后端2:PHP与数据库连接
- PHP基础:编写PHP网页,实现与MySQL数据库的连接。
- 用户认证:在PHP网页中实现用户登录功能,包括用户数据的验证和存储。
5. 安全性测试
- SQL注入:了解SQL注入的原理和危害,尝试对PHP网页进行SQL注入攻击,并修复相关漏洞。
- XSS攻击:理解XSS攻击的原理,对网页进行XSS攻击测试,并修复潜在的安全隐患。
- CSRF攻击:了解CSRF攻击的原理,并尝试进行CSRF攻击测试,确保网站的安全性。
6. 安全实践平台
- WebGoat安装与使用:安装WebGoat或类似的安全实践平台,通过完成平台上的SQL注入、XSS、CSRF等攻击案例,深入理解这些攻击的原理和防御方法。
实践相关知识点
1. 表单
- 表单是网页中用于数据采集的重要组件,包含表单标签、表单域和表单按钮等部分。
2. SQL注入
- SQL注入攻击是通过向Web应用程序的输入字段中插入或“注入”恶意的SQL代码片段,从而在未经授权的情况下执行非法操作。
3. XSS攻击
- XSS攻击通过向网页中注入恶意脚本,当用户浏览网页时,这些脚本会在用户的浏览器中执行,从而窃取用户信息或执行其他恶意操作。
4. CSRF攻击
- CSRF攻击利用用户的登录状态,通过第三方站点向被攻击网站发送恶意请求,从而在用户不知情的情况下执行非法操作。
5. WebGoat
- WebGoat是一个基于Java的Web应用程序,旨在教授开发人员如何识别和防止Web应用程序中的安全漏洞。它提供了丰富的案例和场景,帮助用户深入了解各种Web安全威胁。
安装Webgoat或类似平台,并完成SQL注入、XSS、CSRF攻击
sql注入
webgoat->(A1)Injection->SQL Injection(advanced)->3
- 第一种 联合查询(union)注入
Name框输入:
下载webgoat,webgoat安装 首先需要配置JDK1.8,我们可以从oracle的官网进行下载,如下图所示,选择linux的x64版 本进行下载
Dave' union select userid, user_name, password, cookie, '5','6',7 from user_system_data—ss
- 第二种 堆叠注入(query chaining)
Name框输入:
1';select * from user_system_data-- ss
2.5.2 xss
webgoat->(A7)Cross-Site Scripting(XSS)->7
我们在输入框中输入一些代码,而浏览器又不会对用户输入做格式验证,因此就会导致浏览器执行非法代码,进而完成xss。
在密码框输入则失败
最后发现点击UpdateCart,下方将credit cart number显示出来了,那么用户名的输入框应该是一个攻击点。
csrf
webgoat->(A8:2013)->Crss-Site Request Forgeries
使用Burpsuite拦截请求
将请求发送到重发器并查看响应
删除请求中的Referer并且csrf = false,查看响应,成功获取flag
修改请求中的Host, 使得Host内容与Referer不同
输入flag,页面提示成功
问题1:我遇到了WebGoat和BurpSuite需要的Java版本不同,导致无法同时使用的问题。
解决方案:
-
使用虚拟机:
我决定创建一个虚拟机,并在该虚拟机中安装与WebGoat兼容的Java版本。这样,我就可以在虚拟机中运行WebGoat,而我的主机则可以继续使用与BurpSuite兼容的Java版本。 -
尝试Docker容器:
如果WebGoat支持Docker部署,我会考虑使用Docker来运行WebGoat,并指定所需的Java版本。Docker允许我在容器中隔离应用程序,避免与主机上的其他Java应用程序冲突。 -
安装Java版本管理器:
我可以使用如jenv
、sdkman
或AdoptOpenJDK
等工具来管理多个Java版本。这些工具允许我为每个项目或应用程序设置不同的Java版本。我可以在一个终端窗口中设置与WebGoat兼容的Java版本,然后在另一个终端窗口中设置与BurpSuite兼容的Java版本。 -
调整Java目录:
虽然这个解决方案可能稍显复杂,但我确实可以将WebGoat的jar包放到与其兼容的Java版本的目录中,并确保在启动WebGoat时使用正确的Java命令。
学习感悟
本次实验难度大,耗时长,感悟深刻!!!感谢王老师的指导教学!!!
通过这一系列的Web安全学习实验,我深感网络安全的重要性与复杂性。
以下是我个人的一些感悟:
-
基础知识的掌握:
在开始这些实验之前,我对Web开发的基础,如HTML、JavaScript、PHP以及MySQL只有浅薄的了解。通过亲手安装、配置Apache、MySQL,并编写简单的HTML表单和PHP页面,我深刻体会到了基础知识的重要性。没有扎实的基础,很难在后续的学习中有所突破。 -
安全意识的培养:
在编写JavaScript验证用户名、密码的规则,以及进行SQL注入和XSS攻击测试时,我意识到网络安全不仅仅是技术层面的问题,更是一种意识。一个小小的疏忽,比如没有对用户输入进行严格的验证,就可能导致整个系统被攻击者利用。这让我明白了在日常工作中,必须时刻保持警惕,严格遵守安全规范。 -
攻防思维的转换:
在进行SQL注入和XSS攻击测试时,我不仅要编写攻击代码,还要思考如何防御这些攻击。这种攻防思维的转换让我对网络安全有了更深入的理解。我明白了攻击和防御是相辅相成的,只有充分了解攻击方式,才能更好地进行防御。 -
实践出真知:
通过亲手在Webgoat平台上进行SQL注入、XSS、CSRF攻击实验,我深刻体会到了实践的重要性。理论知识虽然重要,但只有通过实践才能真正掌握。在实验中,我遇到了很多问题,但通过不断尝试和查找资料,我最终都找到了解决方法。这种解决问题的能力是我在学习中获得的宝贵财富。 -
持续学习的必要性:
网络安全是一个不断发展的领域,新的攻击方式和防御手段层出不穷。通过这次学习,我意识到只有不断学习、不断更新自己的知识库,才能跟上这个领域的步伐。我将继续深入学习网络安全知识,努力提高自己的技能水平。