PHP代码审计 15 实战盾灵投稿系统 cookie 后台绕过漏洞

本文记录 PHP 代码审计的学习过程,教程为暗月 2015 版的 PHP 代码审计课程

PHP 代码审计博客目录

1. 简介

盾灵投稿系统 脚本之家下载链接

互联网上下载源码,自己搭建一下就好了

我搭建的本地系统位置为 http://10.10.10.130/dunling,是在 Metasploitable-linux2 上面改的,本系统需要修改 mysql 密码不为空,需要在 phpmyadmin 上面创建一个数据库。

mysql 默认为空,需要修改数据库密码

use mysql;
update user set password=password('asd123456') where user='root' and host='localhost'; 

# 命令行模式下重载权限表
mysqladmin -u root -p -h 10.10.10.130 reload

创建数据库

在这里插入图片描述

即可安装盾灵投稿系统

如果需要使用 mysql 空密码登录,只需要修改 /var/www/phpMyAdmin/libraries/config.default.php 文件即可

$cfg['Servers'][$i]['AllowNoPasswordRoot'] = true;

2. 后台登录绕过

  1. 使用注释绕过

    1. 查看源码

      dunling/admin/login.php

       <?php
       require '../config.php';
       $adminname = $_POST['adminname'];
       $adminpass = $_POST['adminpass'];
       $adminpass .= "Axphp.com";
       $adminpass = md5($adminpass);
       $adminsql = "select * from axphp_admin where adminname='$adminname' and adminpass='$adminpass'";
       $adminery = mysql_query($adminsql, $config);
       $adminnum = mysql_num_rows($adminery);
       if ($adminnum == "1") {
       setcookie("admin", "Y", time() + 3600, '/');
       setcookie("admin_name", $adminname, time() + 3600, '/');
       header("location:axadmin.php");
       } else {
       header("location:axphp.php");
       }
       ?>
      
    2. 绕过

      浏览器执行 http://10.10.10.130/dunling/admin/

      在这里插入图片描述

      打开 firefox 的 HTTP Header live 插件

      输入账号(admin)和密码(任意内容)

      会弹出 HTTP Header live 页面

      在这里插入图片描述

      修改数据并且提交

      账号位置输入 admin ‘#
      此处的 admin 确实是此 cmd 的账号名,’ 为数据库闭合, # 为注释

      在这里插入图片描述

      点击下面的 发送,浏览器页面会刷新进入到 cmd 里面,绕过成功。

  2. 使用 ’ or 1=1 绕过

    1. 查看源码

    上述源码中引用了 axadmin.php 和 axphp.php 文件

    查看 axadmin.php 源码,发现调用了 check.php 文件

    查看 check.php 文件源码可以发现此文件为登录权限的判断机制

     <?php
     error_reporting(0);
     isset($_COOKIE['admin'])?$check=$_COOKIE['admin']:$check=null;
     isset($_COOKIE['admin_name'])?$admin_user=$_COOKIE['admin_name']:$user=null;
     if($check==null){header("Location:../index.php");exit;}
     ?>
    

    上述源码中仅仅是判断 cookie 是否存在来作为用户是否登录的凭证

    1. 绕过

    启动 burpsuite ,开启截断功能

    浏览器访问 http://10.10.10.130/dunling/admin/admin_pass.php

    由于 admin/admin_pass.php 页面为登录之后才可以访问的页面,随意类似于这个的页面都可以作测试页面

    在这里插入图片描述

    将此页面发送到 Burpsuite 的 Repeater 中

    在这里插入图片描述

    提交之后的页面为已绕过登录的页面

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值