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

相关文章

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

客户案例:安全海外中继助力知名家电企业化解海外通邮困境

1、客户背景 广东格兰仕集团有限公司(以下简称“格兰仕”),成立于1978年,是中国家电行业的领军企业之一。作为全球最大的微波炉生产基地,格兰仕拥有多项国际领先的家电制造技术,连续多年位列中国家电出口前列。格兰仕不仅注重业务的全球拓展,更重视业务流程的高效与顺畅,以确保在国际舞台上的竞争力。 2、需求痛点 随着格兰仕全球化战略的深入实施,其海外业务快速增长,电子邮件成为了关键的沟通工具。

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

2024网安周今日开幕,亚信安全亮相30城

2024年国家网络安全宣传周今天在广州拉开帷幕。今年网安周继续以“网络安全为人民,网络安全靠人民”为主题。2024年国家网络安全宣传周涵盖了1场开幕式、1场高峰论坛、5个重要活动、15场分论坛/座谈会/闭门会、6个主题日活动和网络安全“六进”活动。亚信安全出席2024年国家网络安全宣传周开幕式和主论坛,并将通过线下宣讲、创意科普、成果展示等多种形式,让广大民众看得懂、记得住安全知识,同时还

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显