diff --git a/.github/workflows/CI-master_tests.yml b/.github/workflows/CI-master_tests.yml index 2ae5658..06354bf 100644 --- a/.github/workflows/CI-master_tests.yml +++ b/.github/workflows/CI-master_tests.yml @@ -47,8 +47,8 @@ jobs: run: nuget restore $env:Solution_Path # build - #- name: run MSBuild - # run: msbuild $env:Solution_Path + - name: run MSBuild + run: msbuild $env:Solution_Path # Execute all unit tests in the solution #- name: Execute unit tests @@ -66,6 +66,39 @@ jobs: echo "build Any CPU" msbuild -m $env:Solution_Path /t:Rebuild /p:Configuration=$env:Configuration /p:Platform="Any CPU" + - name: Execute winPEAS -h + shell: pwsh + run: | + $Configuration = "Release" + $exePath = "winPEAS/winPEASexe/winPEAS/bin/$Configuration/winPEAS.exe" + if (Test-Path $exePath) { + & $exePath -h + } else { + Write-Error "winPEAS.exe not found at $exePath" + } + + - name: Execute winPEAS cloudinfo + shell: pwsh + run: | + $Configuration = "Release" + $exePath = "winPEAS/winPEASexe/winPEAS/bin/$Configuration/winPEAS.exe" + if (Test-Path $exePath) { + & $exePath cloudinfo + } else { + Write-Error "winPEAS.exe not found at $exePath" + } + + - name: Execute winPEAS systeminfo + shell: pwsh + run: | + $Configuration = "Release" + $exePath = "winPEAS/winPEASexe/winPEAS/bin/$Configuration/winPEAS.exe" + if (Test-Path $exePath) { + & $exePath systeminfo + } else { + Write-Error "winPEAS.exe not found at $exePath" + } + # Copy the built versions - name: Copy all versions run: | diff --git a/winPEAS/winPEASexe/winPEAS/App.config b/winPEAS/winPEASexe/winPEAS/App.config old mode 100755 new mode 100644 index 2177a05..1548729 --- a/winPEAS/winPEASexe/winPEAS/App.config +++ b/winPEAS/winPEASexe/winPEAS/App.config @@ -14,6 +14,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/winPEAS/winPEASexe/winPEAS/packages.config b/winPEAS/winPEASexe/winPEAS/packages.config index 5504070..1009216 100644 --- a/winPEAS/winPEASexe/winPEAS/packages.config +++ b/winPEAS/winPEASexe/winPEAS/packages.config @@ -33,7 +33,7 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/winPEAS/winPEASexe/winPEAS/winPEAS.csproj b/winPEAS/winPEASexe/winPEAS/winPEAS.csproj old mode 100755 new mode 100644 index bfb8d5f..2dcd1fd --- a/winPEAS/winPEASexe/winPEAS/winPEAS.csproj +++ b/winPEAS/winPEASexe/winPEAS/winPEAS.csproj @@ -217,9 +217,8 @@ ..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll - - ..\packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll - True + + ..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll True @@ -284,9 +283,8 @@ ..\packages\System.Text.Encodings.Web.8.0.0\lib\net462\System.Text.Encodings.Web.dll - - ..\packages\System.Text.RegularExpressions.4.3.0\lib\net463\System.Text.RegularExpressions.dll - True + + ..\packages\System.Text.RegularExpressions.4.3.1\lib\net463\System.Text.RegularExpressions.dll True diff --git a/winPEAS/winPEASps1/winPEAS.ps1 b/winPEAS/winPEASps1/winPEAS.ps1 index b08d06b..47848c7 100644 --- a/winPEAS/winPEASps1/winPEAS.ps1 +++ b/winPEAS/winPEASps1/winPEAS.ps1 @@ -67,7 +67,8 @@ Function Start-ACLCheck { $Identity = @() $Identity += "$env:COMPUTERNAME\$env:USERNAME" if ($ACLObject.Owner -like $Identity ) { Write-Host "$Identity has ownership of $Target" -ForegroundColor Red } - whoami.exe /groups /fo csv | ConvertFrom-Csv | Select-Object -ExpandProperty 'group name' | ForEach-Object { $Identity += $_ } + # This should now work for any language. Command runs whoami group, removes the first two line of output, converts from csv to object, but adds "group name" to the first column. + whoami.exe /groups /fo csv | select-objet -skip 2 | ConvertFrom-Csv -Header 'group name' | Select-Object -ExpandProperty 'group name' | ForEach-Object { $Identity += $_ } $IdentityFound = $false foreach ($i in $Identity) { $permission = $ACLObject.Access | Where-Object { $_.IdentityReference -like $i } @@ -1225,7 +1226,8 @@ Write-Host "Will enumerate SMB Shares and Access if any are available" Get-SmbShare | Get-SmbShareAccess | ForEach-Object { $SMBShareObject = $_ - whoami.exe /groups /fo csv | ConvertFrom-Csv | Select-Object -ExpandProperty 'group name' | ForEach-Object { +# see line 70 for explanation of what this does + whoami.exe /groups /fo csv | select-objet -skip 2 | ConvertFrom-Csv -Header 'group name' | Select-Object -ExpandProperty 'group name' | ForEach-Object { if ($SMBShareObject.AccountName -like $_ -and ($SMBShareObject.AccessRight -like "Full" -or "Change") -and $SMBShareObject.AccessControlType -like "Allow" ) { Write-Host -ForegroundColor red "$($SMBShareObject.AccountName) has $($SMBShareObject.AccessRight) to $($SMBShareObject.Name)" }