Grammar still ambigous after removing left recursion LL(1)
Removing left-recursion from a grammar does not make it unambiguous. That's not the intent of removing left-recursion, and an ambiguous grammar is likely to still be ambiguous after left-recursion is removed.

In the case of your grammar, you have two productions which are inevitably ambiguous:

S → a b S
S → S a b 


The first production allows an S to start with a sequence of a b, while the second production allows an S to end with such a sequence. However, nothing in the grammar specifies which of these two things takes priority. Since the order of grammar rules is unspecified, there are an exponential number of possible parses; although you might consider all the parses to be semantically equal, the parser needs to produce a single unique parse tree.

The solution, therefore, is to be clear about which parse tree to produce, which can be done fairly simply by creating a new outer production which handles one or the other of the alternatives. So, depending on your preference about associativity, you might use:

S' → S' a b
S' → S
S → a b S 


or

S' → a b S'
S' → S
S → S a b 


Alternatively, you could define a new non-terminal which just represents a sequence of a b:

S' → A S A
A → A a b
A → ε


In all cases, you should only consider removing left-recursion if you propose to use an LL parser. And if you plan on using an LL parser with only one token of lookahead, you'll have to deal with the prediction conflict resulting from the other rule for S which begins with a (by left-factoring, for example).