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

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

HTTPHeader概述

>请求报文(HTTP Request):由客户端发给服务器的消息,其组成包括请求行
(Request-Line)、请求头域(Header-Field)和请求体(Entity-Body)。
>响应报文(HTTP Response):由服务器回复给客户端的消息,其组成包括状态行
(Status-Line)、响应头域(Header-Field)和响应体(Entity-Body)。

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

HTTPHeader注入的前提条件
>能够对请求头消息进行修改
>修改的请求头信息能够带入数据库执行
>数据库没有对输入的请求头做过滤

常见的HTTPHeader注入类型
>Cookie注入
>Referer注入
>User-Agent注入
>XFF注入

方法描述
GET请求指定的页面信息,并返回实体主体。
HEAD类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头。
 
POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。POST请求可能会导致新的资源的建立或已有资源的修改。
PUT从客户端向服务器传送的数据取代指定的文档内容。
删除请求服务器删除指定的页面。
连接HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
选项允许客户端查看服务器的性能。
痕迹回显服务器收到的请求,主要用于测试或诊断。
修补是对PUT方法的补充,用来对已知资源进行局部更新。
类别状态码信息性
1XX请求正在处理请求正在处理
2XX成功请求正常处理完毕
3XX重定向需要进行附加操作以完成请求
4XX客户端错误服务器无法处理请求
5XX服务器处理请求错误服务器错误

HTTPHeader内容
User-Agent:使服务器能够识别客户端使用的操作系统,浏览器版本等(很多数据量大的
网站中会记录客户使用的操作系统或浏览器版本等存入数据库中)。
Cookie:网站为了辩别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常
经过加密)。
Host:客户端指定自己想访问的Web服务器的域名/IP地址和端口号。
X-Forwarded-For:简称XFF头,它代表客户端(即HTTP的请求端)真实的IP(通常一些
网站的防注入功能会记录请求端真实IP地址并写入数据库or某文件[通过修改XXF头可以实
现伪造IP])。
client-IP:同上。
Referer:浏览器向Web服务器表明自己是从哪个页面链接过来的。

实验环境
攻击机:Pentest-Atk
(1)操作系统:Windows10
(2)安装的应用软件:sqlmapBurpsuiteFireFox浏览器及其插件Hackbar、 等

(3)登录账号密码:操作系统帐号Administrator,密码684268
靶机:A-SQLi-Labs
(1)操作系统:win 2003
(2)安装的应用软件:Apache、MySQL(MariaDB)、PHP:DVWA、SQLi-Labs、

webug3.0环境搭建
(3)登录账号密码:操作系统帐号root,密码248624

实验原理

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

本实验的目标是:以Webug3.0网站的第五关为入口,利用报错注入的方式实施SQL注入,获取网站后台数据库中存放的flag。
1.访问Webug网站
在攻击机Pentest-Atk打开FireFox浏览器,并访问粑机A-SQLi-Labs上的Webug
网站。webug3.0下载环境搭建使用_Gjqhs的博客-CSDN博客

2.利用Burpsuite工具抓包(建议点击链接查看)
(1)启动Burpsufte
在攻击机Pentest-Atk的桌面文件夹Burp中,鼠标左键双击BURP.cmd程序,启动Burpsuite。(每个人不一样)

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

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

 注意:上述设置完成之后,不要关闭Burpsuite!
(4)设置Firefox代理
回到FireFox浏览器界面,鼠标右键单击浏览器地址栏右方的 FoxyProxy插件 图标按钮,在弹出的菜单中选择“为全部URLS启用代理服务器127.0.0.1:8080(也可以用别的)

...

开始拦截

 打开5:头部注入,并抓取

 成功抓取:

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

后续的步骤中,可以在Repeater选项卡下的Request栏中设置注入的payload,设置完成后点击Send按钮发送,并在Response栏中观察目标服务器的响应。
3.寻找注入点
(1)对拦截到的HTTP请求包不做任何修改,直接点击Send发送,此时
Response->Pretty下显示的内容:

图像化:

(2)在原始的HTTP请求包中添加头部字段×-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

思考一下为什么

X-Forwarded-For:order by 5

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

5.判断网站的回显位置

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

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

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

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

使用如下 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.获取fag表中的字段名

使用如下 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'

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

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

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

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

SQL注入 ——sql数据库操作基础(一)

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

SQL注入——基于布尔的盲注(八)

...

更多包括而不限于SQL注入的文章,关注我全部带走吧( •̀ ω •́ )✧

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值