TL;DR: No, it is not possible to implement the logical CNOT on two logical qubits encoded in the nine-qubit Shor's code using three physical CNOT gates.
Stabilizer group
Let $\mathcal{S}$ denote the stabilizer group of the nine-qubit Shor's code. Let $\mathcal{S}_X$ denote its subgroup consisting of $X$-type Pauli operators. It has four elements:
\begin{align}
&III,III,III\\
&XXX,XXX,III\\
&III,XXX,XXX\\
&XXX,III,XXX.
\end{align}
In particular, each $X$-type stabilizer acts the same way on qubits in each of the three-qubit sub-blocks separated by commas above. We define $\mathcal{S}_Z$ similarly and recall that each $g\in\mathcal{S}_Z$ acts as Pauli $Z$ on zero or two qubits in each three-qubit sub-bock.
Failure to preserve code subspace
Suppose $U$ realizes the logical CNOT and can be implemented using three physical CNOT gates (acting across or within the two code blocks).
In order for $U$ to distinguish between $Z_L=X^{\otimes 9}$ and $X$-type stabilizers it must be the case that each three-qubit sub-block of the logical target qubit contains at least one (and hence exactly one) control qubit of the three physical CNOT gates. Because otherwise, if conjugation by $U$ sends $I\otimes g$ to $h\otimes gk$ for some $g,h,k\in\mathcal{S}_X$, then it sends $I\otimes Z_L$ to $h\otimes Z_Lk$ failing to propagate $Z_L$ from the logical target qubit to the logical control qubit.
But then there is a $g\in\mathcal{S}_Z$, acting on the logical control qubit, such that
\begin{align}
U(g\otimes I)U^\dagger=gk\otimes h\tag1
\end{align}
where $h$ acts as Pauli $Z$ on exactly one qubit within a three-qubit sub-block. This operator does not belong to $\mathcal{S}$, so $U$ fails to preserve the code subspace.