É assim que o HTTP é construído. Tem que haver uma linha vazia após o cabeçalho HTTP. Isso é o que o echo
solitário produz.
Compare estes dois:
echo Content-Type: text/html; echo ; /bin/cat /etc/passwd
e:
echo Content-Type: text/html; /bin/cat /etc/passwd
Agora, deve ser óbvio como para echo ;
. (O ponto-e-vírgula separa os comandos, é claro).