Mutillidae: Born to be Hacked
Version: 2.1.19 Not Logged In
Home Login/Register Toggle Security Reset DB View Log View Captured Data

OWASP
Site hacked...err...quality-tested with Samurai WTF, Backtrack, Firefox, Burp-Suite, Netcat, and these Mozilla Add-ons
 
 
 
 
Developed by Adrian "Irongeek" Crenshaw and Jeremy Druin
View your details
Please enter username and password
to view account details
Name
Password
Dont have an account? Please register here
Hints
  • For SSL Injection:The old "' or 1=1 -- " is a classic, but there are others. Check out who you are logged in as after you do the injection.
  • For Session and Authentication:As for playing with sessions, try a cookie editor to change your UID.
  • For Insecure Authentication:Try sniffing the traffic with Wireshark, Cain, Dsniff or Ettercap.
  • Some code contains naive protections such as limiting the width of HTML fields. If your If you find that you need more room, try using a tool like Firebug to change the size of the field to be as long as you like. As you advance, try using tools like netcat to make your own POST requests without having to use the login web page at all.
  • You can use the login page normally but then simply change the parameters with Tamper Data. Because Tamper Data is allowing the user to manipulate the request after the request has left the browser, any HTML or JavaScript has already run and is completely useless as a security measure. Any use of HTML or JavaScript for security purposes is useless anyway. Some developers still fail to recognize this fact to this day.
  • Try SQL injection probing by entering single-quotes, double-quotes, paranthesis, double-dash (--), hyphen-asterik (/*), and closing-parenthesis-hyphen-hyphen ()--)
  • The first step is not gaining access but recon. Gaining access is actually fairly late in the process. To do recon with respect to SQL injection, try to cause errors to see how the application reacts. Some applications (many actually) fail to install custom error pages as required. Try to find out what database is running then inject special characters for that database. After special characters, try fuzzing major characters sets. Finally, if the application still has not produced useful error messages, then try timing attacks. Your goal is to get a reaction. Well built sites wont act differently even when a database error occurs.
  • After performing error recon and blind timing attacks, an entry point may be found to begin data extraction. Initially the best data to extract is data about the database itself. Try to answer the questions of what tables, views, columns, functions, procedures, system procedures, and other objects exist. From the MySQL reference documentation: Metadata is data about the data, such as the name of a database or table, the data type of a column, or access privileges. Other terms that sometimes are used for this information are data dictionary and system catalog. INFORMATION_SCHEMA is the information database, the place that stores information about all the other databases that the MySQL server maintains. Inside INFORMATION_SCHEMA there are several read-only tables. They are actually views, not base tables, so there are no files associated with them. In effect, we have a database named INFORMATION_SCHEMA, although the server does not create a database directory with that name. It is possible to select INFORMATION_SCHEMA as the default database with a USE statement, but it is possible only to read the contents of tables. You cannot insert into them, update them, or delete from them. Defense: Web apps should not actual have access to any tables or other objects. Web apps should only have one privilege; EXECUTE. Even then, the web app should only be able to execute on one schema and that schema should only contain the procedures needed explicitly by the application. The procs will still have access to the tables in the table schema because databases run procs with the authroity of the owner; not the caller. It works as if the database sets the "suid" bit on procs. Oracle and SQL Server do allow settings which alter this default behavior; for example causing the procs to run as the caller.
  • MySQL information schema tables that would likely be useful to recon:
    • TABLES Table
    • COLUMNS Table
    • USER_PRIVILEGES Table
    • ROUTINES Table
    • VIEWS Table
    • TRIGGERS Table
  • Attempt to recon what type of database is running then study the system functions, tables, and procedures that come with that platform. The built-in functions can come in handy.
  • SQL Servers accept batch queries but MySQL and Oracle do not. However, Oracle is susceptable to all forms of SQL Injection all the same and provides the greatest number of system functions to exploit. MySQL has fewer functions but the ones provided are very useful.