zoukankan      html  css  js  c++  java
  • 审计7 水平越权

     1 <?php
     2 include_once('../sys/config.php');
     3 if (isset($_POST['submit']) && !empty($_POST['username']) ) {
     4 
     5     if (strlen($_POST['username'])>16) {
     6         $_SESSION['error_info'] = '用户名過長(用戶名長度<=16)';
     7         header('Location: edit.php');
     8         exit;
     9     }
    10 
    11     $clean_username = clean_input($_POST['username']);
    12     $clean_user_id = clean_input($_POST['id']);
    13     
    14     //判断用户名已是否存在
    15     $query = "SELECT * FROM users WHERE user_name = '$clean_username'";
    16     $data = mysql_query($query, $conn);
    17     if (mysql_num_rows($data) == 1) {
    18         $_SESSION['error_info'] = '用户名已存在';
    19         header('Location: edit.php');
    20         exit;
    21     }
    22     
    23     $query = "UPDATE users SET user_name = '$clean_username' WHERE user_id = '$clean_user_id'";
    24     mysql_query($query, $conn) or die("update error!");
    25     mysql_close($conn);
    26     //刷新缓存
    27     $_SESSION['username'] = $clean_username;
    28     header('Location: edit.php');
    29 }
    30 else {
    31     not_find($_SERVER['PHP_SELF']);
    32 }
    33 ?>

    首先在./user/edit.php中看见名字为

    搜索关键字  username 找到  ../sys/config.php  在11行和12行直接把user 和 id 读出来直接赋值带入数据库

    而且没有做任何的过滤

    在23行$query = "UPDATE users SET user_name = '$clean_username' WHERE user_id = '$clean_user_id'";

    发现他直接可以更新用户的用户名,而且用户id可控,也就是说可以修改任意id的用户名,并且查询用户资料。

    构造pyload:

    首先 需要三个参数   $_POST['submit']    $_POST['username']   $_POST['id']

    post 给updateName.php

    首先观察到用户  id为10的用户名字为shuaibi

    我目前的用户为root   id为8

    submit的值可以为任意数,只要设定了就好

    构造post参数  越权修改id为10的用户名字

    可以发现此时我已经以hankbay的身份登录

    查看数据库:

    id为10的用户姓名已被我修改。

    修复:需要在

    user_id = '$clean_user_id'";的地方修改为在ssion里去取,而不是直接post去取
  • 相关阅读:
    sql2slack alash3al 开源的又个轻量级工具
    pgspider fetchq 扩展docker镜像
    godns 集成coredns 的demo
    godns 简单dnsmasq 的dns 替换方案
    aviary.sh 一个基于bash的分布式配置管理工具
    使用coredns 的template plugin实现一个xip 服务
    nginx 代理 coredns dns 服务
    基于nginx proxy dns server
    几个不错的geodns server
    spring boot rest api 最好添加servlet.context-path
  • 原文地址:https://www.cnblogs.com/pojun/p/7360447.html
Copyright © 2011-2022 走看看