mirror of
https://github.com/calebstewart/pwncat.git
synced 2024-11-24 01:25:37 +01:00
Merge pull request #211 from art3x/issue-208-fix-shell-detection
Issues 208 (stat output verification) and 210 (shell detection) fixes
This commit is contained in:
commit
9fabe64044
@ -21,6 +21,9 @@ and simply didn't have the time to go back and retroactively create one.
|
||||
- Forced `Stream.RAW` for all GTFOBins interaction ([#195](https://github.com/calebstewart/pwncat/issues/195)).
|
||||
- Added custom `which` implementation for linux when `which` is not available ([#193](https://github.com/calebstewart/pwncat/issues/193)).
|
||||
- Correctly handle `--listen` argument ([#201](https://github.com/calebstewart/pwncat/issues/201))
|
||||
- Added additional check for stat time of file birth field (#208)
|
||||
- Removed shell compare with ["nologin", "false", "sync", "git-shell"] (#210)
|
||||
- Added shell compare with not in ["bash", "zsh", "ksh", "fish"] (#210)
|
||||
### Added
|
||||
- Added alternatives to `bash` to be used during _shell upgrade_ for a _better shell_
|
||||
- Added a warning message when a `KeyboardInterrupt` is caught
|
||||
|
@ -616,19 +616,14 @@ class Linux(Platform):
|
||||
if self.shell == "" or self.shell is None:
|
||||
self.shell = "/bin/sh"
|
||||
|
||||
# This doesn't make sense, but happened for some people (see issue #116)
|
||||
if os.path.basename(self.shell) in ["nologin", "false", "sync", "git-shell"]:
|
||||
self.shell = "/bin/sh"
|
||||
self.channel.sendline(b" export SHELL=/bin/sh")
|
||||
|
||||
if self._do_which("which") is None:
|
||||
self._do_which = self._do_custom_which
|
||||
|
||||
if os.path.basename(self.shell) in ["sh", "dash"]:
|
||||
better_shells = ["bash", "zsh", "ksh", "fish"]
|
||||
if os.path.basename(self.shell) not in better_shells:
|
||||
# Try to find a better shell
|
||||
# a custom `pwncat shell prompt` may not be available for all shells
|
||||
# see `self.PROMPTS`
|
||||
better_shells = ["bash", "zsh", "ksh", "fish"]
|
||||
|
||||
for better_shell in better_shells:
|
||||
shell = self._do_which(better_shell)
|
||||
@ -1743,6 +1738,10 @@ class Linux(Platform):
|
||||
if fields[i] == "?":
|
||||
fields[i] = "0"
|
||||
|
||||
# Fix stat output issues in some enviroments
|
||||
if fields[1] == "W":
|
||||
fields[1] = "0"
|
||||
|
||||
stat = os.stat_result(
|
||||
tuple(
|
||||
[
|
||||
|
Loading…
Reference in New Issue
Block a user