返回

SQL注入之Header注入篇

发布时间:2022-04-08 13:24:57 691
# 漏洞# 攻击# 黑客

Header注入简介


Header注入也叫HTTP头注入,其实它并不是一个新的SQL注入类型,而是指出现SQL注入漏洞的场景,有些时候,后台开发人员为了验证客户端头信息(比如常用的cookie验证)或者通过http header头信息获取客户端的一些资料,比如useragent、accept字段等,会对客户端的http header信息进行获取并使用SQL进行处理,如果此时没有足够的安全考虑则可能会导致基于http header的SQL Inject漏洞。

Header头分为以下几类:
User-Agent:使得服务器能够识别客户使用的操作系统,游览器版本等(很多数据量大的网站中会记录客户使用的操作系统或浏览器版本等存入数据库中)

Cookie:网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)

X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,(通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库or某文件[通过修改XXF头可以实现伪造IP])

Clien-IP:是代理服务器发送的HTTP头,取得用户的IP。

Rerferer:浏览器向 WEB 服务器表明自己是从哪个页面链接过来的

Host:客户端指定自己想访问的WEB服务器的域名/IP 地址和端口号


web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

正是因为http头信息容易被服务器收录到数据库中,给了”安全测试人员”可乘之机。因此,不仅仅可以改变UA头的状态,还可以改其它的属性,我们可以一个个试过去。


使用Header靶场去操作
这里可以看到一个登录框,和以往的SQL注入不同的是,它并不能用url的回显去判断是否存在SQL注入。

我们使用burp的字典爆破出它的账号密码分别是:admin和123456

我们查看源码发现,uagent这个头是本次注入的点,下面这段代码恰好是uagent里的条件

利用谷歌的插件ModHeader,并添加User-Agent,也就是ua头

源码中:$Insql = “INSERT INTO uagent (uagent,username) VALUES (‘$uagent’,’$uname’)”;根据这段代码条件,我们得到1’,’1’分别代表uagent中的(’uagent’,’uaername’),1’ and updatexml(1 conect(‘~’,database()),1),’1’)— a 得到数据库head_error的库名(updatexml:更新xml数据,conect:字符串拼接函数,‘~’:报错符)

我们通过1’ and updatexml (1,concat(‘~’,(select table_name from information_schema.tables where table_schema=database()limit 0,1)),1),’1’) — a 查询表名

发现并没有回显,接下来我们把and换成or,得到表名:flag_head

通过对字段名的查询得到 字段名:flag_h1

最后通过对字段名和表名的查询的到 flag:zKaQ-YXXXXX

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线