Are there any tools or online applications that can list where a CDN's servers are located?
No, not really.
CDNs have servers in many places around the world. Furthermore, CDNs can be built on different network topologies -- mainly Split Horizon DNS and TCP/IP Anycast, or combinations of these.
So if someone wanted to chart all CDN POPs globally, it would be a major undertaking. You'd need to do measurements from many places around the globe, and use many different tools. Just as an example, Akamai isn't publicizing exactly how many servers they have, but it's likely more than 61,000 servers.
With some of the big CDN players, who operate their own Autonomous System, you can kind of get an idea by looking at their IP ranges through the global registrars like RIPE, ARIN etc. But that won't give you the full picture, as networks and server placements don't necessarily map 1:1 to each other.
You best source for information about server placement / POPs is likely going to be the CDN vendor itself. And most of the big CDNs will not give exact details.
I doubt it would be possible to reliably detect the locations of any CDNs machines.
If the service used fixed DNS names for all their machines that had the same mapping of name->address for every query and the names had a predictable pattern and no fancy routing techniques like anycast are used and all the machines were online at the time of your test, then you could find the IP addresses of the machines by brute force and then use ping timings and packet route traces to guess where each one is located. I doubt you will find any CDN (especially one of significant size) that all (if any) of the above conditions are true for though, and even if one did exist that all these conditions are true for, any ping and packet trace methods of geo-locating them will be far from an exact science.
The only way to know would be to ask the CDN, get an answer (which is not likely to happen), and trust that answer is complete and accurate...
One way I regularly use is to use a service like just-ping.com and use the ip addresses and ping times to figure out locations.
So if a CDN has < 50ms latency from Australia, then they probably have a server there... Serving to AU from Singapore or USA is well above 50ms...
If its not an Anycast CDN, take all the IPs you get out of it, and run traceroute (and what have you) to figure out each IPs location.
This method works for me cause I'm usually interested in regional presence and don't need an exact list.