研究人员最近发现,Java和Python运行时都存在漏洞,它们未能正确验证FTP URL中的特殊字符,最终导致黑客甚至能够绕过防火墙访问本地网络。

上周六,安全研究员Alexander Klink公布了一种很有趣的攻击方式,他利用Java应用中的XXE(XML External Entity)漏洞发送邮件。XXE漏洞就是欺骗应用去解析构建的XML文件,从而让XML解析器泄露敏感信息如文件、目录列表甚至是服务器上运行的进程。

Klink演示相同类型的漏洞还可以用来欺骗Java runtime向远程服务器发起FTP连接,URL形式是:

  1. ftp://user:password@host:port/file.ext

结果发现Java FTP客户端并不会过滤特殊的CR和LF字符,而会解析这些字符。CRLF的意思就是回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)。在FTP URL中插入这些字符会导致Java FTP客户端执行这些命令,甚至还可以执行SMTP (Simple Mail Transfer Protocol)命令,因为SMTP与FTP语法很相似。

Klink的演示中,黑客可以利用漏洞强迫Java程序向SMTP服务器发送邮件。

Klink在博客介绍了攻击场景:“当你能从一台能够解析XML的服务器连接到一台无限制(甚至没有垃圾邮件、病毒邮件过滤)的内部邮件服务器时,这个攻击就会非常有意思。”

Python和Java的新漏洞

看到Klink的攻击后,来自Blindspot Security的研究员Timothy Morgan又公开了一种类似的攻击方式,这种攻击方式能够针对Java和Python的FTP——由于该攻击可被用来绕过防火墙,因此更为严重。

Morgan把攻击称为“通过恶意URL的FTP协议流注入”,这种攻击和利用了缺少CRLF过滤特性注入恶意FTP命令的方法是类似的。

Morgan没有注入SMTP 命令,而是利用了FTP PORT命令让客户端连接FTP服务器的指定TCP端口。

安全人员指出,很多基于Linux的全状态数据包检测型防火墙(SPI),包括商业防火墙,会支持传统模式的FTP,当检测到来自客户端的FTP流量中的PORT命令时就会自动打开TCP端口,并且转发到那个FTP客户端的局域网IP。

这种攻击向量已经存在多年,所以conntrack的开发者们会加入额外的检查步骤,conntrack是一套大部分防火墙都会用到的Linux工具。加入检查之后,端口只会在PORT命令出现在TCP包开始的时候打开,这样就能确保真的是客户端发送了命令。

此处对黑客而言,攻击需要解决两个问题:

1. 发现客户端的内部IP地址,从而伪造PORT命令;

2. 调整客户端与服务器端的TCP包,让PORT命令落到包的开头

Morgan称他已经找到了解决这两个问题的方法,就是通过“通过恶意URL的FTP协议流注入”,并且他已经开发了PoC exp打算在Oracle和Python修复FTP客户端代码后公开。

“整个攻击(包括判断受害者内部IP的请求)是通过三个SSRF(服务器端请求伪造)实现的,这三个攻击打开了TCP端口”,Morgan周一在博客中说到,“每次额外的SSRF攻击都可以打开一个新的TCP端口。”

利用方法

利用漏洞的方法有很多,包括攻击那些安装了Java的用户。用户甚至都不需要执行恶意Java applet,因为exp可以通过Java Web开始程序传送。

“如果一个安装了Java的桌面用户访问了一个恶意网站,即使Java applet被关闭,还是可以触发Java Web Start解析JNLP文件,文件中可以包含恶意FTP代码,从而触发漏洞。”

攻击者还可以利用中间人或者利用SSRF/XXE漏洞来攻击那些运行Java应用的服务器。

Morgan表示,他成功攻击了运行最新内核的Linux防火墙,而来自Palo Alto Networks和思科的防火墙在默认设置下也未能幸免。虽然只测试了两款商业防火墙,但他预计受此影响的防火墙不在少数。

安全建议

建议防火墙厂商在Java和Python工程师修复漏洞之前关闭传统的FTP转换模式。

用户应该禁用浏览器的Java插件并且取消.jnlp文件与Java Web Start的关联。同时,对Java和Python应用应该审计SSRF和XXE漏洞。

作者:Sphinx
来源:51CTO

