diff --git a/content/posts/figuring-out-https-mitm.md b/content/posts/figuring-out-https-mitm.md
new file mode 100644
index 0000000..a6932ae
--- /dev/null
+++ b/content/posts/figuring-out-https-mitm.md
@@ -0,0 +1,107 @@
++++
+title = "Figuring Out HTTPS MITM in India"
+date = "2021-12-25"
+author = "Ceda EI"
+tags = ["security", "internet"]
+keywords = ["security", "internet"]
+description = "Being served a MITM page over HTTPS"
+showFullContent = false
++++
+
+Belonging to India, I am very used to seeing random websites being blocked.
+However, today was particularly scary because the [MITM (Man In The Middle
+attack)](https://en.wikipedia.org/wiki/Man-in-the-middle\_attack) happened over
+HTTPS. I visited [usebottles.com](https://usebottles.com/) over HTTPS and was
+served with the following page.
+
+![](/images/usebottles\_censored.webp)
+
+Notice the padlock in the address bar. Checking into it, the certificate is
+valid and signed by [Cloudflare](https://cloudflare.com/).
+
+![](/images/usebottles\_certificate.webp)
+
+## Further Exploration and Hypothesis
+
+The initial hypothesis was that the Indian Government or the ISP has
+Cloudflare's signing keys and are serving the blocked page over HTTPS. This
+seems unlikely however and would be a very severe thing and would essentially
+erode all trust in HTTPS at scale as Cloudflare can sign any website's domain
+which essentially means that ISPs could MITM
+
+After a bit of exploration, the DNS entry of
+[usebottles.com](https://usebottles.com) points to `172.67.197.25` and
+`104.21.92.184`. I checked that both of these IPs were owned by Cloudflare. To
+ensure that the DNS entries weren't being MITM attacked either, I checked for
+the same from my Hetzner Server.
+
+The second possibility that arises from this is that Cloudflare itself was
+serving the blocked page. While more likely than the previous scenario, it is
+still unlikely generally. I looked for any notices from Cloudflare about this
+and could not find any.
+
+At this point, I was mostly out of ideas. I looked into the source of the page
+and found something interesting. The entire page's source was the following
+(invalid) HTML:
+
+```html
+
+
+
+```
+
+The most interesting part of this was that the iframe's URL pointed to
+[airtel.in](https://www.airtel.in/). Airtel is an ISP in India, however, I was
+not using internet services from Airtel.
+
+My presumption is based on this.
+
+## Final Hypothesis
+
+This is what I presume is happening.
+
+```
+Me <---> Cloudflare <---> usebottles' server
+ 1 2
+```
+
+So far, we have been assuming the MITM is happening at `1` i.e. between Me and
+Cloudflare. However, the fact that `2` is secure isn't guaranteed.
+
+My best guess is that the Cloudflare server I am getting connected to happens
+to be using Airtel as the ISP. When Cloudflare's server tries to connect to
+usebottles' server, Cloudflare gets MITM attacked by their ISP - Airtel.
+Likely, SSL is not enforced between Cloudflare and usebottles' server. Thus,
+Cloudflare connects to usebottles' server over HTTP.
+
+Normally, a connection would happen the following way:
+
+1. I connect to https://usebottles.com/
+2. I get connected to Cloudflare's server.
+3. Cloudflare's server reaches out to usebottle's server.
+4. usebottles' server sends a response.
+5. Cloudflare signs the response with the certificate.
+6. I get a webpage over HTTPS.
+
+What seems to be happening is:
+
+1. I connect to https://usebottles.com/
+2. I get connected to Cloudflare's server.
+3. Cloudflare's server reaches out to usebottle's server.
+4. **Airtel intercepts the request and sends the blocking page**
+5. Cloudflare signs the **blocking page** with the certificate.
+6. I get **blocking page** served over HTTPS.
+
+I would be interested in knowing if there are any alternative explanations to
+this or something I have missed. You can [contact
+me](https://webionite.com/#contact) to let me know!
diff --git a/static/images/usebottles_censored.webp b/static/images/usebottles_censored.webp
new file mode 100644
index 0000000..b74843c
Binary files /dev/null and b/static/images/usebottles_censored.webp differ
diff --git a/static/images/usebottles_certificate.webp b/static/images/usebottles_certificate.webp
new file mode 100644
index 0000000..b040f05
Binary files /dev/null and b/static/images/usebottles_certificate.webp differ