20154324 刘康权 Exp9 Web安全基础

2023-10-15 11:50

本文主要是介绍20154324 刘康权 Exp9 Web安全基础,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、实践目标与内容

  1. 理解常用网络攻击技术的基本原理。
  2. 在Webgoat,实践相关实验。
  • SQL注入攻击
  • XSS攻击
  • CSRF攻击

二、实践过程与步骤

1.环境配置

1.1下载webgoat-container-7.1-exec.jar和jdk-8u172-linux-x64.tar.gz,解压jdk-8u172-linux-x64.tar.gz,并配置JDK的环境后,重载Profile文件,输入命令java -version`就可以看到我们的JAVA的版本已经更新了

1344859-20180529142147495-1078152295.png

1.2.因为我的文件目录里面只有webgoat的jar,所以输入以下命令,等待一会就可以看到webgoat运行成功了(如果有多个jar文件,只需要把*改成文件名就行了)
java -jar *.jar
1.3打开Firefox,输入http://127.0.0.1:8080/WebGoat/login.mvc访问webgoat,因为我的webgoat是7.1,不需要注册,只需要使用网页页面下面的管理员用户登录就行了
1.4 在Firefox页面中点击右上角,选择Add-ons,搜索Firebug就能找到这个插件并安装,然后就可以开整了Firebug相关介绍

2.SQL注入攻击

2.1 命令注入(Command Injection)目标:能够在目标主机上执行系统命令
2.1.1右键网页,点击inspect Element,查看并编辑网页源代码,查找BasicAuthentication.help,在旁边加上"& netstat -an & ipconfig"

1344859-20180529143715415-112305753.png

2.1.2点击网页中的view按钮,就能在网页下面看到系统的网络连接情况了

1344859-20180529143807877-1088622897.png

2.2 数字型SQL注入(Numeric SQL Injection)目标:注入一条SQL字符串,以显示所有显示的天气数据
2.2.1右键网页,点击inspect Element,查看并编辑网页源代码,查找New York,在option value中加入恒等真式or 1=1

1344859-20180529144118311-1660079504.png

2.2.2点击go就可以看到所有的天气数据了

1344859-20180529144204507-1465581394.png

2.3 日志欺骗(Log Spoofing)目标:通过在日志文件中添加一个脚本像用户名“admin”成功登录
2.3.1在user name中输入lkq%0d%0aLogin Succeeded for username: admin,,其中%0d是回车,%0a是换行符
2.3.2点击login in就可以看到成功啦

1344859-20180529144534140-1801079605.png

2.4 XPATH注入(XPATH Injection)目标:作为迈克,尝试查看其他员工的数据
2.4.1在User Name中输入永真式lkq ' or 1=1 or 'a' ='a
2.4.2点击submit就可以看到所有员工的数据了

1344859-20180529144939741-1012664407.png

2.5 字符串SQL注入(String SQL Injection)目标:作为Smith,注入一个SQL字符串,显示所有信用卡号
2.5.1输入永真式Smith ' or '1'='1
2.5.2点击Go!,就可以查看所有信用卡号了

1344859-20180529145249552-1502410251.png

2.6 字符串SQL注入(String SQL Injection)目标:使用SQL注入作为老板(“Neville”)登录,并使用所有功能
2.6.1第一次作为老板,在password中输入永真式,登录,发现失败了,经过查看源代码,找到原因为:password最大长度不够,于是再源代码中修改最大长度

1344859-20180529145552216-765599602.png

2.6.2输入永真式' or 1=1 --,其中--是将后面的代码注释掉,就能够登录成功了

1344859-20180529145731717-1794021202.png

2.7 盲数字SQL注入(Blind Numeric SQL Injection)目标:在表格中找到字段pin的值
2.7.1输入以下代码,判断pin的值是否大于2500,发现无效,于是推断pin的值小于等于2500

101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2500);

2.7.2使用二分法进行反复猜测,最终找到pin的值为2364

1344859-20180529150111535-1734659280.png

3.XSS攻击

3.1 网络钓鱼和XSS(Phishing with XSS)目标:使用XSS和HTML插入,将html插入到该请求凭证中,添加javascript来实际收集凭证
3.1.1在search框中输入写好的html代码,代码如下:



  • This feature requires account login:



    Enter Username:

    Enter Password:




    3.1.2点击search后,下拉网页就可以看到输入框了,在里面输入任意字符,点击login,就可以看到攻击成功了
    1344859-20180529150641611-1407036878.png
3.2 存储的跨站点脚本(XSS)攻击(Stored XSS)目标:在搜索人员页面上使用一个漏洞来创建包含反射XSS攻击的URL。确认另一个使用该链接的员工受到攻击的影响。
3.2.1作为tom登录,点击ViewProfile查看配置文件后,点击EditProfile进行编辑,将任意一栏数据修改为:

<script>alert('20154324');</script>
1344859-20180529151247767-192374097.png

3.2.2保存后登出,作为jerry登录,点击Search For User查找Tom,就可以看到攻击成功了

1344859-20180529151313776-2090534063.png

3.3 执行反射的XSS攻击(Reflected XSS)目标:执行反射XSS攻击,在搜索人员页面上使用一个漏洞来创建包含反射XSS攻击的URL。确认另一个使用该链接的员工受到攻击的影响
3.3.1作为Tom登录后,点击Search For User
3.3.2在搜索框中输入以下代码:<script>alert('lkq');</script>,就可以看到攻击成功了

1344859-20180529151850826-599348088.png

4.CSRF攻击

4.1跨站请求伪造(CSRF)目标:给新闻组发邮件。电子邮件包含一个URL指向恶意请求的图像。在这节课中,URL应该指向“攻击”servlet,其中包含了“屏幕”和“菜单”参数,以及一个额外的参数“transferFunds”,它具有任意的数值
4.1.1查看自己电脑的Screen和menu的值

1344859-20180529152103442-714100251.png

4.1.2Title中任意输入,在Message中输入写好的代码,点击Submit后,点击下方的链接,就可以看到攻击成功了

<imgsrc="http://localhost:8080/WebGoat/attack?Screen=2078372&menu=900&transferFunds=20000"/>
1344859-20180529152334475-1072131593.png

4.2 CSRF Prompt By-Pass 目标:输入代码,第一个为转帐的请求,第二个请求确认第一个请求触发的提示
4.2.1查看自己电脑的Screen和menu的值

1344859-20180529152602720-1109574477.png

4.2.2Title中任意输入,在Message中输入写好的代码,点击Submit后,点击下方的链接,就可以看到攻击成功了,代码如下:

attack?Screen=1471017872&menu=900&transferFunds=6000
attack?Screen=1471017872&menu=900&transferFunds=confirm
1344859-20180529152649076-665213098.png
1344859-20180529152654341-150529629.png

三、基础问题与回答

(1)SQL注入攻击原理,如何防御

  • 攻击原理:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。注射式攻击的根源在于,程序命令和用户数据(即用户输入)之间没有做到泾渭分明。这使得攻击者有机会将程序命令当作用户输入的数据提交给We程序,以发号施令,为所欲为。
  • 防御方法
  1. 普通用户与系统管理员用户的权限进行严格的区分。
  2. 不使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
  3. 加强对用户输入的验证
  4. 多多使用SQL Server数据库自带的安全参数
  5. 必要的情况下使用专业的漏洞扫描工具来寻找可能被攻击的点

(2)XSS攻击的原理,如何防御

  • 攻击原理:在编写代码的时候,没有对用户输入数据的合法性进行判断,攻击者通过对网页注入可执行代码且成功地被浏览器执行,这些代码包括HTML代码和客户端脚本,达到攻击的目的,形成了一次有效XSS攻击
  • 防御方法
  1. 在表单提交或者url参数传递前,对需要的参数进行过滤
  2. 检查用户输入的内容中是否有非法内容。如<>(尖括号)、”(引号)、 ‘(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等
  3. 检查输出,严格控制输出

(3)CSRF攻击原理,如何防御

  • 攻击原理:是一种对网站的恶意利用也就是人们所知道的钓鱼网站,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站,是一种依赖web浏览器的、被混淆过的代理人攻击
  • 防御方法
  1. 在form中包含秘密信息、用户指定的代号作为cookie之外的验证
  2. 验证 HTTP Referer 字段,根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。网站只需要对于每一个转账请求验证其 Referer 值,如果是以 bank.example 开头的域名,则说明该请求是来自银行网站自己的请求,是合法的。如果 Referer 是其他网站的话,则有可能是黑客的 CSRF 攻击,拒绝该请求。
  3. 在请求地址中添加 token 并验证,可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。

四、心得体会

  • 这是最后一次实验了,通过webgoat深入理解并运用了多种攻击,尝试了很多东西,这九次实验,可以说是非常有意思了(除了调试环境、调试bug),收获良多,虽然不能成功攻击他人,但是能够认识并且做出相应的防范了。学习到了不少的东西,也进行了多次的实践与尝试。

转载于:https://www.cnblogs.com/liukangquan/p/9105290.html

这篇关于20154324 刘康权 Exp9 Web安全基础的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/217519

相关文章

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

web网络安全之跨站脚本攻击(XSS)详解

《web网络安全之跨站脚本攻击(XSS)详解》:本文主要介绍web网络安全之跨站脚本攻击(XSS)的相关资料,跨站脚本攻击XSS是一种常见的Web安全漏洞,攻击者通过注入恶意脚本诱使用户执行,可能... 目录前言XSS 的类型1. 存储型 XSS(Stored XSS)示例:危害:2. 反射型 XSS(Re

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应