2019-2020-2 网络对抗技术 20175209 Exp9 Web安全基础
2021-02-19 22:19
标签:get last val 部分 wan 数据安全 天气情况 cli 系统 本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分。包括(SQL,XSS,CSRF)。Webgoat实践下相关实验。 原理: 防御: 原理: 防御: 原理: 防御: WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,目前提供的训练课程有很多,包含了XSS、线程安全、SQL注入、访问控制、隐藏字段、Cookie等。 webGoat需要Java SE8的支持,版本不匹配那么浏览器的菜单栏中会缺失很多内容 在官网下载 在https://www.jianshu.com/p/9ec7838411c8下载 在命令行输入 在浏览器中输入 使用页面下端任意一个账号密码进行登录,可以看到如下页面: 在菜单栏中选择 右键点击页面,选择 点击 在菜单栏中选择 右键点击页面,选择 点击 前提:本题目接受用户输入的任何一个用户名,并将其追加到日志文件中。 在菜单栏中选择 利用入回车(0D%)和换行符(%0A),在 username 中填入 攻击者可以利用这种方式向日志文件中添加恶意脚本,脚本的返回信息管理员能够通过浏览器看到。比如,将 在菜单栏中选择 右键点击页面,选择 以用户 可以进行欺骗,以最高权限进行登录,获取到所有人员列表 在菜单栏中选择 使用用户名 Larry,密码 larry 登录,点击 右键点击页面,选择 老板应该是工资最高的,所以将员工ID的value改成 更改后再次点击 在菜单栏中选择 正常情况下只能查询到用户名对应的信用卡号码 输入查询的用户名 查询到所有用户信用卡号码如下: 在菜单栏中选择 输入101,得到该用户的信息。我们可以看到,输入的语句没有验证,很容易进行 SQL 注入 输入注入语句 输入 在菜单栏中选择 本题目中,服务端页面返回的信息只有两种:帐号有效或无效。如果该查询语句返回了帐号的信息,页面将提示帐号有效,否则提示无效。使用 AND 函数,我们可以添加一些额外的查询条件。如果该查询条件同样为真,则返回结果应提示帐 号有效,否则无效。 例如:输入查询语句 针对查询语句的后半部分构造复杂语句,如: 使用二分法,最终得出pin的值为2364,输入2364进行验证 在菜单栏中选择 输入 接下来依次确认其他字母,其他字母均为小写 ,最终得到结果为 跨站脚本攻击是通过HTML注入劫持用户的浏览器,任意构造用户当前浏览的HTML内容,可以模拟用户当前的操作。这里实验的是一种获取用户名和密码的攻击。 在菜单栏中选择 利用XSS可以在已存在的页面中进一步添加元素,包括两部分: 编写一段脚本读取被攻击者在表单上输入的用户名和密码信息,将这些信息发送给捕获这些信息的 WebGoat 编写一个带用户名和密码输入框的表格: 跨站请求伪造,尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。 在菜单栏中选择 查看页面右侧Parameters中的src和menu值,分别为328和900 在title中输入任何参数(学号),message框中输入 在Message List中生成以Title命名的消息。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。 ? ? ? ?实验中遇到的问题就是Webgoat菜单栏不全的问题,原因就是jdk的版本不匹配,在前面已经有过阐述 ? ? ? ?本次实验的内容主要是和攻击相关的内容。实验过程很顺利,没有出现什么问题。通过这次实验也让我了解了很多攻击的过程和攻击能够成功的原因,对于防范这些攻击也有了一些认识和理解。 2019-2020-2 网络对抗技术 20175209 Exp9 Web安全基础 标签:get last val 部分 wan 数据安全 天气情况 cli 系统 原文地址:https://www.cnblogs.com/wangzihong0213/p/12927181.html2019-2020-2 网络对抗技术 20175209 Exp9 Web安全基础
一、实验原理与目的
1. 实验要求
2. 基础问题回答
‘,--,#
这些特殊字符
二、实验过程
1. 环境配置
WebGoat
jdk-8u251-linux-x64.tar.gz
,并参考链接进行环境配置,配置好截图如下:webgoat-container-7.0.1-war-exec.jar
,移动到kali中(相关资源已上传百度云盘,链接 提取码:jwxh) java -jar webgoat-container-7.0.1-war-exec.jar运行Webgoat
,等待一小会后出现如下提示则运行成功。http://localhost:8080/WebGoat
进入WebGoat登录界面2. SQL注入攻击(Injection Flaws)
命令注入(Command Injection)
Injection Flaws
,展开页面中选择Command Injection
inspect Element
审查网页元素对源代码进行修改,在复选框中对应位置第一个option的代码,双击进行修改,添加"& netstat -an & ipconfig"view
,可以看到执行指令后的网络端口使用情况和IP地址。数字型注入(Numeric SQL Injection)
SELECT * FROM weather_data WHERE station = [station]
Injection Flaws
,展开页面中选择Numeric SQL Injection
inspect Element
审查网页元素对源代码进行修改,在选中的城市编号Value值中添加or 1=1
Go!
即可显示所有城市的天气情况。日志欺骗(Log Spoofing)
Injection Flaws
,展开页面中选择Log Spoofing
wangzihong%0d%0aLogin Succeeded for username: admin
,admin
作为用户名输入,可以看到弹窗的cookie信息。SQL注入(LAB: SQL Injection)
字符串型注入(String SQL Injection)
Injection Flaws
,展开页面中选择LAB: SQL Injection
,展开页面中选择String SQL Injection
inspect Element
审查网页元素对源代码进行修改,将password密码框的最大长度限制改为18。Neville(admit)
登录,输入密码hello‘ or ‘1‘ = ‘1
数字型 SQL 注入(Numeric SQL Injection)
Injection Flaws
,展开页面中选择LAB: SQL Injection
,展开页面中选择Numeric SQL Injection
ViewProfile
查看用户信息inspect Element
审查网页元素源代码,我们可以看到数据库索引的依据是员工ID,推测返回的是每次查询到的第一条数据。101 or 1=1 order by salary desc
,使得Boss的信息作为查询到的第一条数据(始终是最高的)。ViewProfile
,即可查询到最高纪录的结果字符串注入(String SQL Injection)
SELECT * FROM user_data WHERE last_name = ‘?‘
Injection Flaws
,展开页面中选择String SQL Injection
Smith‘ or 1=1--
(1=1是恒等式,因此能查询到表里面的所有数据)数据库后门(Database Backdoors)
Injection Flaws
,展开页面中选择Database Backdoors
101; update employee set salary=18000
执行两个语句101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email=‘wangzihong@hackme.com‘WHERE userid = NEW.userid
(这项操作不会完成,不支持触发器)
BEFORE/AFTER
参数指定了触发执行的时间FOR EACH ROW
表示任何一条记录上的操作满足触发事件都会触发该触发器,也就是说触发器的触发频率是针对每一行数据触发一次
数字型盲注入(Blind Numeric SQL Injection)
Injection Flaws
,展开页面中选择Blind Numeric SQL Injection
101 AND 1=1
,因为两个条件都成立,所以页面返回帐号有效101 AND ((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) > 5000 )
;如果提示有效,则pin值大于5000,如果无效,则pin值小于5000。字符串型盲注入(Blind String SQL Injection)
Injection Flaws
,展开页面中选择Blind String SQL Injection
101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number=‘4321432143214321‘), 1, 1) ;判断第一个字母是不是是否比字母“M”小,同样用二分法确定第一个字母
Jill
XSS攻击(Cross‐Site Scripting)
XSS 钓鱼(Phishing with XSS)
创建一个 form,要求填写用户名和密码。将数据提交到http://localhost/WebGoat/catche r?PROPERTY=yes&user=catchedUserName&password=catchedPasswordNam
Cross‐Site Scripting
,展开页面中选择Phishing with XSS
//脚本
存储型XSS攻击(Stored XSS Attacks)
Cross‐Site Scripting
,展开页面中选择Stored XSS Attacks
反射型XSS攻击(Reflected XSS Attacks)
Cross‐Site Scripting
,展开页面中选择Reflected XSS Attacks
CSRF攻击
跨站请求伪造(Cross Site Request Forgery (CSRF))
,当受害者的浏览器试图呈现此页面时,它将使用指定的参数向www.mybank.com的“me”端点发出请求。浏览器将请求链接以获得图像,即使它实际上是一个资金转移功能。提交请求时,浏览器将添加与站点相关的所有cookie。因此,如果用户对站点进行了身份验证,并且拥有永久或当前会话cookie,那么站点将无法将其与合法的用户请求区分开来。通过这种方式,攻击者可以让受害者执行他们不打算执行的操作,比如“购买物品”,或者脆弱网站提供的任何其他功能。
Cross‐Site Scripting
,展开页面中选择Cross Site Request Forgery (CSRF)
,以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的(宽高设置成1像素的目的是隐藏该图片),用户一旦点击图片,就会触发一个CSRF事件,点击Submit提交。绕过 CSRF 确认( CSRF Prompt By‐Pass)
attack?Screen=XXX&menu=YYY&transferFunds=ZZZ的url
。无论谁收到这封电子邮件,并且碰巧在那个时候通过了身份验证,他的资金就会被转移。
Cross‐Site Scripting
,展开页面中选择CSRF Prompt By‐Pass
三、实验中遇到的问题
Question
四、实验心得体会
? ? ? ?这门课程的实验已经全部完成了,其实最后一个实验才是我最顺利,用时最短的实验。其他实验都会出现形形色色的问题,有的甚至花了几天的时间去解决问题。通过这些实验我对网络的攻防对抗有了质的理解和实践,觉得收获非常大,之后有机会也会继续磨练这方面的内容。
文章标题:2019-2020-2 网络对抗技术 20175209 Exp9 Web安全基础
文章链接:http://soscw.com/index.php/essay/57720.html