Your indices look somewhat mixed up. Based on my sketch, you mainly have vertex 3 and 4 swapped in the index array. You can tell that it can't be quite right because vertex 3 is commented "Front Right", but it does not show up in the indices under "right face". Vice versa for vertex 4. Most of the triangles are clockwise.
The comments are somewhat misleading. The x-axis is normally drawn left to right. You have the vertices with negative x-coordinates labelled "right", and the ones with positive x-coordinates labelled "left", which seems unusual.
I wonder if you might have used a left-handed coordinate system for your definitions, which would explain much of the above. Make sure that you always use a right-handed coordinate system, and look at the winding order from the outside of the object.
Did you mean to place vertex 5 under the center of the square, or is the y-offset intentional? I moved it under the center in the code below, but you can move it to where you had it without changing the topology.
Based on my paper sketch, the correct version would look something like this (untested):
float[] vertices =
{
-1.0f, -1.0f, -1.0f, //0. Back Left
1.0f, -1.0f, -1.0f, // 1. Back Right
0.0f, 1.0f, 0.0f, // 2. Top
-1.0f, -1.0f, 1.0f, //3. Front Left
1.0f, -1.0f, 1.0f, // 4. Front Right
0.0f, -2.0f, 0.0f //5. Bottom
};
byte[] indices =
{
3, 4, 2, 4, 3, 5, //draw front face
0, 3, 2, 5, 3, 0, // draw left face
1, 5, 0, 2, 1, 0, // draw back face
4, 1, 2, 5, 1, 4 // draw right
};