You can use additive
$$ P_a^{-1} x = (B^T B)^{-1} x + (C^T C)^{-1} x, $$
multiplicative
$$ P_m^{-1} x = (B^T B)^{-1} x + (C^T C)^{-1} \Big(x - A (B^T B)^{-1} x \Big), $$
or symmetric multiplicative. Methods of this class are available in PETSc using PCCOMPOSITE in PETSc. For example,
petsc/src/ksp/ksp/examples/tutorials$ ./ex2 -m 100 -n 100 -ksp_monitor \
-pc_type composite -pc_composite_type multiplicative \
-pc_composite_pcs ilu,gamg
0 KSP Residual norm 7.088415699389e+01
1 KSP Residual norm 1.271768323411e+01
2 KSP Residual norm 1.529853612054e+00
3 KSP Residual norm 1.214841683459e-01
4 KSP Residual norm 8.341606406485e-03
5 KSP Residual norm 6.471990946051e-04
6 KSP Residual norm 8.082672366030e-05
7 KSP Residual norm 6.111138513482e-06
Norm of error 6.93786e-06 iterations 7
The users manual has a section on "Combining Preconditioners".