Java 8, 202 201 199 bytes
import java.util.*;s->{Set r=new HashSet();String x;for(int l=s.length(),i=0,j;i<l;i++)for(j=i;++j<=l;)if((x=s.substring(i,j)).contains(new StringBuffer(x).reverse())&x.length()>1)r.add(x);return r;}
Try it here.
If a function isn't allowed and a full program is required, it's 256 255 253 bytes instead:
import java.util.*;interface M{static void main(String[]a){Set r=new HashSet();String x;for(int l=a[0].length(),i=0,j;i<l;i++)for(j=i;++j<=l;)if((x=a[0].substring(i,j)).contains(new StringBuffer(x).reverse())&x.length()>1)r.add(x);System.out.print(r);}}
Try it here.
Explanation:
import java.util.*; // Required import for Set and HashSet
s->{ // Method with String parameter and Set return-type
Set r=new HashSet(); // Return-Set
String t; // Temp-String
for(int l=s.length(), // Length of the input-String
i=0,j; // Index-integers (start `i` at 0)
i<l;i++) // Loop (1) from `0` to `l` (exclusive)
for(j=i;++j<=l;) // Inner loop (2) from `i+1` to `l` (inclusive)
if((t=s.substring(i,j)
// Set `t` to the substring from `i` to `j` (exclusive)
).contains(new StringBuffer(t).reverse())
// If this substring is a palindrome,
&t.length()>1) // and it's length is larger than 1:
r.add(t); // Add the String to the Set
// End of inner loop (2) (implicit / single-line body)
// End of loop (1) (implicit / single-line body)
return r; // Return the result-Set
} // End of method
333
be? Naively you'd end up printing33
twice \$\endgroup\$