网站建设源程序清单/网站seo价格

点击上方蓝色字关注我们~
Hello,我是想与大家交个朋友的啪仔。
正所谓一方水土养一方人,南北方之间有着明显的区别......南北方的气候可以用一句话来形容:你在北方寒夜里吹着暖气,而我在南方的艳阳里瑟瑟发抖。但是最大的区别应该是美食,南方和北方人聚在一起,谈什么都行,就是不能谈吃的,关于咸甜之争,这是个永远都绕不过去的坎,比如粽子,南方喜咸,北方喜甜。虽然南北方的生活差异很大,但是随着现在交通的便利以及社会的发展,南北之间的生活习惯在慢慢地向彼此靠拢。不管差异再大,我们也都是这片土地上的子民,彼此融合,相互促进发展。好了,开始我们今天的学习——损坏的访问控制。原理
1.1 Insecure direct object references定义
不安全的直接对象引用,也称为IDOR。IDOR允许攻击者绕过网站的身份验证机制,并通过修改指向对象链接中的参数值来直接访问目标对象资源,这类资源可以是属于其他用户的数据库条目以及服务器系统中的隐私文件等等。
1.2 IDOR原理
应用程序在SQL查询语句中直接使用了未经测试的数据,而攻击者可以利用这一点来访问数据库中的其他账号数据。
Web应用往往在生成Web页面时会用它的真实名字,且并不会对所有的目标对象访问时来检查用户权限,所以这就造成了不安全的对象直接引用的漏洞。
服务器上的具体文件名、路径或数据库关键字等内部资源被暴露在URL或网页中,攻击者可以尝试直接访问其他资源。
1.3 Missing Function Level Access Control概念原理
大多数Web应用程序的功能在UI页面显示之前,会验证功能级别的访问权限。但是,应用程序需要在每个功能被访问时在服务器端执行相同的访问控制检查。如果请求没有被验证,攻击者能够伪造请求从而在未经适当授权时访问功能。
漏洞复现
2.1攻击场景一(Insecure direct object references)
(1)场景中提示我们利用合法的身份进行验证,验证的账号密码分别是tom和cat,认证后进入下一个攻击场景。
进行验证后:
2.2 攻击场景二
(1)场景中提到原始响应中经常有一些数据未显示在屏幕/页面上。我们需要查看下面的配置文件,在下面的文本框中列出服务器器响应中的两个属性,但并不在配置文件中显示的。
(2)点击View Profile,显示三个属性
name: Tom Cat
Color:yellow
Size:small
(3)打开开发人员工具(按F12),点击网络,再次点击View Profile按钮,出现profile文件,查看响应:
发现多了两个没有在配置文件中显示的属性:role和userid
(4)在文本框中输入这两个属性(注意中间要用逗号隔开)
2.3攻击场景三
(1)场景中需要我们猜测使用直接对象引用显示查看自己的配置文件可能的模式是什么,要求我们输入网址的备用路径来查看个人资料,提示说明了备用路线和之前查看个人资料的方式很相似。
(2)根据上一攻击场景中查看个人资料的方式,打开开发人员工具,查看发现路径为
WebGoat/IDOR/profile
(3)把该路径复制粘贴到文本框中提交,发现并没有任何反应,再结合题目提到的仅/profile将不起作用,需要将个人资料中的ID附加到路径中:
把用户的账号ID加上:WebGoat/IDOR/profile/2342384
2.4 攻击场景四
场景中有两个要求,第一个是查看其他资料,第二个是编辑其他个人资料
2.4.1查看其他资料
(1)说明了可以通过替代查看自己个人资料的路径来查看其他人的个人资料,点击“查看资料”按钮并拦截
(2)打开burpsuite,选中
http://192.168.2.140:8080/WebGoat/IDOR/profile/%7BuserId%7D包,发送到重放功能:
(3)将用户id从2342385试到2342388,发现2342388存在用户Buffalo Bill
(4)将拦截到的包修改成2342388后,放包:
2.4.2编辑其他个人资料
(1)场景中要求使用RESTful模式将角色更改为较低的角色以及用户的颜色更改为“红色”
(2)打开burpsuite,点击第二个View Profile进行抓包,发送到重放功能
(3)RESTful模式中更新资源时用PUT,根据场景要求要把角色更改为较低的角色,用户的颜色更改为“红色”,
并修改Content-Type:application/json
{
"role":1,
"color":"red",
"size":"large",
"name":"Buffalo Bill",
"userId":"2342388"
}
修改前:
修改后:
(4)将原始数据复制粘贴到拦截包中,放包
(5)查看结果:
2.5 攻击场景五(Missing function level access control)
(1)场景中要求寻找隐藏的物品,通常有一些提示可以找到UI并未公开显示的内容:
·HTML或javascript注释
·注释掉的元素
·通过CSS控件/类隐藏的项目
我们需要在下面的菜单中找到攻击者感兴趣的两个菜单项。
(2)打开开发人员工具,点击查看器,搜索菜单项的关键词hidden,出现hidden-menu-Item,
往下查看发现被注释掉的Users和Config
(3)输入结果:
(提示我们下一个攻击场景中会用到其中的一个url)
2.6攻击场景六
(1)场景中要求我们根据上以场景中得到的url来查看是否能够拉出用户列表,然后为自己的用户账号提供哈希值。
(2)根据上一场景中得到的url:
http://106.14.253.130:8000/WebGoat/users,访问该url,并用burpsuite进行抓包。
点击抓到的包:
http://106.14.253.130:8000/WebGoat/users,发送到重放功能,点击Go进行测试
(3)根据提示,尝试像GET请求中一样更改Content-type标头:
Content-type:application/json
(4)将得到的哈希值输入到文本框中
63itbf29KL4vO/qQSTS/fRPiwzlnWFhJ9OrcbJA49eI=
以上部分内容来源于网上