主页 > 网络知识 > 用多态图片实现谷歌学术网站(Google Scholar)XSS漏洞触发(2)

用多态图片实现谷歌学术网站(Google Scholar)XSS漏洞触发(2)

 

用多态图片实现谷歌学术网站(Google Scholar)XSS漏洞触发

用多态图片实现谷歌学术网站(Google Scholar)XSS漏洞触发

以下为alert()代码嵌入到IEND后的PNG图片:

 

 

用多态图片实现谷歌学术网站(Google Scholar)XSS漏洞触发

用多态图片实现谷歌学术网站(Google Scholar)XSS漏洞触发

 

Payload嵌入到PNG的iDAT区域

在PNG图片中,iDAT块常用来存储一些pixel像素信息,根据Web平台采用的转化机制,我们可以直接在iDAT块中插入XSS Payload,或是想办法绕过一些调整大小或重新采样操作。这里,谷歌学术仅只是生成了JPG图片而非PNG图片,所以这种技术在此也不适用。

Payload嵌入到JPG的ECS区域

在标准的JPEG文件交换格式(JFIF)中,熵编码数据段(entropy-coded data segment,ECS)包含了原始霍夫曼压缩位流的输出,该输出代表了包含图像数据的最小编码单位(MCU)。理论上说,可以将Payload嵌入到该区域中,但也不能保证Web后端在实施图片转化时会破坏Payload。所以,这就需要反复测试,创建一个在ECS区域嵌入Payload且不被图片转化机制破坏的JPG。

首先,我创建了与转化后图片质量相同的一个原始测试JPG图片,然后,基于这张0长度字符可更改EXIF信息的图片进行代码嵌入测试。经过反复实验,我发现把Payload放到距ESC不同偏移量的位置均不奏效,但是我发现一种方法:谷歌学术在处理图片时,如果用夹杂0×00 和 0×14字节把ESC分隔后,则ESC中的前几个字节信息将会得以保留,如下:

 

用多态图片实现谷歌学术网站(Google Scholar)XSS漏洞触发

基于上述测试,我终于找到了正确的Payload安置点,可以保证其中的Payload在上传到谷歌学术后,不会被图片转化机制破坏。最终,也成功地在加载图片请求时触发了XSS弹窗alert(1):

 

 

用多态图片实现谷歌学术网站(Google Scholar)XSS漏洞触发

 

另外,我们也提供了更多的XSS代码嵌入图片,如以下的onclick()

 

用多态图片实现谷歌学术网站(Google Scholar)XSS漏洞触发

用多态图片实现谷歌学术网站(Google Scholar)XSS漏洞触发

 

以下的ver-xss-ecs.jpeg">mouseover():

 

用多态图片实现谷歌学术网站(Google Scholar)XSS漏洞触发

用多态图片实现谷歌学术网站(Google Scholar)XSS漏洞触发

 

当然了,你也可以访问我们放在Github上的开源测试工具StandardizedImageProcessingTest,用它来进行把玩研究。

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!