- Refactored the lab listing to group labs by unique categories and sort them alphabetically for better organization. - Added a new CTF challenge titled "Feeling Blu Challenge - Web Security CTF" with comprehensive instructions and resources for penetration testing and privilege escalation. - Updated the lab layout to include tags for better categorization and improved user navigation. - Introduced multiple new images to support the new lab content, enhancing visual learning and engagement.
10 KiB
layout, title
| layout | title |
|---|---|
| default | Hacktivity Lab Sheets |
Hacktivity Lab Sheets
Welcome to the Hacktivity SecGen lab sheets repository. This site contains hands-on cybersecurity lab exercises designed for educational purposes.
Available Labs
{% if site.labs.size > 0 %}
{% comment %} Sort categories alphabetically {% endcomment %} {% assign sorted_categories = all_categories | sort %}
{% comment %} Display labs grouped by category {% endcomment %} {% for category in sorted_categories %}
{{ category | replace: '_', ' ' | capitalize }}
<div class="category-labs">
{% for lab in site.labs %}
{% if lab.categories contains category %}
<div class="lab-item">
<h3><a href="{{ lab.url | relative_url }}">{{ lab.title }}</a></h3>
<p class="lab-description">{{ lab.description | default: lab.excerpt }}</p>
<div class="lab-meta">
{% if lab.author %}
<div class="author">
<strong>{% if lab.author.first %}Authors:{% else %}Author:{% endif %}</strong>
{% if lab.author.first %}
{% assign author_count = lab.author.size %}
{% for author in lab.author %}
{% if forloop.last and author_count > 1 %}and {% endif %}{{ author }}{% unless forloop.last %}, {% endunless %}
{% endfor %}
{% else %}
{{ lab.author }}
{% endif %}
</div>
{% endif %}
{% if lab.license %}
<div class="license">
<strong>License:</strong> {{ lab.license }}
</div>
{% endif %}
{% if lab.cybok %}
<div class="cybok">
<strong>CyBOK Knowledge Areas:</strong>
{% for cybok_item in lab.cybok %}
<span class="cybok-ka">{{ cybok_item.ka }}: {{ cybok_item.topic }}</span>
{% endfor %}
</div>
{% endif %}
{% if lab.tags %}
<div class="tags">
{% for tag in lab.tags %}
<span class="tag">{{ tag }}</span>
{% endfor %}
</div>
{% endif %}
</div>
</div>
{% endif %}
{% endfor %}
</div>
{% endfor %}
{% comment %} Display labs without categories {% endcomment %} {% assign uncategorized_labs = site.labs | where: 'categories', nil %} {% if uncategorized_labs.size > 0 %}
General Labs
{{ lab.title }}
{{ lab.description | default: lab.excerpt }}
No labs are currently available. Labs will be added as they are developed.
Check back soon for new cybersecurity lab exercises!
About
These lab sheets are designed to provide practical, hands-on experience with various cybersecurity concepts and techniques.
These labs are written to be completed on VMs configured with practical hacking/security challenges.
Option 1: Hacktivity Cyber Security Labs (Recommended)
Visit Hacktivity Cyber Security Labs for a fully configured, cloud-based lab environment
- No setup required - labs are pre-configured and ready to use
- Access to virtual machines and all required tools
- Perfect for students and educators
Option 2: Manual Setup with SecGen
For advanced users who want to build their own lab environment:
- Use SecGen (Security Scenario Generator) to create vulnerable VMs
- Requires technical expertise in virtualization and security tools
Contributing
If you'd like to contribute new labs or improvements to existing ones, please see the repository's contribution guidelines.
\s*\s*Tip:<\/em>\s*([^<]+(?:<[^>]+>[^<]*<\/[^>]+>[^<]*)*)<\/p>\s*<\/blockquote>/gi, '
$1' ); // Handle > *Tip: ANYTHINGHERE* (entire content in italics) contentBody.innerHTML = contentBody.innerHTML.replace( /\s*\s*Tip:\s*([^<]+(?:<[^>]+>[^<]*<\/[^>]+>[^<]*)*)<\/em>\s*<\/p>\s*<\/blockquote>/gi, '
$1' ); // Also handle > TIP: without italics contentBody.innerHTML = contentBody.innerHTML.replace( /\s*\s*Tip:\s*([^<]+(?:<[^>]+>[^<]*<\/[^>]+>[^<]*)*)<\/p>\s*<\/blockquote>/gi, '
$1' ); // Handle block-level action, warning, note, hint patterns contentBody.innerHTML = contentBody.innerHTML.replace( /\s*\s*Action:\s*([^<]+(?:<[^>]+>[^<]*<\/[^>]+>[^<]*)*)<\/p>\s*<\/blockquote>/gi, '
$1' ); contentBody.innerHTML = contentBody.innerHTML.replace( /\s*\s*Warning:\s*([^<]+(?:<[^>]+>[^<]*<\/[^>]+>[^<]*)*)<\/p>\s*<\/blockquote>/gi, '
$1' ); contentBody.innerHTML = contentBody.innerHTML.replace( /\s*\s*Note:\s*([^<]+(?:<[^>]+>[^<]*<\/[^>]+>[^<]*)*)<\/p>\s*<\/blockquote>/gi, '
Note: $1' ); contentBody.innerHTML = contentBody.innerHTML.replace( /\s*\s*Hint:\s*([^<]+(?:<[^>]+>[^<]*<\/[^>]+>[^<]*)*)<\/p>\s*<\/blockquote>/gi, '
Hint: $1' ); } }); </script>