Book Image

Hands-On Penetration Testing with Python

By : Furqan Khan
Book Image

Hands-On Penetration Testing with Python

By: Furqan Khan

Overview of this book

With the current technological and infrastructural shift, penetration testing is no longer a process-oriented activity. Modern-day penetration testing demands lots of automation and innovation; the only language that dominates all its peers is Python. Given the huge number of tools written in Python, and its popularity in the penetration testing space, this language has always been the first choice for penetration testers. Hands-On Penetration Testing with Python walks you through advanced Python programming constructs. Once you are familiar with the core concepts, you’ll explore the advanced uses of Python in the domain of penetration testing and optimization. You’ll then move on to understanding how Python, data science, and the cybersecurity ecosystem communicate with one another. In the concluding chapters, you’ll study exploit development, reverse engineering, and cybersecurity use cases that can be automated with Python. By the end of this book, you’ll have acquired adequate skills to leverage Python as a helpful tool to pentest and secure infrastructure, while also creating your own custom exploits.
Table of Contents (18 chapters)

SSL stripping (missing HSTS header)

SSL stripping, or SSL downgrade, is an attack vector that downgrades an HTTPS connection to HTTP. This attack is carried out by an attacker who is between the victim and the web server and acts as a transparent proxy. It further maintains a HTTP based downstream connection with the victim and a proper HTTPS upstream connection with the server.

An attack is therefore carried out by the combination of ARP poisoning, SSL stripping, and setting up a transparent proxy between the attacker and the victim. Let's say that a victim wants to visit a site called abc.com. By default, abc.com is served by the server on HTTPS as https://www.abc.com, but when the user types the URL in the browser, abc.com, the browser sends the request as http://www.abc.com to the server, which responds with a 302 response and redirects the user to https://www.abc.com...