0基础学渗透-WebGoat靶场(五)

骚骑   ·   发表于 2020-03-30 10:00:35   ·   技术文章

WebGoat靶场实践(五)

0x02:今天内容多了一些,因为都是比较简单的内容,所以一次发出来,这应该是倒数第二篇了。

0x01:继续闯关

第五关Access Control Flaws

前言

这一关总的来说是属于逻辑漏洞范畴的,由于配置问题导致的逻辑漏洞,被利用进而可以横纵向越权
逻辑漏洞通常为配置问题造成逻辑问题,进而爆出的漏洞
常见的逻辑漏洞有:

支付漏洞
横纵向越权
验证码绕过
密码可爆破
未授权访问

Insecure Direct Object References

lesson1介绍了下权限滥用,在我的的认知里是逻辑漏洞

lesson2,就是让你登录获取相应权限

账户密码都已经给定,直接登录就好,账户是tom,密码是cat

lesson3,练习题目要求找出与已给profile不一样的属性,点击view profile查看网络返回包

和已给的配值对比,然后输入,过关

lesson4,通俗理解就是我们利用userid查询我们的信息,利用lesson3获取到的信息我们进行输入

lesson5,本练习让我们寻找他人的配置文件,然后将颜色改为红色
我们有之前的userid然后我们修改userid末位数进行爆破
最终找到一个

第二个是要求我们修改配置文件,那我们就上传试试,借用tom的格式

然后对新发现的倒霉鬼进行修改

然而没变化,应该get传参问题,get传输有字数限制,换post试试

返回包提示了接受PUT,那换了吧,其中我还把content改了下改为json了

然后过关

lesson6主要再次对访问控制进行了讲解,横纵向越权等危害,以及如何进行防护(受英语水平限制,只能看懂个大概)

Missing Function Level Access Control

lesson1讲了一下缺少功能级别访问控制以及他和idor访问控制的对比
lesson2大概意思就是找隐藏的功能连接

右击选择查看元素,找到对应的隐藏信息,发现admin,并且还有连接,输入成功

lesson3有点难度,算是未授权访问吧
利用了下lesson2的连接,users,然后发现,需要权限,但是能进去只是不能看而已

抓包,然后给加一个content-type头,给定义为json解析,返回的也是json页面,未授权访问获取了信息

通关,当然还可以通过此页面创建个管理员账号的方式

创建管理员方式
既然是user界面,觉得可以创建个用户,返回到login页面注册试试

抓包看下

重放包是这样,那我可不可以….

将content类型换成json

说明这个页面访问控制做的没问题,那我们就去user界面试一下

想要注册个管理员用户那我们再添加一个role,给他定义一下不就好了

嘿嘿我们登录下试试

现在是管理员了,那我们可以直接到相应界面看信息了,有点意思嘿嘿(研究这个把环境差点整崩溃,然后数据都丢了有点惨)

第六关Insecure Communication

lensson1简单介绍了下,大意就是明文传输了,能被嗅探到,不安全

lesson2,按照他说的我们嗅探下(这里点击login抓包就能获得,真实环境就需要嗅探了),然后输入数据

过关

第七关Insecure Deserialization

前言

序列化和反序列化属于代码审计方面的知识,简单做下介绍

1.什么是序列化?
简单理解就是:将PHP,Java等语言中 对象、类、数组、变量、匿名函数等,转化为字符串,方便保存到数据库或者文件中【将状态信息保存为字符串】

2.什么是反序列化?
序列化就是将对象的状态信息转为字符串储存起来,那么反序列化就是再将这个状态信息拿出来使用。(重新再转化为对象或者其他的)【将字符串转化为状态信息】

靶场实践

lesson1-lesson4都是在讲解Java序列化和反序列化,我这里推荐下菜鸟教程的讲解Java序列化

lesson5,写个payload,先序列化,然后输入令其页面延时5s

这关困扰了我两天,因为我并不熟悉java,更不熟悉Java的序列化,所以学习大量资料,这里直接上干货,先对所给的序列化后的字符串进行分析

rO0ABXQAVklmIHlvdSBkZXNlcmlhbGl6ZSBtZSBkb3duLCBJIHNoYWxsIGJlY29tZSBtb3JlIHBvd2VyZnVsIHRoYW4geW91IGNhbiBwb3NzaWJseSBpbWFnaW5l

看到编码,第一就想法就是看看能不能base64解码啥的(开始不知道base64和base64url之分),这里利用burp进行解码

发现确实存在编码,但这个现在并没有啥用,之后用burp的插件Java-Deserialization-Scanner可以检测Java反序列化是否存在

抓包,然后检测是否存在反序列化

检测出来了,然后还需要一个工具ysoserial,因为Java-Deserialization-Scanner是通过ysoserial生成Payload的,然后进行配置

如果直接攻击会出现错误,需要对路径:ysoserial-master\src\main\java\ysoserial\payloads\util\Gadgets.java的代码做下修改(github能下载源码)

利用maven对修改后的ysoserial重新编译(如果-Dhibernate5不可以就换成-Phibernate5)

-D 指定参数,如 -Dmaven.test.skip=true 跳过单元测试;
-P 指定 Profile 配置,可以用于区分环境;


然后重新配置yoserial路径

构造payload进行攻击

弹出计算器,说明可以用,但是sleep不知道为啥就是不行,然后弹计算机五秒后他就成功了

这里说明下,虽然是用的工具,但是在这之前我用过好多种方法,并没有一一列举出来,也对源码进行了一定分析,由于写的是零基础学渗透,因此代码审计的内容没有涉及,除此之外低版本的webgoat是可以利用这个进行getshell的,有兴趣的可以百度查找一下payload

第八关Request Forgeries

前言

对csrf简单的做一下介绍
什么是csrf?
CSRF(Cross-site request forgery)跨站请求伪造:也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

我理解的csrf
csrf漏洞的成因就是网站的cookie在浏览器中不会过期,只要不关闭浏览器或者退出登录,那以后只要是访问这个网站,都会默认你已经登录的状态。而在这个期间,攻击者发送了构造好的csrf脚本或包含csrf脚本的链接,可能会执行一些用户不想做的功能(比如是添加账号等)

csrf危害
攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账……造成的问题包括:个人隐私泄露以及财产安全。

靶场实践

lesson1-2简单的liy介绍了下csrf以及最简单的利用

lesson3,要求外部触发表单然后会返回一个数值flag,比较简单利用burp就可以实现
抓取表单数据包,并生成csrf poc

本地创建个html文件打开,并提交表单

输入flag过关

lesson4,和lesson3差不多,这次是编写好消息后抓包,建立个html

打开发送,发现错误

更改下值,将第二个框改为数字,在发送过关

lesson5和lesson6进一步讲解了csrf以及防御

lesson7和之前一样,利用burp抓包生成poc然后生成html

输入flg,过关

lesson8,先创建个csrf-用户

然后切换用户登点击,过关

lesson8的大概思路,其实是在说用户在访问的时候跳转了攻击者的csrf,利用了攻击者账户登录,用户的活动信息就被暴露了,和xss不一样的是csrf是具有跨源性的

lesson9讲了csrf的影响和防范
防范

可以强行用验证码(强制用户必须和应用进行交互,但是体验性太差了) 请求中加随机Token值

未完待续。。。。。。

用户名金币积分时间理由
admin 100.00 0 2020-03-31 14:02:56 good job

打赏我,让我更有动力~

0 Reply   |  Until 2020-3-30 | 857 View
LoginCan Publish Content
返回顶部 投诉反馈

© 2016 - 2022 掌控者 All Rights Reserved.