Could do this procedurally by constructing iterator lists.
indices[n_, max_] := Module[
{jj = Array[j, n], starts, ends},
starts = Prepend[Most[jj] + 1, 1];
ends = max - Range[n - 1, 0, -1];
Flatten[
Table[jj, Evaluate[Sequence @@ Transpose[{jj, starts, ends}]]],
n - 1]
]
Example:
In[28]:= indices[4, 6]
Out[28]= {{1, 2, 3, 4}, {1, 2, 3, 5}, {1, 2, 3, 6}, {1, 2, 4, 5}, {1,
2, 4, 6}, {1, 2, 5, 6}, {1, 3, 4, 5}, {1, 3, 4, 6}, {1, 3, 5,
6}, {1, 4, 5, 6}, {2, 3, 4, 5}, {2, 3, 4, 6}, {2, 3, 5, 6}, {2, 4,
5, 6}, {3, 4, 5, 6}}
It should be straightforward to modify this to handle the lower triangular case.