Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 4.3.2 #210

Merged
merged 32 commits into from
Apr 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
fb2a1c9
Handle uninstall timeout
Dramelac Jan 10, 2024
4141901
Fix text copy pasting
Dramelac Jan 11, 2024
fc8b82b
Added wayland (environment) support
QU35T-code Jan 26, 2024
6c72231
Merge pull request #200 from QU35T-code/wayland
Dramelac Jan 28, 2024
43764f3
Add hint when xhost is not available
Dramelac Jan 28, 2024
fefce65
Add wayland support
Dramelac Jan 31, 2024
e144b3b
Update python action module version
Dramelac Feb 18, 2024
7e41e6e
Update info text + default to X11
Dramelac Feb 25, 2024
98d26fa
Handle docker critical error on start
Dramelac Feb 25, 2024
6bfe086
Merge pull request #206 from ThePorgs/feat/wayland
Dramelac Feb 26, 2024
f536111
Disable timezone sharing on mac
Dramelac Feb 27, 2024
1f96f3a
Run preprod-test for non-draft PR only
Dramelac Feb 28, 2024
9df0eff
Add current branch to the current version display
Dramelac Mar 1, 2024
efbf3e7
Fix desktop protocol config
Dramelac Mar 3, 2024
2ef6e1c
Fix X11 across network
Dramelac Mar 3, 2024
67b418a
Wayland on mac rely also on env var
Dramelac Mar 3, 2024
acd9826
Commenting out CLI sponsors
ShutdownRepo Mar 15, 2024
9fbc099
Update sponsors in README.md
ShutdownRepo Mar 15, 2024
03885e7
Fix comment sponsor
Dramelac Mar 17, 2024
4b54020
add proxy support
Siopy Mar 21, 2024
83b5a4a
Split HTTP/HTTPS and fix timeout
Siopy Mar 21, 2024
70e7013
Fix proxies None type
Dramelac Mar 21, 2024
d4251e9
Merge pull request #209 from Siopy/add_proxy_support
Dramelac Mar 21, 2024
6c29d34
Mypy no longer support py3.7 testing
Dramelac Mar 21, 2024
304b8ac
Fix GUI test
Dramelac Apr 12, 2024
76454da
Handle broken exegol installation without build profile
Dramelac Apr 12, 2024
05206cd
Update log message
Dramelac Apr 12, 2024
4811dfd
Update ressource submodule ref
Dramelac Apr 12, 2024
62e1acb
New release version
Dramelac Apr 12, 2024
dc270ef
updating actions/checkout in workflows
ShutdownRepo Apr 12, 2024
74b6052
Update user volume message
Dramelac Apr 13, 2024
67ebdd6
Update submodules version
Dramelac Apr 15, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/entrypoint_nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ jobs:
id-token: write
needs: test
steps:
- uses: actions/checkout@master
- uses: actions/checkout@main
with:
submodules: true
- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install requirements
Expand Down
18 changes: 14 additions & 4 deletions .github/workflows/entrypoint_prerelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,25 @@ on:
- ".github/**"
- "**.md"

# creating a separate concurrency group for each PR
# so that our "PR checks" are always running for the latest commit in the PR
# and as PRs are updated we want to make sure "in progress" jobs are killed so we don't waste resources
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true


