20222312 2024-2025-2 《网络与系统攻防技术》实验八实验报告

1.实验内容
1.1Web前端HTML
能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。

1.2Web前端javascipt
理解JavaScript的基本功能,理解DOM。
在1.1的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”
尝试注入攻击:利用回显用户名注入HTML及JavaScript。

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

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

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

1.6安装Webgoat或类似平台,并完成SQL注入、XSS、CSRF攻击。
2.实验过程
2.1 Web前端HTML
2.1.1开启kali自带的Apache
systemctl start apache2 # 开启Apache服务
2.1.2创建HTML文件
apache或nginx的网页文件默认存放在/var/www/html,进入 /var/www/html路径,新建一个表单的html文件,命名为202222312login.html。

2.2 Web前端javascipt
2.2.1编写一段javascipt,用于实现界面的跳转,并把它添加到原html中


2.2.4.注入攻击:利用回显用户名注入HTML及JavaScript
HTML注入

2.3 搭建Web后端
2.3.1准备工作:启动数据库
kali自带mariadb,所以我们可以直接使用服务。
打开MySQL服务。
systemctl start mysql # 打开mysql服务

2.3.2建立数据库,添加表
创建 20222312数据库并进入使用,进而创建用于本次实验的表



2.4 Web后端:PHP
2.4.1编写PHP,实现连接数据库及进行用户认证,并完成相应跳转
此处跳转较为简易,直接使用echo回显:

2.5 简单的SQL注入,XSS攻击测试
2.5.1SQL注入
SQL注入攻击:相当大一部分程序员在编写代码的时候 ,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根 据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即 SQL注入。

根据php的代码,我们只需要在密码输入框输入 ’ or ‘1’='1 ,则密码判定为真,故用户名只要任意输入,即可登录成功。
原理:sql语句会变为“ SELECT * FROM loginuser where username=‘2021324’ and password=’ ’ or ‘1’=‘1’;”,“1=1”保证该式永真,而之后的内容就都被注释掉了。

2.5.2XSS攻击测试
“XSS是跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。”

我们在用户名输入框输入这样的一条html指令,使得如果登录成功后网页弹出攻击,密码依旧使用上面的永真式确保能够登录成功:
原理:网页源代码中是直接将用户名内嵌进去的,故我们可以通过在用户名中添加script脚本实现XSS攻击


2.6 安装Webgoat或类似平台,完成SQL注入、XSS、CSRF攻击
2.6.1安装Webgoat平台
webgoat介绍:WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,当前提供的训练课程有30多个,其中包括:跨站点脚本攻击(XSS)、访问控制、线程安全、操作隐藏字段、操纵参数、弱会话cookie、SQL盲注、数字型SQL注入、字符串型SQL注入、web服务、Open Authentication失效、危险的HTML注释等等。WebGoat提供了一系列web安全学习的教程,某些课程也给出了视频演示,指导用户利用这些漏洞进行攻击。

和皮卡丘类似!

打开GitHub:Webgoat,选择webgoat-server-8.1.0.jar进行下载后将其粘到kali。
2.6.2SQL注入
webgoat为我们提供了丰富的网络攻击实践环境(有点像皮卡丘哈哈哈),同时讲解比较清晰,能够帮助我们在课后的实践当中对对应内容有更加深刻的认识。
前面几个是学习sql的基本知识(增删查改)

2.6.3XSS
尝试Reflected XSS攻击。
该题中存在两个可提交字段,故可以尝试使用alert()来确定哪个字段易受攻击。
因此,在两个提交框中输入如下攻击代码,发现代码在第一个提交框中时会出现弹窗,可知第一个提交框易受攻击。


2.6.4.CSRF
尝试Basic Get CSRF Exercise,通过查看网页源代码查看对应跳转逻辑以期实现跳过逻辑完成跳转、找到flag。
尝试在该页面下按F12查看网页源代码,查看Submit Query的部分代码。
检索form#basic-csrf-get,找到input部分

3.问题及解决方案
问题1:添加PHP进行后端识别和跳转中,每次跳转后会提示下载php文件而不是进入相应页面
解决方案:通过查找资料我发现不能通过直接点击php文件进行跳转,需要在网页中进行输入才能成功进行跳转

4.实验感悟
通过这一系列涵盖Web前端到后端的实验,我深刻体会到了构建一个安全的Web应用程序所面临的复杂性和挑战。从最初学习如何安装和配置Apache服务器,到逐步深入理解HTML表单的GET与POST方法,我不仅掌握了基础的网页搭建技能,还学会了如何利用这些技术实现用户交互。编写含有表单的HTML页面,让我对Web前端有了直观的认识,而进一步学习JavaScript,则为我打开了动态网页交互的大门。通过JavaScript验证用户名和密码,并在用户登录后回显个性化欢迎信息,这一过程不仅锻炼了我的编程能力,也让我意识到了前端脚本在提升用户体验方面的重要作用。

然而,实验中最让我震撼的是关于安全性的部分。在尝试注入攻击时,我亲眼见证了HTML及JavaScript注入如何可能被恶意利用,从而威胁到Web应用的安全。这不仅让我对安全编码的重要性有了全新的认识,也激发了我深入学习Web安全知识的兴趣。随后,通过MySQL的学习,我掌握了数据库的基本操作,这为我在PHP网页中连接数据库、实现用户认证打下了坚实的基础。

在接触SQL注入和XSS攻击测试时,我深刻体会到了防范这些攻击的难度。每一个细节都至关重要,稍有疏忽就可能给黑客留下可乘之机。而安装Webgoat或类似平台,进行SQL注入、XSS、CSRF攻击的实战演练,更是让我对Web安全有了全面的了解。这些攻击手段不仅考验了我的防御能力,也让我学会了如何从不同的角度思考安全问题,从而不断提升自己的安全意识和技能。

总的来说,这次实验不仅让我掌握了Web开发的基本技能,更让我深刻认识到了Web安全的重要性。在未来的学习和工作中,我将更加注重安全编码的实践,努力提升自己的安全防御能力,为构建更加安全、可靠的Web应用程序贡献自己的力量。

posted @ 2024-12-06 10:52  zhx164  阅读(7)  评论(0编辑  收藏  举报