Shooting field audit summary
目录
- 说明
- 前言
- 审计过程
- 小结
前言
下午审计了一波,成功用burp把环境搞崩= =哈哈哈
说明
V靶场全名(VAuditDemo_Debug),我这里简称V
审计过程
这是我之前审计过的地方(我扔博客里了,这里就不在重复):
越权的发现
代码路径:
\VAuditDemo-master\VAuditDemo_Debug\user\UpdateName.php
代码如下:
<?php
include_once('../sys/config.php');
if (isset($_POST['submit']) && !empty($_POST['username']) ) { /*判断是否存在POST请求的submit和username参数*/
    if (strlen($_POST['username'])>16) { /*判断用户名是否长过16位*/
        $_SESSION['error_info'] = '用户名過長(用戶名長度<=16)';
        header('Location: edit.php');
        exit;
    }
    $clean_username = clean_input($_POST['username']);
    $clean_user_id = clean_input($_POST['id']);
    //判断用户名已是否存在
    $query = "SELECT * FROM users WHERE user_name = '$clean_username'"; /*b不存在SQL注入*/
    $data = mysql_query($query, $conn);
    if (mysql_num_rows($data) == 1) {
        $_SESSION['error_info'] = '用户名已存在';
        header('Location: edit.php');
        exit;
    }
    $query = "UPDATE users SET user_name = '$clean_username' WHERE user_id = '$clean_user_id'"; /*b不存在SQL注入*/
    mysql_query($query, $conn) or die("update error!");
    mysql_close($conn);
    //刷新缓存
    $_SESSION['username'] = $clean_username;
    header('Location: edit.php');
}
else {
    not_find($_SERVER['PHP_SELF']);
}
/*
1.先判断是否有POST请求
2.判断新的用户名是否长过16位
3.判断用户名是否存在
4.更新数据库名
PS:少了检测请求的ID是否等于用户的id,也就是说通过修改这个ID就能达到修改别的用户的名称实现平行越权
*/
?>
实验:
第一个用户:admins 密码:admin
第二个用户:我喜欢你 密码:111111
使用我喜欢你这个用户来改admins用户的用户名:
修改前的数据库:
Burp抓包重放:
修改后的数据库:
文件包含漏洞
在审计别的洞的时间用burp扫了一波,发现index.php居然有文件包含= =
burp扫描配置如下:

文件包含:
index.php
<?php 
require_once('sys/config.php');
require_once('header.php');
?>
<div class="row">
    <?php
    /* Include */
    if (isset($_GET['module'])){
        include($_GET['module'].'.inc');/*指定后缀*/
    }else{
    ?>
    <div class="jumbotron" style="text-align: center;">
        <h1><b>VAuditDemo</b></h1>
        <p>一个简单的Web漏洞演练平台</p><br />
    </div>
    <div class="col-lg-12">
        <h2>用於演示講解PHP基本漏洞</h2>
        <p></p>
    </div>
    <?php
    }
    ?>
</div>
<?php
require_once('footer.php');
?>
绕过方法有两种:
1.远程文件包含 要求:allow_url_fopen开启
2.zip协议  要求:zip协议没被禁止,知道绝对路径
远程包含payload如下:
http://127.0.0.1/index.php?module=http://127.0.0.1/1.txt?

ZIP协议如下:
http://127.0.0.1/index.php?module=zip://I:\phpstudy\PHPTutorial\WWW\VAuditDemo-master\VAuditDemo_Debug\demo.zip%23

压缩包图片:
这里有个坑:就是你用zip协议的时候压缩包里面文件名一定要一样不然不行的,如果他指定后缀名
你就两个后缀名 比如:
指定后缀为:dd.txt 那么你压缩包里面就要放个dd.txt
指定后缀名为:.inc和上面一样那么压缩包放个.inc.inc
靶场下载地址:http://t.cn/Ec19F3B
小结
快速判断是否有SQL注入,在带入数据库查询之前看看参数是否有使用什么函数之类的,有就直接过,除非数据库编码是GBK,如果是黑名单替换,看看是否能绕过
在框架的php文件里面快速搜索include这个关键词,看看哪里有参数可控的地方,如果有测试一下说不定能找到个文件包含
转载请声明:转自422926799.github.io
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:Shooting field audit summary
本文作者:九世
发布时间:2019-02-13, 00:45:22
最后更新:2019-04-19, 20:36:16
原始链接:http://jiushill.github.io/posts/9cb056fa.html版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。