漏洞名称:
XFF注入、X-Forwarded-for注入
描述:
XFF,是X-Forwarded-for的缩写,XFF注入是SQL注入的一种,该注入原理是通过修改X-Forwarded-for头对带入系统的dns进行sql注入,从而得到网站的数据库内容。
检测条件:
1.Web业务运行正常
2.HTTP Header中存在X-Forwarded-for参数的调用
检测方法:
假设XFF注入PHP代码如下:
确定漏洞的存在
使用burpsuite工具进行抓包,并用Repeater模块对请求进行修改,分别修改X-Forwarded-For的值如下所示:
X-Forwarded-for: 127.0.0.1
X-Forwarded-for: 127.0.0.1’’
X-Forwarded-for: 127.0.0.1′ and 1=1#
。。。。
修复漏洞:
1.过滤http头中的X-Forwarded-for header中的内容,不允许其插入敏感字符,过滤字符参考sql注入修复方案。
2.过滤以下敏感字符
需要过滤的特殊字符及字符串有:
“net user”
“xp_cmdshell”
“add”
“exec master.dbo.xp_cmdshell”
“net localgroup administrators”
“select”
“count”
“Asc”
“char”
“mid”
“ ‘ ”
“ :”
“ ” ”
“insert”
“delete from”
“drop table”
“update”
“truncate”
“from”
“ % ”
其他补充:
来自:https://www.freebuf.com/company-information/220414.html
常见的存在HTTP头注入的参数,如下图:
User-Agent:使得服务器能够识别客户使用的操作系统,浏览器版本等.(很多数据量大的网站中会记录客户使用的操作系统或浏览器版本等存入数据库中)
Cookie:网站为了辨别用户身份进行session跟踪,并储存在用户本地终端上的数据(通常经过加密)
X-Forwarded-For:简称XFF头,代表了HTTP的请求端真实的IP。它被认为是客户端通过HTTP代理或者负载均衡器连接到web服务端获取源ip地址的一个标准(通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库或某文件[通过修改XXF头可以实现伪造IP])。
Rerferer:浏览器向 WEB 服务器表明自己的页面来源。
Host:客户端指定自己想访问的WEB服务器的域名/IP 地址和端口号。
XFF的危害
①数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。
②网页篡改:通过操作数据库对特定网页进行篡改。
③网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
④数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
⑤服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。