mirror of
https://github.com/hak5/nano-tetra-modules.git
synced 2025-10-29 16:58:09 +00:00
Add modules to repository
This commit is contained in:
103
Meterpreter/api/module.php
Normal file
103
Meterpreter/api/module.php
Normal 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
47
Meterpreter/js/module.js
Normal 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
119
Meterpreter/module.html
Normal 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
10
Meterpreter/module.info
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"author": "audibleblink",
|
||||
"description": "meterpreter configuration utility",
|
||||
"devices": [
|
||||
"nano",
|
||||
"tetra"
|
||||
],
|
||||
"title": "Meterpreter",
|
||||
"version": "1.0"
|
||||
}
|
||||
Reference in New Issue
Block a user