Retina, 24 23 22 bytes
+`\[([^][]*)](.)
$2*$1
Try it online! This is practically a builtin in Retina 1. Edit: Saved 1 byte thanks to @Kobi. 47 45 bytes in Retina 0.8.2:
].
]$&$*¶
{+`\[([^][]*)]¶
$1[$1]
\[([^][]*)]
+`\[([^][]*)](.)
$2*$1
Try it online! This is practically a builtin in Retina 1. Edit: Saved 1 byte thanks to @Kobi. 47 45 bytes in Retina 0.8.2:
].
]$&$*¶
{+`\[([^][]*)]¶
$1[$1]
\[([^][]*)]