As we know that particles, only having charge, can have magnetic moment, then how particle like neutrino (having mass) can have magnetic moment? Don't bother about neutron because it has charge distribution.
Elementary particles have quantum mechanical spin. This induces a spin magnetic moment, independent of the presence (or, indeed, absence) of a (net) electric charge. This is how the neutron attains its magnetic moment (as you already mentioned).
The case of the neutrino magnetic moment is slightly confusing, as they are not completely understood yet. Within the Standard Model, neutrino's do not have a magnetic moment, but we know that the Standard Model fails to account for the neutrino masses as well. Extensions of the Standard Model with non-zero neutrino masses predict a neutrino magnetic moment proportional to their masses, but the value has not been measured experimentally.
For more info, see e.g. this paper or this one. The latter has more details on how the magnetic moment is calculated using standard methods from quantum field theory (starting at page 18). Loosely speaking, the neutrino's magnetic moment seems to arise from the following mechanism: In QFT, one does perturbation theory using Feynman diagrams. As one goes to higher orders, one considers diagrams with increasingly many vertices. One type of diagram that starts popping up at some point is a diagram where the neutrino comes in, splits into particles that interact electromagnetically, and reappears when these recombine. This also explains why the magnetic moment is (expected to be) very small.