jobs:
preprod_test:
name: Pre-prod code testing
runs-on: ubuntu-latest
if: github.event.pull_request.draft == false
steps:
- uses: actions/checkout@master
- uses: actions/checkout@main
with:
submodules: false
- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Find spawn.sh script version
Expand All @@ -35,13 +44,14 @@ jobs:
build:
name: Build Python 🐍 distributions
runs-on: ubuntu-latest
if: github.event.pull_request.draft == false
needs: code_test
steps:
- uses: actions/checkout@master
- uses: actions/checkout@main
with:
submodules: true
- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install requirements
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/entrypoint_pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@ jobs:
runs-on: ubuntu-latest
needs: test
steps:
- uses: actions/checkout@master
- uses: actions/checkout@main
with:
submodules: true
- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install requirements
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/entrypoint_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@ jobs:
id-token: write
needs: test
steps:
- uses: actions/checkout@master
- uses: actions/checkout@main
with:
submodules: true
- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install requirements
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/sub_testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ jobs:
name: Code testing
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: actions/checkout@main
with:
submodules: false
- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install requirements
Expand All @@ -31,14 +31,14 @@ jobs:
strategy:
fail-fast: false
matrix:
version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
os: [win32, linux, darwin]
steps:
- uses: actions/checkout@master
- uses: actions/checkout@main
with:
submodules: false
- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install requirements
Expand Down
12 changes: 1 addition & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,15 +57,5 @@ Below are some bullet points to better understand how Exegol works
</a>
</div>

Dramelac and I work at *Capgemini* and we thank them for allocating some time for us to develop and maintain Exegol! Visit Capgemini website at https://www.capgemini.com/.

___

<div align="center">
<a href="https://www.hackthebox.com/" title="Follow">
<img width="300" src="https://exegol.readthedocs.io/en/latest/_images/hackthebox.png">
</a>
</div>

