06-Web Server and Web Application Hacking

Table of Contents

Web Server and Web Application Hacking

Web Organizations

  • Web 2.0: dynamic applications; have a larger attack surface due to simultaneous communication

  • Internet Engineering Task Force (IETF): creating engineering documents to help make the Internet work better

  • World Wide Web Consortium (W3C): a standards-developing community

  • Open Web Application Security Project (OWASP): an organization focused on improving the security of software

    • WebGoat: project maintained by OWASP which is an insecure web application meant to be tested

OWASP Web Top 10 Application Security Risks 2017

  • A1 Injection Flaws: SQL, OS and LDAP injection

  • A2 Broken Authentication and Session Management: functions related to authentication and session management that aren't implemented correctly

  • A3 Sensitive Data Exposure: not properly protecting sensitive data (SSN, CC numbers, etc.)

  • A4 XML External Entities (XXE): exploiting XML processors by uploading hostile content in an XML document

  • A5 Broken Access Control: having improper controls on areas that should be protected

  • A6 Security Misconfiguration: across all parts of the server and application

  • A7 Cross-Site Scripting (XSS): taking untrusted data and sending it without input validation

  • A8 Insecure Deserialization: improperly de-serializing data

  • A9 Using Components with Known Vulnerabilities: libraries and frameworks that have known security holes

  • A10 Insufficient Logging and Monitoring: not having enough logging to detect attacks

Web Server Architecture

  • Most Popular Servers: Apache, IIS and Nginx

    • Apache runs configurations as a part of a module within special files (http.conf, etc.)

    • IIS runs all applications in the context of LOCAL_SYSTEM

    • IIS 5 had a ton of bugs - easy to get into

  • N-Tier Architecture: distributing processes across multiple servers; normally as three-tier: Presentation (web), logic (application) and data (database)

  • Error Reporting: should not be showing errors in production; easy to glean information

  • HTML: markup language used to display web pages

  • HTTP Request Methods

    • GET: retrieving whatever information is in the URL; sending data is done in URL

    • HEAD: identical to get except for no body return

    • POST: sending data via body - data not shown in URL or in history

    • PUT: requesting data be stored at the URL

    • DELETE: requesting origin server delete resource

    • TRACE: requesting application layer loopback of message

    • CONNECT: reserved for use with proxy

  • HTTP Error Messages

    • 1xx: Informational: request received, continuing

    • 2xx: Success: action received, understood and accepted

    • 3xx: Redirection: further action must be taken

    • 4xx: Client Error: request contains bad syntax or cannot be fulfilled

    • 5xx: Server Error: server failed to fulfill an apparently valid request

Technology Stacks

Stack Layer

Service

Technic

7

Custom Web Applications

Business Logic

6

Third Party Components

Open Source/Commercial

5

Web Server

Apache/MS IIS

4

Database

Oracle/MySQL/MS SQL

3

Operating System

Windows/Linux/OS X

2

Network

Router/Switch

1

Security

IPS/IDS

Web Server Attack Methodology

  • Information Gathering: Internet searches, whois, reviewing robots.txt

  • Web Server Footprinting: banner grabbing

    • nmap

      • Detect vulnerable TRACE method: nmap --script http-trace -p80 localhost

      • List email addresses: nmap --script http-google-email <target>

      • Discover virtual hosts on same IP address you're footprinting, * is online db such as IP2Hosts: nmap --script hostmap-_* <host>

      • Enumerate common web apps: nmap --script http-enum -p80 <target>

      • Grab robots.txt: nmap -p80 --script http-robots.txt <target>

      • Find out what options are supported by an HTTP server: nmap --script http-methods <target>

    • Other tools

      • Netcraft

      • HTTPRecon

      • ID Serve

      • HTTPrint

  • Website Mirroring

    • Bringing the site to your own machine to examine structure, etc.

    • Tools

      • Wget

      • BlackWidow

      • HTTrack

      • WebCopier

      • SurfOffline

  • Vulnerability Scanning

    • Scanning web server for vulnerabilities

    • Tools

      • Nessus

      • Nikto: specifically suited for web servers; still very noisy like Nessus; scan files and vulnerable CGIs

  • Session Hijacking

  • Web Server Password Cracking

Web Server and Application Attacks

  • Most often hacked before of inherent weaknesses built into the program

  • First step is to identify entry points (POST data, URL parameters, cookies, headers, etc.)

    • Tools

      • WebScarab: provided by OWASP

      • Burp Suite

      • httprint

  • Cookies:

    • Small text-based files stored that contains information like preferences, session details or shopping cart contents

    • Can be manipulated to change functionality (e.g. changing a cooking that says "ADMIN=no" to "yes")

    • Sometimes, but rarely, can also contain passwords

  • DNS Amplification: uses recursive DNS to DoS a target; amplifies DNS answers to target until it can't do anything

  • Directory Transversal (../ or dot-dot-slash)

    • Example: http://www.example.com/../../../../etc/password

    • File requested that should not be accessible from web server

    • Using Unicode to possibly evade IDS: %2e for dot and %sf for slash

  • Parameter Tampering (URL Tampering): manipulating parameters within URL to achieve escalation or other changes

  • Hidden Field Tampering: modifying hidden form fields producing unintended results

  • Web Cache Poisoning: replacing the cache on a box with a malicious version of it

  • Wfetch: Microsoft tool that allows you to craft HTTP requests to see response data

  • Misconfiguration Attack: improper configuration of a web server

  • Password Attack: attempting to crack passwords related to web resources

  • Connection String Parameter Pollution: injection attack that uses semicolons to take advantage of databases that use this separation method

  • Web Defacement: simply modifying a web page to say something else

  • Shellshock

    • Causes Bash to unintentionally executing commands when commands are concatenated on the end of function definitions

    • RCE via Apache CGI Script

  • Tools

    • Brutus: brute force web passwords of HTTP

    • Hydra: network login cracker

    • Metasploit

      • Exploits hold the actual exploit

      • Payload contains the arbitrary code if exploit is successful

      • Auxiliary used for one-off actions (like a scan)

      • NOPS used for buffer-overflow type operations

