前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最新XFF注入攻击和代码分析技术

最新XFF注入攻击和代码分析技术

作者头像
Ms08067安全实验室
发布2023-10-25 10:31:22
4390
发布2023-10-25 10:31:22
举报

XFF注入攻击

XFF注入攻击的测试地址在本书第2章。

X-Forwarded-For简称XFF头,它代表客户端真实的IP地址,通过修改X-Forwarded-For的值可以伪造客户端IP地址,在请求头中将X-Forwarded-For设置为127.0.0.1,然后访问该URL,页面返回正常,如图4-67所示。

图4-67

将X-Forwarded-For设置为127.0.0.1',再次访问该URL,页面返回MySQL的报错信息,结果如图4-68所示。

图4-68

将X-Forwarded-For分别设置为127.0.0.1' and 1=1#和127.0.0.1' and 1=2#,再次访问该URL,结果分别如图4-69和图4-70所示。

图4-69

图4-70

通过页面的返回结果,可以判断出该地址存在SQL注入漏洞,接着使用order by判断表中的字段数量,最终测试出数据库中存在4个字段,尝试使用Union查询注入方法,语法是X-Forwarded-for:-1' union select 1,2,3,4#,如图4-71所示。

图4-71

接着,使用Union注入方法完成此次注入。

XFF注入代码分析

PHP中的getenv()函数用于获取一个环境变量的值,类似于_SERVER或_ENV,返回环境变量对应的值,如果环境变量不存在,则返回FALSE。

使用以下代码即可获取客户端IP地址。程序先判断是否存在HTTP头部参数HTTP_CLIENT_IP,如果存在,则赋给$ip;如果不存在,则判断是否存在HTTP头部参数

HTTP_X_FORWARDED_FOR。如果存在,则赋给ip;如果不存在,则将HTTP头部参数REMOTE_ADDR赋给ip。

代码语言:javascript
复制
<?php
    $con=mysqli_connect("localhost","root","123456","test");
    if (mysqli_connect_errno()){
       echo "连接失败: " . mysqli_connect_error();
    }


    if(getenv('HTTP_CLIENT_IP')) {
        $ip = getenv('HTTP_CLIENT_IP');
    } elseif(getenv('HTTP_X_FORWARDED_FOR')) {
        $ip = getenv('HTTP_X_FORWARDED_FOR');
    } elseif(getenv('REMOTE_ADDR')) {
        $ip = getenv('REMOTE_ADDR');
    } else {
        $ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
    }
    
    $result = mysqli_query($con,"select * from winfo where `ip`='$ip'");
    if (!$result) {
        printf("Error: %s\n", mysqli_error($con));
        exit();
    }
    $row = mysqli_fetch_array($result);
    echo $row['username'] . " : " . $row['address'];
    echo "<br>";
?>

接下来,将$ip拼接到select语句中,然后将查询结果输出到界面上。

由于HTTP头部参数是可以伪造的,所以可以添加一个头部参数CLIENT_IP或X_FORWARDED_FOR。

当设置X_FORWARDED_FOR =-1' union select 1,2,3,4%23时,执行的SQL语句如下:

代码语言:javascript
复制
select * from winfo where `ip`='-1' union select 1,2,3,4#'

此时,SQL语句可以分为select * from winfo where `ip`='-1'和union select 1,2,3,4这两条,利用第二条语句(Union查询)就可以获取数据库中的数据。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Ms08067安全实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档