diff --git a/.github/workflows/CI-master_tests.yml b/.github/workflows/CI-master_tests.yml index 2ae56580..06354bfe 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 2177a059..15487293 --- 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 55040706..10092168 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 bfb8d5fe..2dcd1fd1 --- 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 b08d06bf..47848c7c 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)" }