Cross product of two normalized vectors gives you a vector which is perpendicular to both of them. In cases when you have just a single vector, forward vector in your case, you have to arbitrary define one intermediate vector, to be used as alignment.
Usually, if I need to find Up vector for example, I define intermediate Right vector as (0,1,0) as it doesn’t have to be perpendicular to forward vector, it just shouldn’t be pointing in the same direction as Up or Forward vectors. Cross-product of forward and intermediate right vector, gives you “true” up vector. Now to find “true” right vector (if necessary), take another cross product of forward and now Up vector that you’ve just calculated.
What I mean by intermediate vector being used as alignment is that its used to define in which plane your third vector will be. So if you define your intermediate right vector as normalize(0.0,0.5, 0.5), the Up vector will be tilted to 45 degrees from ground plane.
Not sure if this will work as I havent tried it but there is a function for FindLookatRotation which returns a rotator which you should be able to use the typical Get Right/Up Vector functions on