198 lines
5.7 KiB
JavaScript
198 lines
5.7 KiB
JavaScript
/*
|
|
* Copyright (c) 2006 LMH <lmh[at]info-pull.com>
|
|
* Added to Metasploit under the terms of the Metasploit Framework License v1.2
|
|
* Additions Copyright (C) 2006-2007 Metasploit LLC
|
|
*/
|
|
|
|
/*
|
|
* Global variables
|
|
*/
|
|
|
|
var web_windows_theme = "metasploit";
|
|
|
|
/*
|
|
* Window Management code and Dialogs
|
|
*/
|
|
|
|
var winIndex = 0;
|
|
|
|
/* Returns a unique Window identifier */
|
|
function obtainWindowId() {
|
|
return (winIndex++);
|
|
}
|
|
|
|
/*
|
|
* Show the About information dialog
|
|
*/
|
|
function openAboutDialog() {
|
|
var aboutWindow = new Window("about-window"+obtainWindowId(),
|
|
{
|
|
className: web_windows_theme,
|
|
width:450,
|
|
height:160,
|
|
zIndex: 100,
|
|
resizable: true,
|
|
title: "Metasploit Framework Web Console",
|
|
showEffect: Element.show,
|
|
hideEffect: Element.hide,
|
|
draggable:true
|
|
})
|
|
|
|
var about_content = "<div style='padding:5px'>The <strong>Metasploit Framework Web Console</strong>" +
|
|
" was originally developed by LMH <lmh@info-pull.com> and added to the Metasploit Framework" +
|
|
" under the terms of the Metasploit Framework License (v1.2). Continuing development and maintenance" +
|
|
" is provided by Metasploit LLC.</div>";
|
|
|
|
aboutWindow.getContent().innerHTML= about_content;
|
|
aboutWindow.showCenter();
|
|
}
|
|
|
|
|
|
/*
|
|
* Functions for opening modules lists and views
|
|
*/
|
|
|
|
function openExploitsWindow() {
|
|
var exploitList = create_window_ajax("/exploits/list", "exploits-list", "Available Exploits", 600, 300);
|
|
exploitList.setDestroyOnClose();
|
|
exploitList.showCenter();
|
|
}
|
|
|
|
function openAuxiliariesWindow() {
|
|
var auxList = create_window_ajax("/auxiliaries/list", "auxiliaries-list", "Auxiliary Modules", 600, 300);
|
|
auxList.setDestroyOnClose();
|
|
auxList.showCenter();
|
|
}
|
|
|
|
function openPayloadsWindow() {
|
|
var payloadList = create_window_ajax("/payloads/list", "payloads-list", "Available Payloads", 600, 300);
|
|
payloadList.setDestroyOnClose();
|
|
payloadList.showCenter();
|
|
}
|
|
|
|
function openEncodersWindow() {
|
|
var encoderList = create_window_ajax("/encoders/list", "encoders-list", "Available Encoders", 600, 300);
|
|
encoderList.setDestroyOnClose();
|
|
encoderList.showCenter();
|
|
}
|
|
|
|
function openNopsWindow() {
|
|
var nopList = create_window_ajax("/nops/list", "nops-list", "Available Nop Generators", 600, 300);
|
|
nopList.setDestroyOnClose();
|
|
nopList.showCenter();
|
|
}
|
|
|
|
function openSessionsWindow() {
|
|
var sessionList = create_window_ajax("/sessions/list", "sessions-list", "Metasploit Sessions", 600, 300);
|
|
sessionList.setDestroyOnClose();
|
|
sessionList.showCenter();
|
|
}
|
|
|
|
function openJobsWindow() {
|
|
var jobList = create_window_ajax("/jobs/list", "jobs-list", "Running Jobs", 600, 300);
|
|
jobList.setDestroyOnClose();
|
|
jobList.showCenter();
|
|
}
|
|
|
|
function openConsoleWindow() {
|
|
var console = create_window_ajax("/console", "console", "Metasploit Console", 760, 300);
|
|
console.setDestroyOnClose();
|
|
console.showCenter();
|
|
}
|
|
|
|
function openOptionsWindow() {
|
|
var weboptions = create_window_ajax("/options", "options", "Metasploit Options", 600, 300);
|
|
weboptions.setDestroyOnClose();
|
|
weboptions.showCenter();
|
|
}
|
|
|
|
function openConsoleWindowSession(sid) {
|
|
var console = create_window_ajax("/console?sid="+sid, "console", "Metasploit Session", 760, 300);
|
|
console.setDestroyOnClose();
|
|
console.showCenter();
|
|
}
|
|
|
|
function openConsoleWindowExploit(cid) {
|
|
var console = create_window_ajax("/console/index/"+cid, "console", "Metasploit Exploit", 760, 300);
|
|
console.setDestroyOnClose();
|
|
console.showCenter();
|
|
}
|
|
|
|
function openIDEWindow() {
|
|
window.open('/ide/start');
|
|
}
|
|
|
|
/*
|
|
* Task and helper functions
|
|
*/
|
|
|
|
/*
|
|
* Live search helper: sets an observer on text field with id (observer_id)
|
|
* for (module_type) modules (ex. exploits) and the id of the spinner container
|
|
* to show loading progress/indicator.
|
|
* Last argument gives a clean list with no formatting. (ul-li)
|
|
*/
|
|
function generic_live_search(observer_id, module_type, load_spinner_id, clean_list) {
|
|
new Form.Element.Observer(observer_id, 1,
|
|
function(element, value) {
|
|
/* Set an AJAX updater for the observer of the text field */
|
|
new Ajax.Updater(
|
|
'search_results',
|
|
'/msf/search',
|
|
{
|
|
asynchronous:true,
|
|
evalScripts:true,
|
|
onComplete:function(request)
|
|
{
|
|
Element.hide(load_spinner_id)
|
|
},
|
|
onLoading:function(request)
|
|
{
|
|
Element.show(load_spinner_id)
|
|
},
|
|
method:'post',
|
|
parameters:'module_type=' + module_type + '&clean_list=' + clean_list + '&terms=' + value
|
|
})
|
|
});
|
|
/* Initializes the contents with all available modules by
|
|
* doing a blank search
|
|
*/
|
|
$(observer_id).value = ' ';
|
|
}
|
|
|
|
/*
|
|
* Create and AJAX based window from extenal content
|
|
*/
|
|
function create_window_ajax(target_url, wid, wtitle, wwidth, wheight) {
|
|
var uid = obtainWindowId();
|
|
var new_mwindow = new Window(wid+'-'+uid,
|
|
{
|
|
className: web_windows_theme,
|
|
title: wtitle + ' (' + uid+')',
|
|
top:70,
|
|
left:100,
|
|
width:wwidth,
|
|
height:wheight,
|
|
resizable: true,
|
|
draggable: true,
|
|
url: target_url,
|
|
showEffect: Element.show,
|
|
hideEffect: Element.hide
|
|
});
|
|
return new_mwindow;
|
|
}
|
|
|
|
/*
|
|
* Open a window for the module of type (mtype) by id (refname) with tile (wtitle).
|
|
* Height and width are fixed, should be working values in all cases.
|
|
*/
|
|
function openModuleWindow(mtype, refname, wtitle) {
|
|
var mWin = create_window_ajax("/" + mtype + "/view?refname=" + refname, mtype + "-view-" + obtainWindowId(), wtitle, 700, 350);
|
|
mWin.setDestroyOnClose();
|
|
mWin.showCenter();
|
|
}
|
|
|
|
function run_tasks() {
|
|
// ...
|
|
}
|