Research and Development

NOTE : This download is no longer available on our web site. Portcullis no longer maintain the tool, if you would like the latest version visit https://github.com/portcullislabs/xssshell-xsstunnell

XSS Shell is a powerful XSS backdoor, in XSS Shell one can interactively send requests and get responses from victim and it allows you to keep the control of session.

NOTE : This download is no longer available on our web site. Portcullis no longer maintain the tool, if you would like the latest version visit https://github.com/portcullislabs/xssshell-xsstunnell

XSS Shell is powerful a XSS backdoor and zombie manager. This concept first presented by “XSS-Proxy – http://xss-proxy.sourceforge.net/”. Normally in XSS attacks attacker has one shot, in XSS Shell you can interactively send requests and get responses from victim. you can backdoor the page.

Key features

XSS Shell has several features to gain whole access over victim. Also you can simply add your own commands.

Most of the features can enable or disabled from configuration or can be tweaked from source code.

  • Regenerating Pages
    • This is one of the key and advanced features of XSS Shell. XSS Shell re-renders the infected page and keep user in virtual environment. Thus even user click any links in the infected page he or she will be still under control! (within cross-domain restrictions) In normal XSS attacks when user leaves the page you can’t do anything
    • Secondly this feature keeps the session open so even victim follow an outside link from infected page session is not going to timeout and you will be still in charge.
  • Keylogger
  • Mouse Logger (click points + current DOM)
  • Built-in Commands;
    • Get Keylogger Data
    • Get Current Page (Current rendered DOM / like screenshot)
    • Get Cookie
    • Execute supplied javaScript (eval)
    • Get Clipboard (IE only)
    • Get internal IP address (Firefox + JVM only)
    • Check victim’s visited URL history

Installation

XSS Shell uses ASP + MS Access database as backend but you can simply port them into any other server-side solution. You just need to stick with simple communication protocol.

Install Admin Interface

  1. Copy “xssshell” folder into your web server
  2. Copy “db” to a secure place (below root)
  3. Configure “database path” from “xssshell/db.asp”
  4. Modify hard coded password in db.asp [default password is : w00t]
  5. Now you can access admin interface from something like http://[YOURHOST]/xssshell/

Configure XSS Shell for communication:

  1. Open xssshell.asp
  2. 2. Set “SERVER” variable to where your XSSShell folder is located. i.e: “http://[YOURHOST]/xssshell/”;
  3. 3. Be sure to check “ME”, “CONNECTOR”, “COMMANDS_URL” variables. If you changed filenames, folder names or some kind of different configuration you need modify them.

Now open your admin interface from your browser,

To test it, just modify “sample_victim/default.asp” source code and replace “http://attacker:81/release/xssshell.js” URL with your own XSS Shell URL. Open “sample_victim” folder in some other browser and may be upload in to some other server.

Now you should see a zombie in admin interface. Just write something into “parameters” textarea and click “alert()”. You should see an alert message in victim’s browser.

Security notes

  • As a hunter be careful about possible “Backfire” in getSelfHTML(). Someone can hack you back or track you by another XSS or XSS Shell attack.
  • Checkout “showdata.asp” and implement your own “filter()” function to make it safer for you.
  • Put “On error resume next” to db.asp, better modify your web server to not show any error.

How to extend

First implement new feature to xssshell.asp:

  1. Add new enum for your control
    • Set a name and unique number like “CMD_GETCOOKIE”
    • var CMD_SAMPLE = 78;
    • Set datatype for your response (generally TEXT),
    • dataTypes[CMD_SAMPLE] = TEXT;
  2. Write your function and add it to page
    • function cmdSample(){return “yeah working !”}
  3. Call it
    • Go inside to “function processGivenCommand(cmd)”
    • Add a new case like “case CMD_SAMPLE:”
  4. Report it back
    • Inside the case call log;
      “log(cmdSample(), dataTypes[cmd.cmd], cmd.attackID, “waitAndRun()”);”

Secondly implement it to admin interface:

  • In db.asp just add a new element to “Commands” array (command name, command unique number, description).i.e. “cmdSample()”,78,”Command sample ! Just returns a message”

There are parameters and lots of helper in the code. Check out other commands for reference.

Enable debug feature to debug your new commands easily.

External libraries

  • moo.ajax – moofx.mad4milk.net
  • script.aculo.us – (http://script.aculo.us, http://mir.aculo.us)

Request to be added to the Portcullis Labs newsletter

We will email you whenever a new tool, or post is added to the site.

Your Name (required)

Your Email (required)