There are many options to determine the transfer function of such a filter. One of them is to use the fast analytical circuit techniques or FACTs. By doing so, you will determine the time constants associated with each of the energy-storing elements of your filter. Because there are two capacitors with independent state variables, this is a second-order system whose denominator obeys the following expression: \$D(s)=1+b_1s+b_2s^2\$. What is cool with the FACTs is that you will independently determine \$b_1\$ and \$b_2\$ through individual sketches leading to a canonical form without much efforts. We can start the analysis for the \$s=0\$: open the capacitors and solve the transfer function \$H_0\$. By inspection, you have \$H_0=-\frac{R_3}{R_1}\$. The equivalent sketch is
Then, you reduce \$V_{in}\$ to 0 V and you determine the resistance by "looking" into \$C_1\$'s terminals while \$C_2\$ is in its dc state (open-circuited). The sketch is below:
If you do the simple maths ok around this circuit, as confirmed by the below simulation, the resistance is 0 and the time constant \$\tau_1\$ is equal to 0.
For the second time constant, we now "look" at the resistance offered between \$C_2\$'s terminals as illustrated below (\$C_1\$ is set in its dc state):
If you do the maths ok and consider a perfect op amp, the second time constant \$\tau_2\$ is equal to \$\tau_2=C_2(R_2+R_3+\frac{R_2R_3}{R_1})\$. According to the definition, \$b_1=\tau_1+\tau_2=C_2(R_2+R_3+\frac{R_2R_3}{R_1})\$.
To obtain \$b_2\$, we will now determine the time constant involving \$C_1\$ while \$C_2\$ is a short circuit:
Doing the maths (look at the virtual ground at the (-) pin) leads to \$\tau_{21}=C_1(R_1||R_2||R_3)\$ and this is it, we have \$b_2=\tau_2\tau_{21}=C_2(R_2+R_3+\frac{R_2R_3}{R_1})C_1(R_1||R_2||R_3)\$. The complete transfer function is thus:
\$H(s)=-\frac{R_3}{R_1}\frac{1}{1+sC_2(R_2+R_3+\frac{R_2R_3}{R_1})+s^2C_2(R_2+R_3+\frac{R_2R_3}{R_1})C_1(R_1||R_2||R_3)}=H_0\frac{1}{1+\frac{s}{Q\omega_0}+(\frac{s}{\omega_0})^2}\$
The FACTs let you determine the transfer function through a succession of simple sketches that you can individually solve and check with a simple simulator. Should you make a mistake, identify the guilty sketch and correct it: no need to restart from scratch as with classical analysis. Also, as you can see, the result is already factored without the need to inject further energy into the factoring of an arm-long expression mixing all the terms (brute-force analysis). This filter is part of the many solved problems described here.