Python与Java曝漏洞,黑客利用FTP注入攻击可绕过防火墙相关推荐

  1. Java反序列化漏洞通用利用分析

    2015年11月6日,FoxGlove Security安全团队的@breenmachine 发布的一篇博客[3]中介绍了如何利用Java反序列化漏洞,来攻击最新版的WebLogic.WebSpher ...

  2. Lib之过?Java反序列化漏洞通用利用分析

    1 背景 2015年11月6日,FoxGlove Security安全团队的@breenmachine 发布的一篇博客[3]中介绍了如何利用Java反序列化漏洞,来***最新版的WebLogic.We ...

  3. web漏洞利用---XSS注入攻击

    XSS漏洞简介 XSS注入漏洞又称为"跨站脚本攻击(Cross Site Scripting)",为了不和层叠样式表(Cascading Style Sheets,CSS)混淆,所 ...

  4. 基于pikachu漏洞平台的 --SQL注入攻击学习与总结

    SQL注入攻击 基础知识 常见注释符号 使用示例 pikachu 漏洞联系平台 -- SQL注入 SQL注入攻击流程 注入点类型 数字型注入(POST) 字符型注入(GET) 搜索型注入 XX型注入 ...

  5. 黑客利用 Gatekeeper 0day 攻击 MacOS 计算机

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士 安全取决于最薄弱的环节.苹果最新发布的安全更新就佐证了这一点.苹果发布 macOS 操作系统更新,修复了可规避所有安全防御措施从而使未获批 ...

  6. 20145330 《网络对抗》 Eternalblue(MS17-010)漏洞复现与S2-045漏洞的利用及修复

    20145330 <网络对抗> Eternalblue(MS17-010)漏洞利用工具实现Win 7系统入侵与S2-045漏洞的利用及修复 加分项目: PC平台逆向破解:注入shellco ...

  7. java序列化_技术干货 | JAVA反序列化漏洞

    目录 反序列化漏洞 序列化和反序列化 JAVA WEB中的序列化和反序列化 对象序列化和反序列范例 JAVA中执行系统命令 重写readObject()方法 Apache Commons Collec ...

  8. xss植入_网站xss漏洞的利用过程

    XSS跨站脚本,是一种Web安全漏洞,有趣是是他并不像SQL注入等攻击手段攻击服务端,本身对Web服务器没有危害,攻击的对象是客户端,使用浏览器访问这些恶意地址的网民.这里就跟大家稍微讲解一下网站xs ...

  9. python如何执行代码漏洞_命令执行与代码执行漏洞原理

    本篇笔记摘自微信"黑白天",如有侵权,联系删除 命令执行定义 当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数.如PHP中的system,exec,sh ...

最新文章

  1. jQuery Masonry 一个 jQuery动态网格布局的插件
  2. WebApi用户登录验证及服务器端用户状态存取
  3. 拖拽元素自定义html模板,JS实现的自定义网页拖动类
  4. 法兰克服务器电源维修,发那科FANUC系统控制电源简介
  5. 浅谈mpvue项目目录和文件结构
  6. polycom安卓手机客户端_安卓 emoji 表情:全变了
  7. shell 中${b-2} and ${b:-2}
  8. email 添加附件 java_Java发送email 带附件 | 学步园
  9. [渝粤教育] 西南科技大学 单片机原理与应用 在线考试复习资料(1)
  10. :visible.sync 的作用
  11. 单片机c语言控制直流电机转速,一个用单片机控制直流电机的PWM调速程序
  12. 坚果云+Markor+Typora实现多平台Markdown协同编辑
  13. HITB CTF 2018 gundam 做题笔记
  14. 计算机字幕设置方法,字幕文件怎么用-教你5分钟,学会制作专业字幕。
  15. C语言实现入门级小游戏——三子棋
  16. TA100 T3.4
  17. C语言习题练习2——被5整除问题
  18. AcWing4084 号码牌 (并查集 / bitset优化Floyd)
  19. MySql :分表、分库、分片和分区
  20. 介绍一款很好用,超级棒的去中心化雷达 app

热门文章

  1. C语言中未显示声明函数返回值的类型
  2. python123程序设计题答案第三周_Python 3 程序设计学习指导与习题解答
  3. boost电路输出电流公式_boost电路解析
  4. nodejs 前端 返回数组给_互联网寒冬,一年经验字节跳动、虾皮、快手、拼多多前端面试总结...
  5. php 5.6 zend opcache,使用Zend OpCache 提高 PHP 5.5+ 性能
  6. controller属于哪一层_从数字一到十,在人们心中哪一个数字最为吉利?有什么原因?...
  7. SpringSecurity Form Login
  8. click Setuptools Integration
  9. javascript window Timing
  10. 前端-requests-flask对应关系 json