People often ask me "How did you learn how to hack?" The answer: by reading. This page is a collection of the blog posts and other articles that I have accumulated over the years of my journey. Enjoy!
https://make.powerapps.com.fakecorp.ca/ was a valid domain, controlled by an attacker! If this domain is loaded in an iFrame, what's the big deal though?postMessage to the powerapps.com URL. Then, this endpoint communicates to the top window of teams.microsoft.com. Considering the postMessage interface is quite expansive and was built with the idea that only trusted code was being ran, this creates an issue. It turned out, that an Access Token was being sent (without any other auth) to the iFrame, giving access to a bunch of information! User-Agent header. By sending VOIP messages with an XSS payload in the User-Agent header, the administrative account can be forced to perform arbitrary actions.pkexec can be used as an alternate to sudo.dbus-send command can also be used to trigger polkit. This tool can manually be used to simulate D-Bus messages that the graphical interface would use to send. accounts-daemon and polkit. The dbus-daemon enables all four processes to communicate securely, making it a key part to the puzzle. account-daemon. This is funneled through the dbus-daemon first. This includes a special bus id from the sender.
polkit if the connection id is authorized for the create user action.polkit asks dbus-daemon for the UID of the connection. The daemon sends back a list of admins who can perform the action or a 0 if the user is root.polkit.polkit approves this, the action is performed. polkit asks the debus-daemon about a particular UID. But, if the process is deleted, then UID does not exist. Although this should return an error message, this gets handled in the worst way possible!redirect_uri is not properly restricted. Although the domain exact path must be matched, it is a fuzzy match. /etc/passwd to get persistent access to the device. 0x41414141 or a bunch of A's from fuzzing. The system has ASLR enabled, NX enabled on the binary but the binary is not compiled with PIE. 0x76CXX000 where XX varied. Additionally, C would sometimes be D. Brute forcing this is a 1/4096 chance or 12 bits of entropy. EditingPageParser uses an allowlist for specific control options while creating a site. The safe controls must be defined in the web.config file in order to be used. Namespace="System.Web.UI.WebControls " (note the trailing space), will not be resolved in the validation stage but will be found in the execution stage. System.Web.UI.WebControls.XmlDataSource function. In the POC, several small things had to be done in order to get code execution on the server, but it's not the most important thing to go through because the security is in the allowlist, which has been bypassed. .html files. When the file content gets rendered on the admin portal, it creates XSS. null was, it was trying to append a string/object directly into the DOM.null, there was an HTML injection vulnerability! However, the security of the CSP made it impossible to load in JavaScript directly. +1 for defense in depth! But, the CSP allowed frames to be loaded from anything that starts with S3. {{6*6}}, which turns into 36 after it has been executed.