Open bcoles opened 6 years ago
Despite being described as x86, Solaris 11 is x64, as per output from isainfo -b
.
The solaris/x86/*
payloads segfault on Solaris 11.1 and 11.3.
Do you mean the Solaris 11 is 64-bit even though it says it's x86?
@kennywolly Yes. There are two main Solaris branches: SPARC and Intel (previously known as ia32; now x86).
Solaris 11 x86 uses a 64-bit instruction set, as per output from isainfo -b
.
The -b
flag for isainfo prints the number of bits in the address space of the native instruction set.
Wow! I have a Solaris 11 x86 running on VirtualBox, the registers (%esp, %ebp..and others) were had more than 32 bits in form of memory addresses and I could not really understand why.
Although I have carried out some buffer overflow and pointer manipulation techniques on this solaris and another ubuntu x86. Besides this difference in the size of the instruction set, are there any structural assembly implementation differences between the solaris OS and linux (ubuntu)?
@kennywolly Not that I'm aware of. Linux x64 should be very similar to Solaris x64 (aka x86).
There are probably some nuances - the recent issues surrounding debug exceptions following pop ss, mov ss
, and resulting vulnerabilities, as a good example of differing OS implementations.
The SPARC / Intel dichotomy has existed since Solaris put the dot in dot com. I suspect simultaneously managing two branches for two different architectures would likely have affected subsequent design decisions. The change-of-the-guard resulting from the sale of Sun likely also caused some issues.
While not directly related to assembly implementation, it's also worth noting that Linux and Solaris ELF file formats differ sufficiently to be an annoyance.
However, I'm not a Solaris expert, and this isn't really the right place to ask, unless you're planning on adapting the existing shellcode for the bind and reverse payloads to support Solaris 11, which would be awesome.
Would the best choice simply be to create an x64 Solaris payload?
@bwatters-r7 that would be awesome
I believe @busterb had some success with building meterpreter for Solaris, as per: https://github.com/rapid7/mettle/pull/120
Tested on Solaris 11.1, Solaris 11.3, Solaris 11.4.
Sep 13 10:51:06 solaris genunix: [ID 533030 kern.notice] NOTICE: reverse.solaris.[16301] attempt to execute code on stack by uid 100
Hi!
This issue has been left open with no activity for a while now.
We get a lot of issues, so we currently close issues after 60 days of inactivity. It’s been at least 30 days since the last update here. If we missed this issue or if you want to keep it open, please reply here. You can also add the label "not stale" to keep this issue open!
As a friendly reminder: the best way to see this issue, or any other, fixed is to open a Pull Request.
The
solaris/x86/shell_reverse_tcp
andsolaris/x86/shell_bind_tcp
payloads segfault on Solaris 11.1.Payloads work on Solaris 10 i386: