It is a deliberate decision on the part of Lua's designers to keep the core language compact and portable. It is understood that if people need libraries, they will write them. They feel that their job is to provide the 'kernel' and others will do the 'distribution', rather like how Linus Torvalds manages Linux. Hence the common remark that 'Lua does not include batteries'.
Since these libraries are not officially 'blessed' there does tend to be reinvention, but just about anything can be done with freely available Lua extension libraries.
A good place to start is the Libraries and Bindings page at the Lua Wiki.
LuaForge is the community repository of Lua libraries and hosts most of the good ones. A useful list of the most popular modules is available here.
You may prefer to download a distribution that will give you Lua plus a set of libraries. A good choice for Windows is Lua for Windows which includes SciTE for editing and debugging Lua, plus a lot of libraries plus documentation.
If you are running a Debian-based Linux like Ubuntu, then Lua and the common libraries are already available via apt-get or Synaptic. Going to rpmseek and entering 'lua' gives more than 200 hits, so generally you can find what you need using your OS' package system.
Another approach is LuaRocks which provides a cross-platform repository for downloading Lua packages. Like apt-get, it understands dependencies so that if you want LuaLogging it will also fetch LuaSocket; unlike apt-get, it works for Unix, OS X and Windows.
Another option is LuaDist which is pretty much an 'executable criticism' of LuaRocks. This may appeal to you if you're a fan of CMake.