Abstraction is a key concept of computer programming and frameworks help programmers achieve this. This is a good thing. I doubt many us would like to develop complex systems in assembly language! The problem comes, I think, when programmers have little idea of what the abstraction layer is masking. In other words, you need to have some idea of what goes on under the hood, even if you don't directly interact or interface with it.
I remember developing some of the first dynamic websites back in the mid 90's, using C and CGI (at a time when the majority of websites were still static HTML). There weren't really any mature server-side scripting languages (like PHP or ASP) and very few libraries, so you had to write out the entire HTTP response stream to the server with every page. Parsing GET and POST parameters required writing your own library. It was tedious, slow, hard-work and very error prone. I don't miss it one bit!
However, I also feel frameworks like ASP.NET web-forms abstract the whole stateless nature of the web to a point where many new web developers have little clue of what actually is going on under the hood. This leads to inefficient, bloated code that performs poorly because the developer is plumbing components together using a "drag'n'drop" methodology without realising what is going on at the HTTP level.
So, I believe frameworks are essential for developing high-level software, but they don't absolve developers of having some understanding of what is being abstracted away. Yes, frameworks can make you dumb, but only if you fail to understand them.