|
1.提权时遇到的问题
2.程序运行与参数的调用
3.跳过限制的方法
1.提权时遇到的问题
想必大家在提权时遇到过这种问题,就是找到一个可读可写目录,上传个CMD调用CMD可以执行一些DOS命令,例如ver ,whoami ,systeminfo .如果net ,netstat ,tasklist等没有限制也可执行例如net user,net start,netstat -ano等命令。
这时我们可能第一个想到的是上传PR,IIS等提权杀器本地溢出提权,于是乎就上传杀器到上传CMD的目录准备提权,我们以经典的ASP.NET木马(ASPXSpy2)举例,假设C:\RECYCLER\为一个可读可写目录.
我们使用shell的CMD命令功能,需要填两个地方,一个是CMD的路径,这个填在上面的文本输入的地方,下面我们看到的是/c set可以看到是一个set命令。
于是我们在上面CMD路径那里填写C:\RECYCLER\CMD.exe,在下面将set改为ver点击执行即可看到回显,表明系统的版本.于是我们再把ver换成EXP的路径进行溢出,例如PR,我们在下面把ver改成C:\RECYCLER\pr.exe,然后点击运行,情况发生了,没有回显。即使再改成C:\RECYCLER\pr.exe “net user 90sec 90sec /add”执行还是没有回显,为什么呢???难道是打补丁了???我们使用systeminfo命令发现并没有KB952004这个补丁啊.说明PR是可以溢出的啊,为什么没有回显呢???我们使用net user命令发现并没有加上90sec这个账号。这是为什么呢???可能有人会说这个目录没有可执行权限,但是我们的CMD可以运行啊,说明不是没有可执行权限的问题.这时可能大家就会换巴西烤肉,IIS等进行尝试,但是还是一样的情况。可能大家还会说是net删了或者限制权限了,我们用自己上传的net进行加账号,还是没回显,用netuser查看,表明没有加上账号。我们再使用ver命令,还是没有回显,将结果回显到一个文本发现没有产生这个文本,说明连最简单的ver命令都无法执行.
问题产生了:可读可写可执行目录不能运行程序!
2.程序运行与参数的调用
我们来看下CMD是如何运行参数的,以SU本地提权为例我们可以发现在下面有 命 令:cmd /c net user hacker$ hacker /add & net localgroup administrators hacker$ /add
我们分析下这条命令,可以发现cmd 是system32目录下的cmd,而net user hacker$ hacker /add & net localgroup administrators hacker$ /add则为我们的命令,我们可以发现中间多了个/c和一些空格,这是为什么呢?其实才cmd /c “命令”即是cmd运行的参数的调用方式,我们使用ASPXSpy是在cmd命令执行那里可以发现命令那里我们通常是改了那个set作为命令,却忽略了前面的/c和空格,按照系统执行命令的参数原理可以想到是上面的cmd路径+空格+我们下面的命令即C:\RECYCLER\cmd.exe /c set,这样是符合运行机理的.我们在分析下pr的运行方式pr.exe “命令”可以发现pr和命令之间没有/c,但是中间有个空格.这样我们就可以想办法直接调用PR进行带参数溢出.
3.跳过限制的方法
分析一下,CMD执行一条命令,即程序(CMD)的路径+空格(ASPXSpy2会帮你补上这个空格)+/c “命令”,也就是说我们不需要输入程序与命令之间的空格.然后我们这样做一下,在CMD路径那里输入PR的路径C:\RECYCLER\pr.exe,然后再命令那里把/c set都清除掉输入”net user 90sec 90sec /add”。我们来分析下ASPXSpy2的运行。它会以C:\RECYCLER\pr.exe “net user 90sec 90sec /add”来运行,因为它会把上面CMD的路径后面加上一个空格然后加上我们下面的参数带入系统运行.这样我们C:\RECYCLER\pr.exe后面的空格就不需要输入就可以,因为ASPXSpy2会帮我们补上这个空格我们可以直接在CMD路径那里输入EXP的路径,在命令那里输入”参数”即可运行EXP.这样就可以跳过某些第三方方软件的限制(即我们第一部分遇到的问题).
思路扩展:我们同样可以使用此方法跳过限制运行其他EXP,以及lcx,nc等程序.​
|
|