Add CyberLink LabelPrint < 2.5 - Local Buffer Overflow (SEH Unicode)#11040
Conversation
Add CyberLink LabelPrint < 2.5 - Local Buffer Overflow (SEH Unicode)
| 'Payload' => | ||
| { | ||
| 'Space' => 15000, | ||
| 'BadChars' => "\x00", #badchars starts from 80 until the rest of it. |
There was a problem hiding this comment.
starts from 80 until the rest of it
Does this mean \x80 to \xff , or \x50 to \xff , or something else?
There was a problem hiding this comment.
Ok, you can do something like this:
| 'BadChars' => "\x00", #badchars starts from 80 until the rest of it. | |
| 'BadChars' => "\x00" + (0x80..0xff).to_a.pack('C*') |
2.3.0 :001 > (0x80..0xff).to_a.pack('C*') + "\x00"
=> "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\x00"
There was a problem hiding this comment.
Thanks for the suggestion! I'm looking for a replacement like that :+1
There was a problem hiding this comment.
Apparently, if I put all the badchars using your suggested method, it will break how the encoder encode the payload. It will always return [-] Exploit failed: No encoders encoded the buffer successfully. So for testing, I'll stick to 'BadChars' => "\x00",
There was a problem hiding this comment.
If that's the case, then not all the characters from \x80 to \xff are bad characters. You'll need to identify which characters are bad.
There was a problem hiding this comment.
I already trial error all characters and found that all characters from \x80 to \xff identified as bad characters. The application won't load the crafted .lpp file if the file contains those bad characters.
|
I'm still doing some works on Windows 8.1 and Windows 10, see if I can manage to make it simpler. |
I will merge all suggestions on the next commit. Still trying on Windows 8.1 and Windows 10. |
Update includes all suggestions and new targets (Win8.1 x64 and Win10 x64)
Tested on Win10 x64 running CyberLink LabelPrint v2.5Tested on Win8.1 x64 running CyberLink LabelPrint v2.5Tested on Win7 x64 running CyberLink LabelPrint v2.5 |
Release NotesThe CyberLink LabelPrint Local BOF module has been added to the framework. This exploits a buffer overflow vulnerability in CyberLink LabelPrint 2.5 and below when the application opens a .lpp project file containing overly long string characters. |
Add CyberLink LabelPrint < 2.5 - Local Buffer Overflow (SEH Unicode) module based on EDB-42777.
This module exploits a stack buffer overflow in CyberLink LabelPrint 2.5 and below. The vulnerability is triggered when opening a .lpp project file containing overly long string characters via open file menu. This results in overwriting a structured exception handler record and take over the application. This module has been tested on Windows 7x64
Verification
Generate msf.lpp example and handler output (tested on Windows 7 x64)
NOTE: I used a dirty technique to reach the shellcode and it works. For now, it specifically works on Windows 7x64. I managed to make it works on Windows 10 as well, but I need to change some padding characters to reach the shellcode.
If you guys know shortest path, it would be an honor to learn from it.