OCR 转 XSS

2022-02-17 09:59:19 浏览数 (1)

光学字符识别 (OCR) 是从图像或任何文档(如 PDF)中以电子方式提取文本并以多种方式重复使用的过程,例如全文搜索、发票处理、文档验证等。这种用例将是有害的当这些提取的文本/结果在应用程序中的某处使用或在未经验证的情况下被反映时,这一点很明显。

所以我们只需要准备一个包含我们的 XSS 向量的图像,如果解析器解析并将输出反映给用户,它将导致 XSS。

我以简单的jpg为例

你可以从这里创建这样的图像。

我将tesseract用于 OCR 以及一个简单的烧瓶服务器,该服务器接受图像作为输入,它解析并将提取的内容反射回管理员或其他用户。你可以在这里找到代码。

  1. 开始点击 python ocr.py
  2. 现在访问本地服务器 127.0.0.1:5000
  3. 上传以上文件
  4. 现在访问 /admin/ocr/files
  5. 你会看到警报

同样,创建带有标签或盲 XSS 有效负载的图像,以确认对本地服务器的 pingback。

笔记:

不同的解析器对某些字符(例如 tesseract)的行为不同,会将正斜杠“/”视为 L,因此当您输入 http:// 时,它将变为 http:/l,因为它在浏览器中不起作用,所以我是使用反斜杠。像这样,我们也必须为其他人弄清楚。

在这里,我使用 ngrok.io 只是为了确认您可以使用 burp collaborator 或任何其他工具的 ping。因此,使用此内容创建您的图像并上传并查看是否有任何点击。

回复:

修复: 如果您使用 OCR 服务,不仅要使用文件名,还要在将图像或 pdf 中提取的文本存储到数据库之前对其进行清理。

上传图片后,检查响应是否也反映了图片的内容?如果是,则可能在某个地方正在使用它,并且如果没有检查输出文本是如何反映的,那么它可能会导致 XSS,尤其是使用 OCR 服务的应用程序。

因此,下次当您看到任何要求 KYC 或上传扫描文件、护照尺寸照片、文件验证的应用程序时,您可以乱用它。

0 人点赞