Insights
This code should be compiled in Visual Studio targeting .NET Framework 4.0 for the x64 architecture. In order for the plugin to pass all the checks in PluginLoader, a StrongName object also needs to be created:
2. Next, specify this key pair for signing in the Visual Studio project settings:
After this preparation, the project needs to be compiled as a DLL library. Phase #002 – packing a malicious plugin Plugins in the application are packaged as a ZIP archive together with a .qpkg manifest file. This manifest must be created right after building the malicious plugin. To do this, the following steps are required:
2. Move the compiled DLL file to the plugins/APP.exploit directory.
4. Pack the entire plugins directory into a data.zip archive:
5. Obtain information about the size of files data.zip, plugin-config.xml and APP.Exploit.dll.
7. Create a manifset.qpkg file, and insert previously obtained information in the marked places:
With everything prepared, the final step was delivering the malicious plugin.
And for that, I could simply take advantage of the WebDAV property I mentioned earlier – the complete lack of authentication.
2. Upload the created manifest.qpkg file to the newly created directory:
3. Upload the data.zip archive containing the malicious plugin to the newly created directory:
4. Now it’s needed to download the global plugin manifest, which can be found at the following URL:
5. In order for the plugin to be recognized by the application, modify the existing global manifest by adding the following XML tag at the end:
6. All that remains is to upload the new global manifest using the following command:
Everything was ready – it was time to launch the application. Phase #004 – application update When users launch the application the next time, they will be greeted with the following message, suggesting that the APP application has been updated:
When the user goes through with the update, the malicious plugin gets downloaded and loaded into the process (as I observed in Procmon). At that point, the malicious code embedded in the DLL is executed:
Conclusion: When Architecture Choices Turn into RCE This vulnerability didn’t stem from a single bug or coding oversight. Instead, it was the result of several independent design decisions that, when combined, created a straight path to Remote Code Execution.

In today's world, ensuring the security of our accounts is more crucial than ever. Just as keys protect the doors to our homes, passwords serve as the first line of defense for our data and assets. It's easy to assume that technical individuals, such as developers and IT professionals, always use strong, unique passwords to keep ...

SOCMINT is the process of gathering and analyzing the information collected from various social networks, channels and communication groups in order to track down an object, gather as much partial data as possible, and potentially to understand its operation. All this in order to analyze the collected information and to achieve that goal by making …

PyScript – or rather Python in your browser + what can be done with it? A few days ago, the Anaconda project announced the PyScript framework, which allows Python code to be executed directly in the browser. Additionally, it also covers its integration with HTML and JS code. An execution of the Python code in …