Broken Authentication and Session Management - owasp shepherd

本文转自http://shepherd.anquanbiji.com/vul/Broken-Authentication-and-Session-Management.html

Broken Authentication and Session Management(失效的身份认证和会话管理)

题介绍

本题主要考察不好的会话管理,需要通过点击完成该课程按钮,欺骗服务器,让服务器认为我们已经完成了该课程,进而获得通关密钥

功能实现

页面点击 完成该课程 按钮

POST /lessons/b8c19efd1a7cc64301f239f9b9a7a32410a0808138bbefc98986030f9ea83806 HTTP/1.1
Cookie: lessonComplete=lessonNotComplete; JSESSIONID=0B5E5DB01DD31D29205ED99B77ABB56C; token=-127827516577406622538923948450307535312

服务端代码: /src/main/java/servlets/module/lesson/SessionManagementLesson.java

Cookie userCookies[] = request.getCookies();
int i = 0;
Cookie theCookie = null;
for(i = 0; i < userCookies.length; i++)
{
	if(userCookies[i].getName().compareTo("lessonComplete") == 0)
	{
		theCookie = userCookies[i];
		break; //End Loop, because we found the token
	}
}
String htmlOutput = null;
if(theCookie != null)
{
	log.debug("Cookie value: " + theCookie.getValue());
	
	if(theCookie.getValue().equals("lessonComplete"))
	{
		log.debug("Lesson Complete");

功能实现,读取cookie,判断是否存在cookie的key为 lessonComplete,进而判断lessonComplete 的值 是否为 lessonComplete

解题步骤

  • 使用代理工具,拦截请求
  • 修改cookie中的 lessonComplete=lessonNotComplete 为 lessonComplete=lessonComplete
  • 继续发送请求
  • 服务器返回通过密钥

总结

一切客户端传递过来的数据都可以被篡改,所以都是不可信任的,涉及核心验证,敏感操作,状态信息一定要保存到服务端如session中,禁止客户端修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值