Skip to content

Commit

Permalink
Alpha Build
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnWoodman committed Nov 28, 2020
0 parents commit 53ecc51
Show file tree
Hide file tree
Showing 62 changed files with 6,014 additions and 0 deletions.
3 changes: 3 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
source 'https://rubygems.org'

gem 'jekyll'
67 changes: 67 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
colorator (1.1.0)
concurrent-ruby (1.1.7)
em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
eventmachine (1.2.7)
ffi (1.13.1)
forwardable-extended (2.6.0)
http_parser.rb (0.6.0)
i18n (1.8.5)
concurrent-ruby (~> 1.0)
jekyll (4.1.1)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 1.0)
jekyll-sass-converter (~> 2.0)
jekyll-watch (~> 2.0)
kramdown (~> 2.1)
kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0)
mercenary (~> 0.4.0)
pathutil (~> 0.9)
rouge (~> 3.0)
safe_yaml (~> 1.0)
terminal-table (~> 1.8)
jekyll-sass-converter (2.1.0)
sassc (> 2.0.1, < 3.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
kramdown (2.3.0)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.3)
listen (3.2.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (4.0.5)
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.4)
rouge (3.21.0)
safe_yaml (1.0.5)
sassc (2.4.0)
ffi (~> 1.9)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
unicode-display_width (1.7.0)

PLATFORMS
ruby

DEPENDENCIES
jekyll

BUNDLED WITH
2.1.2
674 changes: 674 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

14 changes: 14 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
.PHONY: serve serve-public bundle lint

serve:
bundle exec jekyll serve

serve-public:
bundle exec jekyll serve --host 0.0.0.0

bundle:
bundle install

