Take the exterior shell of a walnut and the bark of the tree itself and cook them in water, and with this water mix alum and oak apples, and with these mixed things you will smear the head (having first washed it), placing upon the hair leaves and tying them with a bandage for two days; you will be able to color [the hair]. And comb the head so that whatever adheres to the hair as excess comes off. Then place a coloring which is made from oriental crocus, dragon's blood, and henna (whose larger part has been mixed with a decoction of brazilwood), and thus let the woman remain for three days, and on the fourth day let her be washed with hot water, and never will [this coloring] be removed easily."
This is an impressive recipe for two reasons. First, the time commitment is formidable: 5 days total of having various substances tied to your head before you can wash it all off. Second, it just might work! The first preparation (walnut hulls & bark, alum, and oak apples, a.k.a. galls) are all mordants. That is, something that allows a dye to "stick" to the material, in this case your hair; without a mordant, the dye would come right off. The second preparation contains mostly materials that are used for dyeing cloth, so they would probably work on hair too: oriental crocus is saffron (yellow), henna is a well-known dye (browns, oranges), as is brazilwood (reds, pinks, purples). Dragon's blood is a red-colored resin, but I am not aware of its being a useful dye.
I am tempted to try this one! ... at least, on fabric first; it is hard to tell what the resulting color would be.
Source: The Trotula, 12th century