尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

当图片成为攻击入口:PNG 里的隐蔽代码与分层防御指南

当图片成为攻击入口:PNG 里的隐蔽代码与分层防御指南 当图片成为攻击入口PNG 里的隐蔽代码与分层防御指南【免费下载链接】xss2pngPNG IDAT chunks XSS payload generator项目地址: https://gitcode.com/gh_mirrors/xs/xss2png浏览器、防火墙、WAF……我们把能想到的入口都守住了唯独图片没人设防。可恰恰是这座最安全的孤岛成了隐蔽攻击最舒服的温床也是图片文件安全的最大盲区。开源项目xss2png只做一件事把一段 XSS 代码塞进 PNG 文件的 IDAT 数据块生成一张肉眼完全正常的图片。隐蔽攻击由此可以藏在任何一张头像里而我们将在这篇文章里拆穿它并给出可落地的安全防御方案。威胁全景为什么看起来完全正常最危险 先看一个比喻。一张 PNG 文件就像一只标准集装箱内部按区块分舱文件头、调色板、图像数据、文件尾。其中IDAT 数据块是最大的那间货舱装着压缩后的像素数据。平时没人会去细看货舱里的每一件货物——它们是图像数据天然被信任。xss2png 这类工具做的事情相当于在装货时预先模拟了一遍开箱流程先把脚本逐字节翻译成像素色值再反向补齐压缩与过滤规则让任何标准的 PNG 解码器在解压时恰好还原出一段可执行的脚本。整个过程没有破坏 PNG 规范文件头合法、尺寸合法、压缩算法标准、图片渲染正常。隐蔽性不是来自加密或混淆而是来自完全合规。这正是它与木马、病毒的本质区别后者要躲过查杀必须隐藏自己而藏进 IDAT 块的 payload 无需隐藏因为它看起来就是一张标准的好图片。安全扫描依赖找异常而它让你找不到异常。视觉上它只是一张 32×32 的噪点色块图解码器却能在其中读出脚本——就像一封用隐形墨水写成的信只有该读的人才能读到。风险场景清单这些业务最容易中招 有图片上传的地方就有这套攻击的用武之地。请对照下面的场景看看你的系统是否在其中头像与个人资料图片几乎所有平台都允许用户传头像图片还要经历上传、存储、展示的全链路任何一个环节读取图片都可能成为触发点。富文本编辑器文章配图、商品图、评论区贴图编辑器通常只校验是不是图片不校验图片里还藏着什么。图床与 CDN图片被分发到多个边缘节点一旦某张图被判定为安全信任就会被复制成很多份。邮件与附件系统邮件网关对附件的图片检查往往最宽松恶意图片可能绕过网关直达收件箱。云盘与文件分享支持在线预览的云盘会在服务端解压、转码图片解压环节正是敏感动作发生的地方。一个简单的判断标准只要你的代码在某处读取了用户上传的图片且读取结果会影响后续响应就值得认真排查。不必恐慌——不是所有场景都能触发 XSS但图片内容影响业务逻辑的每一个环节都值得被重新审视。机制浅析三步拆解恶意代码如何藏进图片 不求读懂源码只求看懂思路。xss2png 的生成过程可以概括为三步第一步把脚本翻译成像素。每个字符对应一个 0~255 的字节恰好能映射成 RGB 颜色值。脚本被拆碎后写进像素点肉眼看到的是彩色噪点完全看不出文字。第二步预演拆包反向补齐过滤规则。PNG 在压缩前会对每行像素做过滤预处理以提升压缩率。工具提前算出解码器会如何处理每一行再把数据摆成解码后正好是脚本的样子——就像打包行李前先模拟一遍安检开箱把物品按开箱后必然出现的顺序码放。第三步压缩并封进 IDAT 数据块。预处理后的字节流用 zlib 压缩塞进 IDAT 块再补上合法的文件头尾。最终产物是一张规范、完整、能正常显示的 PNG只是解压后多出一段意外内容。这三步没有魔法全是顺应规范的数学运算。正因如此单纯搜创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表