渗透测试图片
一张图片能暴露的渗透东西,比大多数人想象的测试多得多。去年帮一个客户做内网渗透,图片目标网站前端做了各种防护,渗透WAF规则写得密密麻麻。测试结果我在谷歌图片搜索里输入公司域名,图片蹦出来一张年会合影——照片角落里,渗透某位运维的测试显示器没关,屏幕上赫然是图片内部GitLab的登录页面,URL清晰可辨。渗透这就是测试渗透测试里最容易被忽略的入口:图片本身。 很多人以为渗透测试就是图片扫端口、跑字典、渗透找SQL注入。测试这些当然要做,图片但图片这个维度经常被跳过。实际上,一张JPEG文件里能藏的信息远超你的预期。EXIF数据是基本功,GPS坐标、相机型号、拍摄时间、甚至后期处理软件版本,全都写在里面。我见过最离谱的一个案例,某公司官网团队介绍页用的照片,EXIF里直接带着拍摄地点的经纬度,精确到小数点后六位。那个位置就是他们机房所在的办公楼。物理渗透的路线图,人家自己挂网上了。 图片文件本身也是攻击面。上传功能是渗透测试的老朋友了,但图片上传尤其微妙。后端如果只检查Content-Type,改个包就绕过去了。如果检查文件头呢?那就在正常图片后面追加恶意代码,GIF89a开头的老套路至今还能打穿不少系统。更隐蔽的是图片解析库的漏洞。ImageMagick、libpng、libjpeg,这些库的历史CVE列表长得吓人。一个精心构造的PNG文件,可能在服务器生成缩略图的那一刻就触发了远程代码执行。你扫端口扫不出来,因为漏洞在图片处理的逻辑层。 还有一种情况,图片作为信息泄露的载体,比文本更危险。文本可以脱敏,图片里的文字呢?截图工具一按,内部系统界面、聊天记录、邮件内容全进去了。渗透测试的信息收集阶段,我会专门去翻目标的招聘页面、新闻稿、公众号文章。那些配图里经常出现员工工位、白板上的架构图、甚至会议室投影屏幕上的代码。有个客户的测试报告里,我直接附了一张从他们官方博客下载的产品截图,图上调试控制台没关,API密钥就明晃晃挂在Network标签页里。 防御方怎么应对?图片上传要做二次渲染,把原图彻底解码后重新编码,剥离所有元数据。文件头校验不够,得用图像处理库真正解析一遍,确认像素数据合法。图片服务的权限要隔离,缩略图生成进程跑在沙箱里,别给它太好的脸色。至于信息泄露,发布前用exiftool批量清一遍EXIF,截图前检查浏览器标签页和通知栏。这些操作不复杂,但需要有人真正在意。 渗透测试的本质是找薄弱环节。图片这个环节的薄弱,往往不在于技术多高深,而在于没人觉得它是个问题。开发觉得图片就是图片,运维觉得上传功能测过了,市场部觉得配图好看就行。这种认知盲区,才是真正的漏洞。