【Web渗透入门】8.业务逻辑漏洞讲解

admin 2024年11月15日11:08:58评论12 views字数 2394阅读7分58秒阅读模式

本节课视频讲解链接:

https://www.bilibili.com/video/BV1r24y177mQ/?spm_id_from=333.999.0.0&vd_source=16d23ba7b6eb72e7c4367ba62ab5e2a5

1、漏洞说明

漏洞原理:

业务逻辑漏洞是指由于程序逻辑不严谨或逻辑太复杂,导致一些逻辑分支不能正常处理或处理错误。通俗地讲:一个系统的功能太多后,程序开发人员就难以思考全面,对某些地方可能有遗漏,或者未能正常处理,从而导致逻辑漏洞。逻辑漏洞也可以说是程序开发人员的思路错误、程序开发人员的逻辑存在漏洞。

攻击流程:

  1. 正常操作并记录数据包

  2. 分析数据包

  3. 分析程序验证机制

  4. 修改源数据包

【Web渗透入门】8.业务逻辑漏洞讲解

常见漏洞出现处及危害

【Web渗透入门】8.业务逻辑漏洞讲解

2、漏洞复现

1.水平越权

进入靶场使用lucy/123456,lili/123456,kobe/123456其中一个用户登录,查看信息,并进行抓包观察。

【Web渗透入门】8.业务逻辑漏洞讲解

【Web渗透入门】8.业务逻辑漏洞讲解

这里可以看到用户名是可以修改的,随便改一个用户的名称,观察是否可以进行数据读取。

【Web渗透入门】8.业务逻辑漏洞讲解

可以看到,改变username就能查看其他用户的信息。(这里要会找哪个参数是用户名,比如相同账号名不能创建、在网页中浏览用户、在url中进行uid遍历)

2.垂直越权

首先登录超级管理员用户admin/123456,使用burpsuite抓取添加用户的数据包并发送至Repeater模块

【Web渗透入门】8.业务逻辑漏洞讲解

【Web渗透入门】8.业务逻辑漏洞讲解

【Web渗透入门】8.业务逻辑漏洞讲解

登录普通用户pikachu/000000, burpsuite抓包查看当前用户Cookie值为7sphr1lspfo17505eqv1ajvc14

【Web渗透入门】8.业务逻辑漏洞讲解

【Web渗透入门】8.业务逻辑漏洞讲解

返回burpsuite的Repeater模块, 打开上述抓到的数据包, 将Cookie值修改为pikachu普通用户用户的Cookie, 然后点击发送

【Web渗透入门】8.业务逻辑漏洞讲解

之后返回页面查看用户列表可发现多了一个用户Hacker,说明普通用户窃取了管理员创建用户的权限

【Web渗透入门】8.业务逻辑漏洞讲解

3、漏洞代码审计

1.水平越权

漏洞成因:没有进行session验证。

$link=connect();
//判断是否登录,没有登录不能访问
if(!check_op_login($link)){
   header("location:op1_login.php");
}
$html='';
if(isset($_GET['submit']) && $_GET['username']!=null){
   //没有使用session来校验,而是使用的传进来的值,权限校验出现问题,这里应该跟登录态关系进行绑定
   $username=escape($link, $_GET['username']);//escape()函数转码防止中文乱码
   $query="select * from member where username='$username'";
   $result=execute($link, $query);
   if(mysqli_num_rows($result)==1){
       $data=mysqli_fetch_assoc($result);
       $uname=$data['username'];
       $sex=$data['sex'];
       $phonenum=$data['phonenum'];
       $add=$data['address'];
       $email=$data['email'];

       $html.=<<<A
<div id="per_info">
  <h1 class="per_title">hello,{$uname},你的具体信息如下:</h1>
  <p class="per_name">姓名:{$uname}</p>
  <p class="per_sex">性别:{$sex}</p>
  <p class="per_phone">手机:{$phonenum}</p>    
  <p class="per_add">住址:{$add}</p>
  <p class="per_email">邮箱:{$email}</p>
</div>
A;
  }
}
2.垂直越权

漏洞成因:只验证了登录状态,没有对权限进行验证。

$link=connect();
//判断是否登录,没有登录不能访问
//这里只是验证了登录状态,并没有验证级别,所以存在越权问题。
if(!check_op2_login($link)){
   header("location:op2_login.php");
   exit();
}
if(isset($_POST['submit'])){
   if($_POST['username']!=null && $_POST['password']!=null){//用户名密码必填
       $getdata=escape($link, $_POST);//escape()函数转码防止中文乱码
       $query="insert into member(username,pw,sex,phonenum,email,address) values('{$getdata['username']}',md5('{$getdata['password']}'),'{$getdata['sex']}','{$getdata['phonenum']}','{$getdata['email']}','{$getdata['address']}')";
       $result=execute($link, $query);
       if(mysqli_affected_rows($link)==1){//判断是否插入
           header("location:op2_admin.php");
      }else {
           $html.="<p>修改失败,请检查下数据库是不是还是活着的</p>";

      }
  }
}

原文始发于微信公众号(ZackSecurity):【Web渗透入门】8.业务逻辑漏洞讲解

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月15日11:08:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【Web渗透入门】8.业务逻辑漏洞讲解https://cn-sec.com/archives/1649060.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息