We also thank *HackTheBox* for continuously supporting the community and for helping us financially to acquire the necessary hardware for supporting multiple architectures (AMD64, ARM64). Show some love at https://www.hackthebox.com/ !
Dramelac and I work at [Capgemini](https://www.capgemini.com/) and we thank them for believing in the project since day 1, and for allowing us to have this personal initiative keep going.

2 changes: 1 addition & 1 deletion exegol-docker-build
Submodule exegol-docker-build updated 59 files
+1 −1 .github/workflows/entrypoint_preprod_ad.yml
+2 −2 .github/workflows/entrypoint_preprod_base.yml
+1 −1 .github/workflows/entrypoint_preprod_full.yml
+1 −1 .github/workflows/entrypoint_preprod_light.yml
+1 −1 .github/workflows/entrypoint_preprod_osint.yml
+1 −1 .github/workflows/entrypoint_preprod_web.yml
+2 −2 .github/workflows/sub_build.yml
+2 −2 .github/workflows/sub_code_check.yml
+2 −2 .github/workflows/sub_export_tools.yml
+23 −0 sources/assets/bloodhound-ce/bloodhound.config.json
+158 −109 sources/assets/bloodhound/customqueries.json
+7 −2 sources/assets/exegol/load_supported_setups.sh
+12 −0 sources/assets/patches/openssl.patch
+36 −0 sources/assets/python/requirements.txt
+1 −0 sources/assets/shells/aliases.d/_init
+1 −1 sources/assets/shells/aliases.d/burpsuite
+1 −1 sources/assets/shells/aliases.d/evil-winrm
+1 −1 sources/assets/shells/aliases.d/extractbitlockerkeys
+4 −1 sources/assets/shells/aliases.d/metasploit
+1 −0 sources/assets/shells/aliases.d/responder
+1 −0 sources/assets/shells/aliases.d/sccmhunter
+1 −0 sources/assets/shells/aliases.d/sccmwtf
+1 −1 sources/assets/shells/aliases.d/ysoserial
+1 −1 sources/assets/shells/history.d/abuseACL
+16 −0 sources/assets/shells/history.d/bloodyAD
+1 −1 sources/assets/shells/history.d/certipy
+21 −0 sources/assets/shells/history.d/crackmapexec
+24 −0 sources/assets/shells/history.d/dploot
+5 −3 sources/assets/shells/history.d/kerbrute
+22 −0 sources/assets/shells/history.d/netexec
+5 −0 sources/assets/shells/history.d/pretender
+4 −0 sources/assets/shells/history.d/responder
+10 −0 sources/assets/shells/history.d/sccmhunter
+1 −0 sources/assets/shells/history.d/sccmwtf
+3 −0 sources/assets/shells/history.d/ssh-audit
+3 −0 sources/assets/shells/zshrc
+1 −1 sources/install/common.sh
+156 −91 sources/install/package_ad.sh
+31 −2 sources/install/package_base.sh
+15 −6 sources/install/package_c2.sh
+4 −4 sources/install/package_cloud.sh
+1 −1 sources/install/package_code_analysis.sh
+2 −2 sources/install/package_cracking.sh
+1 −1 sources/install/package_crypto.sh
+1 −0 sources/install/package_desktop.sh
+3 −2 sources/install/package_forensic.sh
+13 −12 sources/install/package_misc.sh
+18 −8 sources/install/package_mobile.sh
+17 −9 sources/install/package_network.sh
+28 −27 sources/install/package_osint.sh
+3 −3 sources/install/package_reverse.sh
+2 −2 sources/install/package_rfid.sh
+1 −1 sources/install/package_sdr.sh
+1 −1 sources/install/package_steganography.sh
+1 −1 sources/install/package_voip.sh
+34 −32 sources/install/package_web.sh
+13 −2 sources/install/package_wifi.sh
+8 −1 sources/install/package_wordlists.sh
+36 −0 wifi.dockerfile
2 changes: 1 addition & 1 deletion exegol-resources
Submodule exegol-resources updated 40 files
+2 −2 .github/workflows/export_list_to_doc.yml
+1 −1 .github/workflows/update_resources.yml
+ linux/ligolo-ng/agent_linux_amd64
+ linux/ligolo-ng/agent_linux_arm64
+407 −178 linux/linPEAS/linpeas.sh
+ linux/linPEAS/linpeas_darwin_amd64
+ linux/linPEAS/linpeas_darwin_arm64
+ linux/linPEAS/linpeas_linux_386
+ linux/linPEAS/linpeas_linux_amd64
+ linux/linPEAS/linpeas_linux_arm
+ linux/linPEAS/linpeas_linux_arm64
+10 −10 linux/linux-exploit-suggester.sh
+24 −5 linux/linux-smart-enumeration.sh
+2 −0 resources_list.csv
+1 −1 webshells/PHP/p0wny-shell
+ windows/GodPotato-NET2.exe
+ windows/GodPotato-NET35.exe
+ windows/GodPotato-NET4.exe
+ windows/PrintSpoofer32.exe
+ windows/PrintSpoofer64.exe
+1 −1 windows/PrivescCheck
+1 −1 windows/SharpCollection
+ windows/SysinternalsSuite/Autoruns.exe
+ windows/SysinternalsSuite/Autoruns64.exe
+ windows/SysinternalsSuite/Sysmon.exe
+ windows/SysinternalsSuite/Sysmon64.exe
+ windows/SysinternalsSuite/ZoomIt.exe
+ windows/SysinternalsSuite/ZoomIt64.exe
+ windows/SysinternalsSuite/autorunsc.exe
+ windows/SysinternalsSuite/autorunsc64.exe
+ windows/ligolo-ng/agent.exe
+ windows/plink32.exe
+ windows/plink64.exe
+1 −1 windows/winPEAS/winPEAS.bat
+ windows/winPEAS/winPEASany.exe
+ windows/winPEAS/winPEASany_ofs.exe
+ windows/winPEAS/winPEASx64.exe
+ windows/winPEAS/winPEASx64_ofs.exe
+ windows/winPEAS/winPEASx86.exe
+ windows/winPEAS/winPEASx86_ofs.exe
2 changes: 1 addition & 1 deletion exegol/config/ConstantConfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
class ConstantConfig:
"""Constant parameters information"""
# Exegol Version
version: str = "4.3.1"
version: str = "4.3.2"

# Exegol documentation link
documentation: str = "https://exegol.rtfd.io/"
Expand Down
26 changes: 26 additions & 0 deletions exegol/config/EnvInfo.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import json
import os
import platform
from enum import Enum
from pathlib import Path
from typing import Optional, Any, List

from exegol.config.ConstantConfig import ConstantConfig
Expand All @@ -17,6 +19,11 @@ class HostOs(Enum):
LINUX = "Linux"
MAC = "Mac"

class DisplayServer(Enum):
"""Dictionary class for static Display Server"""
WAYLAND = "Wayland"
X11 = "X11"

class DockerEngine(Enum):
"""Dictionary class for static Docker engine name"""
WLS2 = "WSL2"
Expand Down Expand Up @@ -107,6 +114,20 @@ def getHostOs(cls) -> HostOs:
assert cls.__docker_host_os is not None
return cls.__docker_host_os

@classmethod
def getDisplayServer(cls) -> DisplayServer:
"""Returns the display server
Can be 'X11' or 'Wayland'"""
session_type = os.getenv("XDG_SESSION_TYPE", "x11")
if session_type == "wayland":
return cls.DisplayServer.WAYLAND
elif session_type == "x11":
return cls.DisplayServer.X11
else:
# Should return an error
logger.warning(f"Unknown session type {session_type}. Using X11 as fallback.")
return cls.DisplayServer.X11

@classmethod
def getWindowsRelease(cls) -> str:
# Cache check
Expand All @@ -128,6 +149,11 @@ def isMacHost(cls) -> bool:
"""Return true if macOS is detected on the host"""
return cls.getHostOs() == cls.HostOs.MAC

@classmethod
def isWaylandAvailable(cls) -> bool:
"""Return true if wayland is detected on the host"""
return cls.getDisplayServer() == cls.DisplayServer.WAYLAND or bool(os.getenv("WAYLAND_DISPLAY"))

@classmethod
def isDockerDesktop(cls) -> bool:
"""Return true if docker desktop is used on the host"""
Expand Down
2 changes: 1 addition & 1 deletion exegol/config/UserConfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ def _process_data(self):
# Desktop section
desktop_data = config_data.get("desktop", {})
self.desktop_default_enable = self._load_config_bool(desktop_data, 'enabled_by_default', self.desktop_default_enable)
self.desktop_default_proto = self._load_config_str(desktop_data, 'default_proto', self.desktop_default_proto, choices=self.desktop_available_proto)
self.desktop_default_proto = self._load_config_str(desktop_data, 'default_protocol', self.desktop_default_proto, choices=self.desktop_available_proto)
self.desktop_default_localhost = self._load_config_bool(desktop_data, 'localhost_by_default', self.desktop_default_localhost)

def get_configs(self) -> List[str]:
Expand Down
4 changes: 2 additions & 2 deletions exegol/console/TUI.py
Original file line number Diff line number Diff line change
Expand Up @@ -451,10 +451,10 @@ def __buildContainerRecapTable(container: ExegolContainerTemplate):
recap.add_row("[bold blue]Comment[/bold blue]", comment)
if passwd:
recap.add_row(f"[bold blue]Credentials[/bold blue]", f"[deep_sky_blue3]{container.config.getUsername()}[/deep_sky_blue3] : [deep_sky_blue3]{passwd}[/deep_sky_blue3]")
recap.add_row("[bold blue]Desktop[/bold blue]", container.config.getDesktopConfig())
recap.add_row("[bold blue]Remote Desktop[/bold blue]", container.config.getDesktopConfig())
if creation_date:
recap.add_row("[bold blue]Creation date[/bold blue]", creation_date)
recap.add_row("[bold blue]X11[/bold blue]", boolFormatter(container.config.isGUIEnable()))
recap.add_row("[bold blue]Console GUI[/bold blue]", boolFormatter(container.config.isGUIEnable()) + container.config.getTextGuiSockets())
recap.add_row("[bold blue]Network[/bold blue]", container.config.getTextNetworkMode())
recap.add_row("[bold blue]Timezone[/bold blue]", boolFormatter(container.config.isTimezoneShared()))
recap.add_row("[bold blue]Exegol resources[/bold blue]", boolFormatter(container.config.isExegolResourcesEnable()) +
Expand Down
6 changes: 3 additions & 3 deletions exegol/manager/ExegolManager.py
Original file line number Diff line number Diff line change
Expand Up @@ -234,9 +234,9 @@ def print_version(cls):
@classmethod
def print_sponsors(cls):
"""Show exegol sponsors"""
logger.success(
"""We thank [link=https://www.capgemini.com/fr-fr/carrieres/offres-emploi/][blue]Capgemini[/blue][/link] for supporting the project [bright_black](helping with dev)[/bright_black] :pray:""")
logger.success("""We thank [link=https://www.hackthebox.com/][green]HackTheBox[/green][/link] for sponsoring the [bright_black]multi-arch[/bright_black] support :green_heart:""")
#logger.success("""We thank [link=https://www.capgemini.com/fr-fr/carrieres/offres-emploi/][blue]Capgemini[/blue][/link] for supporting the project [bright_black](helping with dev)[/bright_black] :pray:""")
#logger.success("""We thank [link=https://www.hackthebox.com/][green]HackTheBox[/green][/link] for sponsoring the [bright_black]multi-arch[/bright_black] support :green_heart:""")
pass

@classmethod
def __loadOrInstallImage(cls,
Expand Down
19 changes: 14 additions & 5 deletions exegol/manager/UpdateManager.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ def __compareVersion(cls, version) -> bool:
def __get_current_version(cls):
"""Get the current version of the exegol wrapper. Handle dev version and release stable version depending on the current version."""
current_version = ConstantConfig.version
if re.search(r'[a-z]', ConstantConfig.version, re.IGNORECASE):
if re.search(r'[a-z]', ConstantConfig.version, re.IGNORECASE) and ConstantConfig.git_source_installation:
module = ExegolModules().getWrapperGit(fast_load=True)
if module.isAvailable:
current_version = str(module.get_current_commit())[:8]
Expand All @@ -259,12 +259,19 @@ def __get_current_version(cls):
@staticmethod
def display_current_version():
"""Get the current version of the exegol wrapper. Handle dev version and release stable version depending on the current version."""
commit_version = ""
if re.search(r'[a-z]', ConstantConfig.version, re.IGNORECASE):
version_details = ""
if ConstantConfig.git_source_installation:
module = ExegolModules().getWrapperGit(fast_load=True)
if module.isAvailable:
commit_version = f" [bright_black]\\[{str(module.get_current_commit())[:8]}][/bright_black]"
return f"[blue]v{ConstantConfig.version}[/blue]{commit_version}"
current_branch = module.getCurrentBranch()
commit_version = ""
if re.search(r'[a-z]', ConstantConfig.version, re.IGNORECASE):
commit_version = "-" + str(module.get_current_commit())[:8]
if current_branch is None:
current_branch = "HEAD"
if current_branch != "master" or commit_version != "":
version_details = f" [bright_black]\\[{current_branch}{commit_version}][/bright_black]"
return f"[blue]v{ConstantConfig.version}[/blue]{version_details}"

@classmethod
def __tagUpdateAvailable(cls, latest_version, current_version=None):
Expand Down Expand Up @@ -347,6 +354,8 @@ def __buildSource(cls, build_name: Optional[str] = None) -> str:

# Choose dockerfile
profiles = cls.listBuildProfiles(profiles_path=build_path)
if len(profiles) == 0:
logger.critical(f"No build profile found in {build_path}. Check your exegol installation, it seems to be broken...")
build_profile: Optional[str] = ParametersManager().build_profile
build_dockerfile: Optional[str] = None
if build_profile is not None:
Expand Down
Loading