如果在 URL 中加入未驗證的輸入,可能會讓攻擊者重寫請求參數的值。攻擊者可能會重寫現有的參數值、注入新的參數或利用直接得到的變量。
HTTP Parameter Pollution (HPP) 攻擊包含將編碼的查詢字符串分隔符注入其他現有的參數中。如果 Web 應用程序沒有正確地檢查用戶輸入,惡意用戶可能會破壞應用程序的邏輯,進行客戶端側或服務器側攻擊。如果再向 Web 應用程序提交參數,并且如果這些參數與現有參數的名稱相同,則 Web 應用程序可能會有下列一種反應
它可能只從第一個參數中提取數據
它可能從最后一個參數中提取數據
它可能從所有參數中提取數據并把它們連接起來
技術/HTTP 后端 總體解析結果 示例
ASP.NET/IIS 所有出現特定參數的地方 par1=val1,val2
ASP/IIS 所有出現特定參數的地方 par1=val1,val2
PHP/Apache 最后出現的地方 par1=val2
JSP,Servlet/Apache Tomcat 第一次出現的地方 par1=val1
JSP,Servlet/Oracle
Application Server 10g 第一次出現的地方 par1=val1
IBM HTTP Server 第一次出現的地方 par1=val1
mod_perl/Apache 變成陣列 ARRAY(0x8b9059c)
<%
...
$id = $_GET["id"];
header("Location:http://www.host.com/election.php?poll_id=" .$id);
...
%>
[1] Standards Mapping - OWASP Top 10 2010 - (OWASP 2010) A1 Injection
[2] Standards Mapping - OWASP Top 10 2007 - (OWASP 2007) A2 Injection Flaws
[3] Standards Mapping - OWASP Top 10 2004 - (OWASP 2004) A6 Injection Flaws
[4] Standards Mapping - Common Weakness Enumeration - (CWE) CWE ID 235
[5] HTTP Parameter Pollution Luca Carettoni, Independent Researcher & Stefano Di Paola, MindedSecurity
[6] HTTP Parameter Pollution Vulnerabilities in Web Applications Marco `embyte’ Balduzzi