Bullet flying vertical

This code fires a bullet from enemy’s gun towards camera, but the bullet stays vertical. How do I rotate the bullet’s local coordinate system? Bullet is just a cylinder at the moment

void EnemyGunFire() {
        Transform target = Camera.main.gameObject.transform;
        Vector3 direction = (target.position - gun.transform.position).normalized;               
            GameObject bul = (GameObject)Instantiate(bullet, gun.transform.position, Quaternion.LookRotation(direction));
            bul.GetComponent<Rigidbody>().velocity = direction * speed;               
    }

Try this

Change line 5 to

 bul.GetComponent<Rigidbody>().AddForce(Vector3.Front);

I got it:

Transform cam = Camera.main.gameObject.transform;
Vector3 target = new Vector3(cam.position.x, cam.position.y, cam.position.z);
Vector3 direction = (target - gun.transform.position).normalized;
GameObject bul = (GameObject)Instantiate(bullet, gun.transform.position, Quaternion.identity);
bul.transform.rotation = Quaternion.FromToRotation(bul.transform.up, direction);
bul.GetComponent<Rigidbody>().AddForce(bul.transform.up * speed);