Injections

File Injection

  • Attacker injects a pointer in a web form to an exploit hosted elsewhere

Command Injection

  • Attacker gains shell access using Java or similar

LDAP Injection

  • Attacker exploits applications that construct LDAP statements

  • Format for LDAP injection including )(&)

SOAP Injection

  • Injecting query strings in order to bypass authentication

  • Using XML to format information

  • Messages are one way in nature

SQL Injection

  • Injecting SQL commands into input fields to produce output

  • Double dash (--) tells the server to ignore the rest of the query: ' OR 1 = 1 --, basically tells the server if 1 = 1 (always true)

  • Basic test to see if SQL injection is possible is just inserting a single quote '

  • In-band SQL injection: using same communication channel to perform attack

    • Error-based SQL Injection: most common used, inserting bad input to get database-level error message

      • System stored procedure

      • Illegal/Logically incorrect query: SELECT * FROM users WHERE name='bob"' AND password =, gets 'Unclosed quotation mark after sting " AND password='xxx"."

    • UNION SQL Injection: most common used, using UNION clause to append a malicious query

    • Tautology: using always true statements to test SQL (e.g. 1=1)

      A End of Line Comment: writing a line of code that ends in comment --

      SELECT * FROM users WHERE name='admin'--' AND password = 'password'

    • Inline Comment: using in-line comment /* */

    • Piggybacked Query: using semicolon ; to add malicious query after original query

  • Out-of-band SQL injection: using different communication channels (e.g. export results to file on web server)

  • Blind/inferential SQL injection: error messages and screen returns don't occur, usually have to guess whether command work or use timing to know

    • Time delay: inserting wait function for delay

    • Boolean exploitation: manipulating valid statements that evaluate to true and false in HTTP request parameter

      • https://example.com/item.aspx?id=67 and 1=2 gets SQL query SELECT * FROM items WHERE ID=67 AND 1=2, if vulnerable to SQL injection, no item will show

      • https://example.com/item.aspx?id=67 and 1=1 gets SQL query SELECT * FROM items WHERE ID=67 AND 1=1, if vulnerable to SQL injection, item 67 will show

    • Heavy query: in case it's impossible to use time delay function in query, generates heavy queries instead

  • MS SQL Server injection: running commands from SQL shell by using xp_cmdshell

  • Countermeasures

    • To counter Database server runs OS commands

      • Running database service account with minimal rights

      • Disabling commands like xp_cmdshell

    • To counter Using privileged account to connect to database

      • Monitoring DB traffic using an IDS, WAP

      • Using low privileged account for DB connection

    • To counter Error message revealing important information

      • Suppressing all error messages

      • Using custom error messages

    • To counter No Data validation at the server

      • Filtering all client Data

      • Sanitizing Data

  • Tools

    • Sqlmap

    • sqlninja

XSS (Cross-site scripting)

  • Inputting JavaScript into a web form alters what the page does

  • Can also be passed via URL http://IPADDRESS/";!--"<XSS>=&{()}

  • Can be malicious by accessing cookies and sending them to a remote host

  • Can be mitigated by setting HttpOnly flag for cookies

  • DOM Based XSS (Type 0): a form of XSS where the entire tainted data flow from source to sink takes place in the browser, and the data flow never leaves the browser. e.g.: the URL of the page or an element of HTML...

  • Stored XSS (Persistent or Type I): stores the XSS in a forum or like on the target server, for multiple people to access

  • Reflected XSS (Non-persistent or Type II): occurs when user input is immediately returned by a web application, without permanently storing the user provided data

CSRF (Cross-Site Request Forgery)

  • Forcing an end user to execute unwanted actions on an app they're already authenticated on

  • Inheriting identity and privileges of victim to perform an undesired function on victim's behalf

  • Capturing the session and sends a request based off the logged in user's credentials

  • Can be mitigated by sending random challenge tokens

Clickjacking

  • Also known as a user interface redress attack

  • Used to trick web users to click something different from what they think they are clinking

Buffer Overflow (Smashing the stack)

  • Attempting to write data into application's buffer area to overwrite adjacent memory, execute code or crash a system

  • Inputting more data than the buffer is allowed

  • Including stack, heap, NOP sleds (hex value 0x09) and more

Other attacks

  • Session Fixation: attacker logs into a legitimate site and pulls a session ID, then sends link with session ID to victim. Once victim logs in, attacker can now log in and run with user's credentials

  • Fuzzing: inputting random data into a target to see what will happen

  • HTTP Response Splitting

    • Adding header response data to an input field so server splits the response

    • It's not an attack by itself, so it must be combined with another attack

    • Can be used to redirect a user to a malicious site

  • CSPP (Connection Stream Parameter Pollution): polluting connection strings between the Web application authenticating a user to the database, for example, by injecting phony parameters into the connection strings using semicolons as separators

Last updated