Add modules to repository

This commit is contained in:
Sebastian Kinne
2017-11-16 16:42:22 +11:00
commit d0aa1e38ef
707 changed files with 96750 additions and 0 deletions

103
Meterpreter/api/module.php Normal file
View File

@@ -0,0 +1,103 @@
<?php namespace pineapple;
class Meterpreter extends Module
{
public function route()
{
switch ($this->request->action) {
case 'getState':
$this->getState();
break;
case 'startMeterpreter':
$this->startMeterpreter();
break;
case 'stopMeterpreter':
$this->stopMeterpreter();
break;
case 'enableMeterpreter':
$this->enableMeterpreter();
break;
case 'disableMeterpreter':
$this->disableMeterpreter();
break;
case 'saveConfig':
$this->saveConfig();
break;
}
}
private function getState()
{
if (!file_exists("/etc/config/meterpreter")) {
exec("touch /etc/config/meterpreter");
}
$this->response = array(
"success" => true,
"running" => $this->checkRunning('meterpreter'),
"enabled" => $this->uciGet("meterpreter.autostart"),
"config" => $this->getConfig()
);
}
private function startMeterpreter()
{
$host = $this->uciGet("meterpreter.host");
$port = $this->uciGet("meterpreter.port");
$this->execBackground("meterpreter $host $port");
$this->response = array("success" => true);
}
private function stopMeterpreter()
{
exec("killall meterpreter");
$this->response = array("success" => true);
}
private function enableMeterpreter()
{
$host = $this->uciGet("meterpreter.host");
$port = $this->uciGet("meterpreter.port");
exec("sed -i '1i /usr/bin/pineapple/meterpreter $host $port & # inserted by meterpreter module' /etc/rc.local");
$this->uciSet("meterpreter.autostart", true);
$this->response = array("success" => true);
}
private function disableMeterpreter()
{
exec("sed -i '/meterpreter/d' /etc/rc.local");
$this->uciSet("meterpreter.autostart", false);
$this->response = array("success" => true);
}
private function getConfig()
{
return array(
"host" => $this->uciGet("meterpreter.host"),
"port" => $this->uciGet("meterpreter.port")
);
}
private function saveConfig()
{
$args = $this->request->params;
$this->uciSet("meterpreter.host", $args->host);
$this->uciSet("meterpreter.port", $args->port);
$this->toggleMeterpreter(); //resets rc.local to new settings in autostart is enabled
$this->response = array("success" => true, "args"=> $args);
}
private function toggleMeterpreter()
{
$enabled = $this->uciGet("meterpreter.autostart");
if ($enabled == "1") {
$this->disableMeterpreter();
$this->enableMeterpreter();
}
}
}

47
Meterpreter/js/module.js Normal file
View File

@@ -0,0 +1,47 @@
registerController('meterpreterCtrl', ['$api', '$scope', function($api, $scope) {
$scope.running = false
$scope.enabled = false
$scope.config = ""
getState()
$scope.startMeterpreter = function () {
apiHelper('startMeterpreter', null, curry(getState))
}
$scope.stopMeterpreter = function () {
apiHelper('stopMeterpreter', null, curry(getState))
}
$scope.enableMeterpreter = function () {
apiHelper('enableMeterpreter', null, curry(getState))
}
$scope.disableMeterpreter = function () {
apiHelper('disableMeterpreter', null, curry(getState))
}
$scope.saveConfig = function () {
apiHelper('saveConfig', $scope.config, curry(getState))
}
function getState () {
apiHelper('getState', null, function(response) {
if (response.success) {
$scope.running = response.running
$scope.enabled = response.enabled
$scope.config = response.config
}
})
}
function apiHelper (action, payload, handler) {
$api.request({ module: 'Meterpreter', action: action, params: payload }, handler)
}
function curry (cb) {
return function (response) {
response.success ? cb() : console.error(response, response.errors)
}
}
}])

119
Meterpreter/module.html Normal file
View File

@@ -0,0 +1,119 @@
<div class="h4 well"> meterpreter </div>
<div class="row" ng-controller="meterpreterCtrl">
<div class="col-md-4">
<div class="panel panel-default" style="min-height:226.5px">
<div class="panel-heading">
<h3 class="panel-title">
Control
</h3>
</div>
<div class="panel-body">
<table class="table">
<tbody>
<tr class="form-inline">
<td class="text-muted">meterpreter</td>
<td>
<div class="hidden-xs">
<button ng-show="running" type="button" class="btn btn-sm btn-danger pull-right" ng-click="stopMeterpreter()">Stop</button>
<button ng-hide="running" type="button" class="btn btn-sm btn-primary pull-right" ng-click="startMeterpreter()">Start</button>
</div>
<div class="visible-xs">
<button ng-show="running" type="button" class="btn btn-lg btn-danger pull-right" ng-click="stopMeterpreter()">Stop</button>
<button ng-hide="running" type="button" class="btn btn-lg btn-primary pull-right" ng-click="startMeterpreter()">Start</button>
</div>
</td>
</tr>
<tr>
<td class="text-muted">Autostart</td>
<td>
<div class="btn-group pull-right">
<div class="hidden-xs">
<button ng-click="enableMeterpreter()" ng-class="!enabled ? 'btn-default' : 'btn-success'" class="btn btn-sm">I</button>
<button ng-click="disableMeterpreter()" ng-class="!enabled ? 'btn-danger' : 'btn-default'" class="btn btn-sm">0</button>
</div>
<div class="visible-xs">
<button ng-click="enableMeterpreter()" ng-class="!enabled ? 'btn-default' : 'btn-success'" class="btn btn-lg">I</button>
<button ng-click="disableMeterpreter()" ng-class="!enabled ? 'btn-danger' : 'btn-default'" class="btn btn-lg">0</button>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="col-md-8">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">
Configure
</h3>
</div>
<div class="panel-body">
<form class="form-horizontal" ng-submit="saveConfig()">
<div class="row" style="margin-bottom: 1.4em">
<div class="col-md-12">
<div class="col-md-9">
<label>Host</label>
<input type="text" class="form-control" placeholder="Hostname or IP" ng-model=config.host>
</div>
<div class="col-md-3">
<label>Port</label>
<input type="text" class="form-control" placeholder="Remote Port" ng-model=config.port>
</div>
</div>
</div>
<div class="row" style="margin-bottom: 1.4em">
<div class="hidden-xs">
<div class="col-md-2" style="margin-top: 1.8em;">
<button type="submit" class="btn btn-primary btn-block">
Save
<img ng-show="savingConf" src="img/throbber.gif" class="ng-hide">
</button>
</div>
</div>
<div class="visible-xs">
<div class="col-md-2" style="margin-top: 1.8em;">
<button type="submit" class="btn btn-primary btn-lg btn-block">
Save
<img ng-show="savingConf" src="img/throbber.gif" class="ng-hide">
</button>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>

10
Meterpreter/module.info Normal file
View File

@@ -0,0 +1,10 @@
{
"author": "audibleblink",
"description": "meterpreter configuration utility",
"devices": [
"nano",
"tetra"
],
"title": "Meterpreter",
"version": "1.0"
}