C2IT.com Security Holes


Summary
  CitiBank's online cash site, C2IT.com, has substantial vulnerabilities
  to Cross Site Scripting.  The site is similar to PayPal in that it 
  lets users attach Bank and Credit Card account to this online system. 
  Users can then "send" cash to any user via their email address.  
  The site leaves nearly every form field unfiltered.  The site also
  displays credit card numbers, bank account numbers, security codes
  and other data with no obfuscation.  This info is then available to
  javascript through cross site scripting.   Citibank was notified 3s
  months ago about problems with their sites and many times since, 
  however, no noticeable actions have been taken yet.  
  
  This alert documents two sample attacks:  
  -Gaining access to user's credit card and bank account numbers
  -Scripting cash transfers out of users accounts

  UPDATE:  While these specific C2IT flaws have been fixed, 
    there are still other CitiBank flaws listed on 
    The List.  In addition, they still  skip BASIC 
    SECURITY 101 tips like obfuscating Credit Card numbers.  
	
	The rest of this document is now here only for historical 
	purposes and for educating people what has been done with 
    the simple CSS flaw.  
  
Background  

 CERT alerted to Cross Site Scripting over a year ago and gave 
  many specific recommendations on how to prevent such attacks.
 http://www.cert.org/advisories/CA-2000-02.html
 
 Public warning from me regarding Citibank and other sites
 http://www.devitry.com/security.html

 Citibank seems to think their site is pretty secure
 https://www.c2it.com/C2IT/privacypromise.jsp#security
 
 
!!!! Warning: !!!! 
  Do not attempt to steal anyone's hard earned money.  I'm
  sure that C2IT can now identify anyone attempting to use
  these exploits.  This code is provided only to show what
  is theoretically possible through these Cross Site Scripting
  holes and to let web site developers to know what to look
  for in to future when developing sites.

Alert User's Account Numbers (Credit Card / Bank account)

 Description:  Bank and Credit Card account numbers that are 
  attached to the users C2IT account are hidden in the SendCash
  form.  The are accessible by javascript and by Cross Site Scripting.
  This code can be passed to the ACCOUNT input variable and escaped
  by "> .. The script sets a time out so that the full form can load.
  It then access the SRC_ACCOUNT form field which has an array of 
  bank/credit card numbers in it.

 Page Location:  https://www.c2it.com/C2IT/SendCash
  
 Vulnerable Variable:  AMOUNT

 Pre-Req:  User must be logged it and have attached account.
 
 Sample Script:  
    <script>
      setTimeout("alert(document.forms[0].SRC_ACCOUNT.options[1].value)", 400);
    </script>

  Additional info:  The whole list of that user's account numbers could be 
  sent to another site using document.location.  The credit card 
  expiration date and 3 digit security code(!!!) are on the edit 
  account nickname page. 

	
Automatically Transfer Cash out of Account.

  Description:  Forms and actions on the site can be scripted through
  the Cross Site Scripting hole.  One thing to script is the Send Cash
  function that lets one send money to any email address.  This script
  populates the send cash form with email address and amount to send.
  (source account could also be selected, by default it comes out of 
   C2IT account). The script then confirms the action. 
  
  Page Location:  https://www.c2it.com/C2IT/SendCash
   
  Vulnerable Variable:  AMOUNT
	
  Pre-Req:  User must be logged it and have cash or credit card attached.
	 
  Sample Script:  
   <script>
     w=window.open("SendCash", "s","");
     setTimeout("f=w.document.forms[0];f.DEST_EMAIL.value='u@you.com';
     f.AMOUNT.value=10;f.submit();",15000);
     setTimeout("w.document.forms[0].submit();", 15000);
   </script>

Additional info: This could also be called from a dozen other pages / variables on the site. Covering your tracks Description: A full attack may include ways to mask actions that have occurred. C2IT's transaction history page can also be corrupted with non escaped HTML characters. In the above transfer simply adding some HTML to the NOTE_TO_SELF field would show up on the users transaction history log in an "A HREF"! A simple "> escape that, and html could be used to obscure other info on the page. HTML code is left to your imagination. Recommendations Citibank: Citibank should shutdown C2IT.com until all Cross Site Scripting holes can be removed and the site can be reprogrammed so that it doesn't expose sensitive account information (credit card numbers, bank account numbers and security codes) Users: Users should not use C2IT.com until the problems are fixed. If they must use the site, the should ensure that no other browser windows or email readers are open, and they should make sure they logout when finished. Conclusions The good news is that simple updates to C2IT.com can completely fix their site. They should also be able to track any accesses to their system. The bad news is that this attack is very simple and anyone with javascript knowledge could create devious code. In addition, many other sites online still have not fixed their Cross Site Scripting problems and could be vulnerable to similar attacks.
If you don't get it,
infigon is a play on "info going."
Yes, your information will travel with these vulnerabilities!