基于HTTP Header注入
? 什么是http header注入 ? 基于http header(cookie)注入的测试 ? 基于http header(其他字段)注入的测试
什么Http Header注入
http header不是一个漏洞,是一个出现sql注入漏洞的场景,有些时候,后台开发人员为了验证客户端头信息(比如常用的cookie验证),它会把客户端的cookie获取到之后,去到后端进行相关的操作 或者通过http header头信息获取客户端的一些信息,比如useragent、accept字段等等。
会对客户端的http header信息进行获取并使用SQL进行处理,在拼接sql的时候,如果此时没有足够的安全考虑,则可能会导致基于http header的SQL Inject漏洞。
我们选择"http header"注入,点一下提示,有账号密码,我们登录这个场景
后端对我们http头数据进行了获取,我们可以在这个点测试一下,有没有进行相关数据库的操作,一般来说,像这种获取http头数据的地方,都有可能出现http头注入的问题
我们可以通过对返回页面数据包进行相关的测试,我们选择user-agent进行测试
根据我们刚刚的猜想,后端是对我们前端user-agent的数据进行获取,很有可能进行相关数据的拼接,我们把ua删掉,我们构造一个ua,先提交一个单引号
我们看到这里,直接报了个mysql语法的错误,这样可以直接看出来,这个地方是存在sql注入漏洞的,因为,它把我们的单引号放到sql里面去执行了,然后,又产生了语法错误,所以在这个地方,我们就可以构造对应的payload做对应的测试
一般来说,它获取到我们ua之后,它有可能insert到数据库去,然后,我们用insert这个思路,来做对应的测试,
firefox' or updatexml(1,concat(0x7e,database()),0) or'
我们看到它把数据库的名称给返回回来了,其实它形成的原理跟我们之前说的场景是一样的
我们把它还原,点提交
没问题,因为我们没有提交对应的payload
因为cookie这个信息是用来跟踪会话的,那我们的后台会去获取前端的cookie信息,虽然说,这个cookie是后端发下来的,但是当我们在页面之间进行跳转的时候,客户端其实会去获取前端的cookie,然后进行相关的验证,如果说,它获取到cookie之后,同样的,它把它放到数据库里面进行拼接,那同样也有可能产生sql注入漏洞
我们现在对cookie进行相关的测试,这边有个uname、pw,我们可以猜测到这个地方,大概就是我们登录的cookie,然后,我们在用户名后面增加个单引号
这边有个语法错误,那实际上意味着,这个地方是存在sql注入漏洞的,
admin' and updatexml(1,concat(0x7e,database()),0)#
用报错的方式做个测试
这里同样的,也返回了错误信息
我们在测试sql注入的时候,除了一些常见的输入点以外,http头部这个地方,也会常常产生sql注入漏洞
|