Preheat the oven to 350°F and line a muffin tin with paper liners.
Add the butter, vegetable oil, and water to a small saucepan. Heat the mixture over low heat, stirring frequently, until the butter is melted. Remove and let cool.
In a large bowl, whisk together the flour, sugar, cocoa powder, baking soda, and salt. Pour the butter mixture into the dry ingredients, and mix until well combined. Add the egg, buttermilk, and vanilla, and mix until blended.
Scoop the cupcake batter into the prepared muffin tin, filling ¾ full. Bake 25 minutes, until the tops spring back when touched lightly and a toothpick inserted in the center comes out clean. Remove from the oven and cool completely.
To make the buttercream, beat together the butter and cocoa powder until light and fluffy. Add the powdered sugar, milk, vanilla, and salt, and mix until well blended, adding additional milk if needed to bring the frosting together. Continue to beat for 3-5 minutes, until light and fluffy. Pipe the buttercream onto the cooled cupcakes.