Path: blob/master/extensions/admin_ui/media/javascript/ui/panel/tabs/ZombieTabXssRays.js
1155 views
//1// Copyright (c) 2006-2025 Wade Alcorn - [email protected]2// Browser Exploitation Framework (BeEF) - https://beefproject.com3// See the file 'doc/COPYING' for copying permission4//56/*7* The XssRays Tab panel for the selected zombie.8*/910ZombieTab_XssRaysTab = function(zombie) {11var commands_statusbar = new Beef_StatusBar('xssrays-bbar-zombie-'+zombie.session);12var req_pagesize = 30;1314// RESTful API token15var token = BeefWUI.get_rest_token();1617var xssrays_config_panel = new Ext.Panel({18id: 'xssrays-config-zombie-'+zombie.session,19title: 'Scan Config',20layout: 'fit'21});2223var xssrays_logs_store = new Ext.ux.data.PagingJsonStore({24storeId: 'xssrays-logs-store-zombie-' + zombie.session,25remoteSort: false,26autoDestroy: true,27autoLoad: false,28proxy: new Ext.data.HttpProxy({29method: 'GET',30url: '/api/xssrays/rays/' + zombie.session + '?token=' + token31}),32root: 'rays',33fields: ['id', 'vector_method', 'vector_name', 'vector_poc'],34sortInfo: {field: 'id', direction: 'DESC'},35});3637var xssrays_logs_bbar = new Ext.PagingToolbar({38pageSize: req_pagesize,39store: xssrays_logs_store,40displayInfo: true,41displayMsg: 'Displaying history {0} - {1} of {2}',42emptyMsg: 'No history to display'43});4445var xssrays_logs_grid = new Ext.grid.GridPanel({46id: 'xssrays-logs-grid-zombie-' + zombie.session,47store: xssrays_logs_store,48bbar: xssrays_logs_bbar,49border: false,50loadMask: {msg:'Loading History...'},5152viewConfig: {53forceFit:true54},5556view: new Ext.grid.GridView({57forceFit: true,58emptyText: "No History",59enableRowBody:true60}),6162columns: [63{header: 'Id', width: 10, sortable: true, dataIndex: 'id', hidden:true},64{header: 'Vector Method', width: 30, sortable: true, dataIndex: 'vector_method', renderer: function(value){return $jEncoder.encoder.encodeForHTML(value)}},65{header: 'Vector Name', width: 40, sortable: true, dataIndex: 'vector_name', renderer: function(value){return $jEncoder.encoder.encodeForHTML(value)}},66{header: 'Vector PoC', sortable: true, dataIndex: 'vector_poc', renderer: function(value){return $jEncoder.encoder.encodeForHTML(value)}}67],6869listeners: {70afterrender: function(datagrid) {71datagrid.store.reload({params:{start:0,limit:req_pagesize, sort: "date", dir:"DESC"}});72}73}74});7576var xssrays_logs_panel = new Ext.Panel({77id: 'xssrays-logs-panel-zombie-'+zombie.session,78title: 'Logs',79items:[xssrays_logs_grid],80layout: 'fit',8182listeners: {83activate: function(xssrays_logs_panel) {84xssrays_logs_panel.items.items[0].store.reload();85}86}87});8889function genScanSettingsPanel(zombie, bar, value) {90var form = new Ext.FormPanel({91title: 'Scan settings',92id: 'xssrays-config-form-zombie'+zombie.session,93url: '/api/xssrays/scan/' + zombie.session + '?token=' + token,94labelWidth: 230,95border: false,96padding: '3px 5px 0 5px',97defaults: {width: 100},98defaultType: 'textfield',99100items:[{101fieldLabel: 'Clean Timeout (milliseconds before the injected iFrames are removed from the DOM)',102name: 'clean_timeout',103allowBlank:false,104value: 5000,105padding: '10px 5px 0 5px'106},{107xtype:'checkbox',108id:'cross_origin',109fieldLabel: 'Cross-origin (check for XSS on cross-origin resources)',110name: 'cross_origin',111checked: true112}],113114buttons: [{115text: 'Start Scan',116handler: function() {117var form = Ext.getCmp('xssrays-config-form-zombie'+zombie.session).getForm();118119bar.update_sending('Starting XssRays on ' + zombie.ip + ' ...');120form.submit({121params: {122cross_origin: document.getElementById('cross_origin').checked123},124success: function() {125bar.update_sent("Scan settings saved for hooked browser [" + zombie.ip + "]. XssRays will be added to victim DOM on next polling.");126},127failure: function() {128bar.update_fail("Error! Something went wrong saving scan settings.");129}130});131}132}]133});134135panel = Ext.getCmp('xssrays-config-zombie-'+zombie.session);136panel.setTitle('Scan Config');137panel.add(form);138}139140ZombieTab_XssRaysTab.superclass.constructor.call(this, {141id: 'xssrays-log-tab-'+zombie.session,142title: 'XssRays',143activeTab: 0,144viewConfig: {145forceFit: true,146type: 'fit'147},148items: [xssrays_logs_panel, xssrays_config_panel],149bbar: commands_statusbar,150listeners: {151afterrender : function(){152genScanSettingsPanel(zombie, commands_statusbar);153}154}155});156};157158Ext.extend(ZombieTab_XssRaysTab, Ext.TabPanel, {} );159160161