Podalirius Profile picture
Jan 18 β€’ 10 tweets β€’ 7 min read
[#thread 🧡] Last week in #Microsoft #PatchTuesday, a critical vulnerability was patched that theoretically allows attackers to achieve Remote Code Execution on a target #IIS server (CVE-2022-21907). I'll explain how it works in this thread ⬇️ Image
[#thread 🧡(2/9)] A bit of History !

First of all, it is important to know that this vulnerability is a sibling of CVE-2021-31166 disclosed in May of last year. These two vulnerabilities occur in the parsing of HTTP headers of an incoming request, within the http.sys driver. Image
[#thread 🧡(3/9)] But what happens exactly πŸ€” ?

To understand what happens in a kernel driver crash, It's important to analyze the kernel #crashdump generated at the moment of the blue screen! Let's open it in #WinDbg and analyze it! Image
[#thread 🧡(4/9)] WinDbg analysis πŸ”

With a quick analysis, WinDbg detects that a corrupted list triggered the crash in UlFreeUnknownCodingList. We also have all the function call graph at the moment of the crash, as well as registers values! Image
[#thread 🧡(5/9)] Functions call graph πŸ“ˆ

When an invalid Accept-Encoding is passed to #UlpParseAcceptEncoding function, it processes it and gives it to #UlFreeUnknownCodingList. The invalid content-codings of a circular doubly linked list are then freed and the driver crashes. Image
[#thread 🧡(6/9)] So where is my RCE ? πŸ₯Ί

Unfortunately, its only theoretical to achieve RCE with this vulnerability. Given what we can control in the crash there is not much things we can do besides crashing a remote server for now. Image
[#thread 🧡(7/9)] Video proof of concept πŸ“Ί

Here is a video PoC of the crash on a Windows 10 2004 (The source code used is in the next tweet):
[#thread 🧡(8/9)] Proof of concept code πŸ§‘β€πŸ’»

The proof of concept code of the crash for CVE-2022-21907 can be found here:

github.com/p0dalirius/CVE…
[#thread 🧡(9/9)] I hope you liked this thread! I definitely had some fun reversing the #PatchTuesday last week 😍πŸ₯³
[#thread 🧡(10/10)] Additional references

This writeup from @thezdi about the CVE from last year is really good and helps understanding how http.sys works: zerodayinitiative.com/blog/2021/5/17…

β€’ β€’ β€’

Missing some Tweet in this thread? You can try to force a refresh
γ€€

Keep Current with Podalirius

Podalirius Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @podalirius_

Jan 19
[#thread 🧡] I've released a tool to automatically extract, parse #windows build numbers from #ISO files in order to automatically sort them πŸ₯³πŸŽ‰

This is pretty useful if, let's say, you have a few Terabytes of ISOs 😏

github.com/p0dalirius/Win…
[#thread 🧡(2/4)] With this tool, you can automatically sort your ISO files in folders sorted by build numbers like this: Image
[#thread 🧡(3/4)] How does this work ?

Simple! This tool mounts the ISO file to a temporary location, and extract the xml file [1].xml from the Windows imaging (WIM) image in ./sources/boot.wim: Image
Read 4 tweets
Dec 23, 2021
[#thread 🧡] For this 23rd day of #CyberAdvent, we will talk about the LDAP structure and its naming contexts. πŸ¦‹
[#thread 🧡(2/10) ] LDAP is a directory structure (a tree) containing objects with their attributes:
[#thread 🧡(3/10) ] You can search for objects in the LDAP with a query on a specified base object and a search scope. In return, you will then get a list of matching objects with the attributes you selected.

docs.microsoft.com/en-us/windows/…
Read 10 tweets
Dec 20, 2021
[#thread 🧡] For this 20th day of #CyberAdvent we'll be talking about the Local Admin Password Solution #LAPS of Microsoft, and how it can be used to reduce the risk of network pivoting of attackers.
[#thread 🧡(2/6)] One of the common vulnerabilities found in Windows domains is a distributed local administrator on the workstations (sometimes even servers). This means that if an attacker compromises one machine, all the machines with the same administrator password are owned.
[#thread 🧡(3/6)] The attacker can then connect to all the other machines of the network using LM:NT hashes found on one compromised host! πŸ˜…
Read 6 tweets
Dec 3, 2021
[#thread 🧡] For this third day of #CyberAdvent (3/24), I'll tell you a story. The story of how I gained root access to a server by leveraging a really fun feature in a web application. This #pentest #writeup will explain the complete process from recon to root. πŸ¦‹
[#thread 🧡(2/9)] In the recon phase of my pentest, as usual I was performing a port scan. In the output from nmap, I saw an uncommon port 86 with an HTTP server running "Micro Focus DSD 1.0.0":
[#thread 🧡(3/9)] When going on the page from a browser, surprise πŸ₯³πŸŽ‰ we have an unauthenticated access! This is cool, but I never saw this app before so I didn't know whether we could exploit it simply or not!
Read 11 tweets
Dec 2, 2021
[#thread 🧡] For this second day of #CyberAdvent (2/24), we will be talking about a common #PrivilegeEscalation when using the * (wildcard) in shell scripts. Almost everyone has used at least once the * (wildcard) in a shell script but what really happens with the #wildcard ? πŸ¦‹
[#thread 🧡(2/7)] We will take as an example this shell script, performing a backup of a website using tar and a wildcard: Image
[#thread 🧡(3/7)] In this script, the shell replaces the wildcard with matching files from the current directory then executes the command. The * character is never sent to the command (TAR in our case) instead a list of matched files will be sent as arguments to the command. Image
Read 8 tweets
Aug 2, 2021
[thread] Did you know that ssh tries to authenticate with stored keys BEFORE the key specified with -i in the command line ? I just noticed this, the hard way 😐.

Let's imagine you have more than 5 keys loaded in your ssh agent. When authenticating to a remote server, you get:
After this message, ssh tries to authenticate with the keys in the order listed above. Why is that a problem ?

Because most servers have a default configuration with MaxAuthTries set to 6. After 6 tries, you will get a "Too many authentication failures" error.
So, ssh tries to authenticate with the keys in the order listed above, but gets disconnected after 6 tries. This means that if your agent has more than 6 stored keys, the key specified with -i is never used. This means you can't login to a remote server and you might not know why
Read 8 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(