end的漏洞学习

CSRF

CSRF:跨站请求伪造(盗用身份,以你的名义进行某些非法的操作)
CSRF攻击是建立在会话之上的。

主要有2点:1,CSRF建立在浏览器与Web服务器的会话中
2,欺骗用户访问URL

方法GET
方法POST

<html>
      <body>
	  <form id="myfrom" method="post" action="http://173.82.206.142:8005/">
	       <input type="hidden" name="target" value"end123">
		   <input type="hidden" name="money" value"100000000000000000000000000000000000000">
		   <input type="hidden" name="messages" value" ">
	  </form>
	  
	  <script>
	       var myfrom = document.getElementById("myfrom");
		   myfrom.submit();
	  </script>
	  
	  
	 </body>
</html>

Cookie机制

cookie主要2种表现形式:1,本地cookie又称为持久型Cookie;
2,临时cookie又称Session Cookie;

检测:
CSRF只能通过用户的正规操作进行攻击,实际上就说劫持用户的操作。
敏感操作:修改密码,转账,发表留言。

CSRFTester半自动检测。

预防跨站请求伪造
1,二次确认
要求用户二次输入密码

2,Token认证
①攻击者可得知URL的所有参数项,并了解其含义;
②诱导用户访问构造好的POC。

验证思路:
①服务器端生成验证字符串并保存在Session中,然后在客户端使用图片显示这段字符串。
②用户输入验证码之后交给服务器处理,如果验证码与Session中的字符串相匹配,就代表验证码正确,可以发起请求。

TOken验证思路:
①用户登录Web应用程序后,服务器端会随机产生一段字符串分配给此用户,存储在Session中。
②当用户进入某页面时,直接传递给用户界面或者Cookie中。

逻辑错误漏洞
逻辑漏洞一般出现在业务流程上,例如:任意密码修改,越权访问,密码找回,交易支付金额修改等。
①业务流程
②HTTP/HTTPS请求篡改

绕过授权验证
授权:对特定资源的读写权限
越权:水平越权,垂直越权

1,水平越权
修改密码的代码`

public String execute(){
   int id = Integer.parseTnt(request.getParameter("userId"));//获取用户id
   String password = request.getParameter("password");//获取原密码
   String password2 = request.getParameter("password2")//获取新密码
   
   if(!("".equals(password)||"".equals("password2"))){
     return ERROR;
   }
   
   if{!password.equals(password2)){
     return ERROR;
   }
   
   User u = new UserBiz().findUserById(id);//根据ID获取User具体对象
   u.setPassword(password);
   boolean flag = new UserBiz().saveOrUpate(u);//更新对象
   if(flag){
     return SUCCESS;
   }else{
   return ERROR;
   }
}

错误在没有进行二次密码验证(原密码),可以修改其他用户的密码

添加:

String oldpass =request.getPass
if(!(u.getPassword().equals(oldpass))){//判断原密码是否相同
  return "-1";
}

垂直越权
管理员表与普通用户表是同一张数据库表,必须要在存在权限验证字段,用来区分是否是管理员。

代码注入

1,OS命令执行

<?php
    $command = $_REQUEST["command"];
	system($command);
?>

URL/注入点?command=ls

2,文件包含


<?php
    $page=$_REQUEST["page"];
	include($page);
?>

URL/注入点?page=info.txt

3,动态函数调用

<?php
    function A(){
	echo "A";
	}
	function B(){
	echo "B";
	}
	$func = $_REQUEST["fun"];
	$func();
?>

4,代码执行

<?php
    $myvar=varname";
	$x = $_GET['arg'];
	eval("\$myvar= \$x;");
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值