I don't know about the CFAA specifically, but good general guidelines for educational, or exploratory penetration testing are:
- Only attack servers that you control, or that you have express permission to attack. For example, some people leave up websites with known vulnerabilities so that others can "practice hacking" on them. These sites usually have a disclaimer expressly giving you permission to attack them. Without that disclaimer, you can get in big trouble for launching an attack on a domain that you don't control.
- Only publish exploits for known (and patched) vulnerabilities. If you are playing with exploits that have already been published in academic journals / conferences, or are otherwise well known, then you're probably ok to post it on the internet, especially if a patch is available. However if you discover a new exploit, or are unsure if it's new, then it's better to go through official channels and notify the vendors before making anything public.
EDIT:
The OWASP WebGoat Project exists specifically to address issue (1.) :
WebGoat is a deliberately insecure web application maintained by OWASP designed to teach web application security lessons.
You can download and install the WebGoat packages onto your own machine and then run all the attacks you want!
If you have strong concerns about issue (2.) and publishing, you could always get in touch with your local OWASP Chapter and ask them.