lint:
yamllint _wadcoms/*.md
scripts/validate-schema.py
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# GTFOBins [![Build Status][]][travis]

[Build Status]: https://travis-ci.org/GTFOBins/GTFOBins.github.io.svg?branch=master
[travis]: https://travis-ci.org/GTFOBins/GTFOBins.github.io

WADComs is an interactive cheat sheet, containing a curated list of Unix/Windows offensive tools and their respective commands.

Find the project at https://johnwoodman.github.io
16 changes: 16 additions & 0 deletions _config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
title: WADComs

exclude: ['/scripts', '/Gemfile', '/Makefile', '/README.md']

permalink: pretty

collections:
wadcoms:
output: true

defaults:
- scope:
path: '_wadcoms'
values:
layout: bin
34 changes: 34 additions & 0 deletions _data/functions.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
# this is the rendering order of functions

Username:
label: Username
description: You've found username(s) and need to know what you can do with them.

Password:
label: Password
description: You've found password(s) and need to know what you can do with them.

SMB:
label: SMB
description: You've found the SMB service open and need to know what you can do with it.

WMI:
label: WMI
description: You've found the Windows Management Intstrumentation (WMI) service open and need to know what you can do with it.

DCOM:
label: DCOM
description: You've found the DCOM service open and need to know what you can do with it.

Kerberos:
label: Kerberos
description: You've found the kerberos service open and need to know what you can do with it.

No_Creds:
label: No Creds
description: You don't have any usernames or passwords and need to know what you can do.

RPC:
label: RPC
description: You've found the RPC service open and need to know what you can do with it.
200 changes: 200 additions & 0 deletions _includes/bin_table.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
<style>
.selected {
color: #ff0000 !important;
border-color: #ff0000 !important;
}
</style>

<div id="bin-search-wrapper">
<ul id="bin-search-filters" class="function-list">
{% for function_pair in site.data.functions %}
{% assign function_id = function_pair[0] %}
{% assign function = function_pair[1] %}
<li><input type="checkbox" id="{{ function.label }}" onclick='handleChange(this, "{{ function.label }}");'><label for="{{ function.label }}" data-title="{{ function.description | replace: '\n', ' ' }}">{{ function.label }}</label></li>
{% endfor %}
</ul>

<input id="bin-search" type="text" placeholder="Search among {{ site.wadcoms | size }} commands: <command> +<filter> ..."/>
</div>

<div id="bin-table-wrapper">
<table id="bin-table">
<thead>
<tr>
<th>Command</th>
</tr>
</thead>
<tbody>
{% for file in site.wadcoms %}
<tr>
<td><div class="bin-name"><a href="{{ file.url }}" style="text-decoration: none;">{% include get_code.html page_test=file %}</a></div><p style="margin-top: -12px;">{% include function_list.html bin=file %}</p></td>
</tr>
{% endfor %}
<!--{% include get_bin_name path=file.path %}-->
</tbody>
<tfoot>
<tr><td id="search-message" colspan="2">No binary matches...</td></tr>
</tfoot>
</table>
</div>

<script>

function handleChange(checkbox, label) {
if (checkbox.checked == true) {
console.log(label);
document.getElementById(label).className = 'match';
var slash = window.location.href.lastIndexOf("/");
if (window.location.href[slash+1] == "#") {
window.location.href+='+' + label
} else {
window.location.href+='#+' + label
}
} else {
document.getElementById(label).className = "";
label = label.replace(" ", "%20");
var new_href = window.location.href.replace("+"+label, "");
window.location.href = new_href;
if (window.location.hash == "") {
document.getElementById("bin-search").value = "";
}
}
}

function filter(query) {
var queryArray = query.toLowerCase().trim().split(/ *\+/);
var binPattern = queryArray[0];
var functionPatterns = queryArray.splice(1);

// filter rows
var noResults = true;
document.querySelectorAll('#bin-table tbody tr').forEach(function (row) {
var show = true;

var binName = row.children[0].firstElementChild.innerText.toLowerCase();

var functionElems = Array.from(row.children[0].childNodes[2].children);

if (show) {
functionElems.forEach((item) => {
item.className = '';
});
functionElems.forEach((item) => {
console.log("current item is " + item.innerText);
let siblings = [];
if (item.parentNode) {
let sibling = item.parentNode.firstChild;
while (sibling) {
if (sibling.nodeType == 1 && sibling !== item) {
siblings.push(sibling);
}
sibling = sibling.nextSibling;
}
for (i = 0; i < siblings.length; i++ ) {
console.log("current sibling is " + siblings[i].innerText);
var found = false;
functionPatterns.forEach((pattern) => {
console.log("Pattern: " + pattern);
if (!pattern) {
return;
}

if (siblings[i].innerText.toLowerCase().startsWith(pattern.toLowerCase())) {
found = true;
}
});
if (found) {
console.log("found in " + siblings[i].innerText);
siblings[i].className = 'match';
}
}
functionPatterns.forEach((p) => {
if (!p) {
return;
}

if (item.innerText.toLowerCase().startsWith(p.toLowerCase())) {
console.log("Parent matches!");
item.className = 'match';
}
});

}
});

}
var filled = true;
var found_binName = false;
if (binName.indexOf(binPattern) !== -1) {
found_binName = true;
}

functionElems.forEach((i) => {
if (i.className !== "match") {
filled = false;
}
});
if (!filled && functionPatterns.length != 0 || !found_binName) {
console.log("not filled");
row.style.display = 'none';
} else {
row.style.display = '';
noResults = false;
console.log("filled! " + row.style.display);
}
});

// update the search message visibility
var searchMessage = document.getElementById('search-message');
searchMessage.style.display = noResults ? 'table-cell' : 'none';
}

function applyFilter() {
// filter on load according to the URL
var searchBox = document.getElementById('bin-search');
var query = decodeURIComponent(location.hash.slice(1));
filter(query);
if (query) {
searchBox.value = query;
}
}

function setup() {
var searchBox = document.getElementById('bin-search');

// ensure height during filtering
var binTableWrapper = document.getElementById('bin-table-wrapper');
binTableWrapper.style.height = binTableWrapper.clientHeight + 'px';

// handle user input
searchBox.addEventListener('input', function () {
var query = searchBox.value;
history.replaceState(null, null, encodeURI('#' + query));
applyFilter();
});

// handle shortcuts
addEventListener('keydown', function (event) {
// focus search box on valid keydown
if (event.key.toLowerCase().match(/^[+a-z]$/) &&
!(event.ctrlKey || event.altKey || event.metaKey)) {
searchBox.focus();
searchBox.parentElement.scrollIntoView();
}
// clear filter on escape
else if (event.key === 'Escape') {
location.hash = searchBox.value = '';
searchBox.focus();
searchBox.parentElement.scrollIntoView();
}
});

// handle URL changes
window.onhashchange = applyFilter;

// trigger filter on page load
applyFilter();
}

setup();
</script>
8 changes: 8 additions & 0 deletions _includes/function_list.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<ul class="function-list">
{% for function_pair in site.data.functions %}
{% assign function_id = function_pair[0] %}
{% assign function = function_pair[1] %}
{% unless include.bin.functions[function_id] %}{% continue %}{% endunless %}
<li><a href="{{ include.bin.url }}#{{ function_id }}">{{ function.label }}</a></li>
{% endfor %}
</ul>
7 changes: 7 additions & 0 deletions _includes/functions_description.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<dl>
{% for function_pair in site.data.functions %}
{% assign function = function_pair[1] %}
<dt class="function-name">{{ function.label }}</dt>
<dd>{{ function.description | markdownify }}</dd>
{% endfor %}
</dl>
1 change: 1 addition & 0 deletions _includes/get_bin_name
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{% assign fn_parts = include.path | split: '/' | last | split: '.' %}{% assign fn_parts_size = fn_parts | size %}{% if fn_parts_size < 3 %}{{- fn_parts[0] -}}{% else %}{{- fn_parts[0] -}}.{{- fn_parts[1] -}}{% endif %}
14 changes: 14 additions & 0 deletions _includes/get_code.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{% capture bin_name %}{% include get_bin_name path=include.page_test.path %}{% endcapture %}

{% for function_pair in site.data.functions %}
{% assign function_id = function_pair[0] %}
{% assign function = function_pair[1] %}
{% assign examples = include.page_test.functions[function_id] %}
{% unless examples %}{% continue %}{% endunless %}

{% assign code_es = examples.first.code | escape | strip_newlines %}
{% if code_es != "empty" %}
{{ examples.first.code | escape }}
{% break %}
{% endif %}
{% endfor %}
9 changes: 9 additions & 0 deletions _includes/page_title.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<h1>
{% if page.url != '/' %}
<a href="/">..</a> /
{% endif %}
{{ include.title }}
<div class="github-buttons">
<a class="github-button" href="https://github.com/WADComs/WADComs.github.io" data-icon="octicon-star" data-show-count="true" aria-label="Star WADComs/WADComs.github.io on GitHub">Star</a>
</div>
</h1>
Loading

0 comments on commit 53ecc51

Please sign in to comment.