For an analytical solution, have a look at this paper and this answer.
A numerical approach in R
set.seed(1) # for reproducability
n <- 100000 # number of random variables
# first beta distribution
a1 <- 0.5
b1 <- 0.9
X <- rbeta(n, a1, b1)
# second beta distribution
a2 <- 0.9
b2 <- 0.5
Y <- rbeta(n, a2, b2)
# calculate product
Z <- X * Y
# Have a look at the distributions
plot(density(Z), col = "red", main = "Distributions")
lines(density(X), lty = 2)
lines(density(Y), lty = 2)