前言
在渗透测试工作中,我们偶尔可能会遇到需要激活guest等用户的操作,所以编写了该工具,进行方便使用。
基本命令如下:
net user guest /active:yes
编写工具
这里我们用到netusersetinfo这个api,其定义如下:
代码语言:javascript复制NET_API_STATUS NET_API_FUNCTION NetUserSetInfo( LPCWSTR servername, LPCWSTR username, DWORD level, LPBYTE buf, LPDWORD parm_err);
其中的level可以被我们所用,来进行操作,因为其1008定义是设置用户属性。
代码语言:javascript复制typedef struct _USER_INFO_1008 { DWORD usri1008_flags;} USER_INFO_1008, *PUSER_INFO_1008, *LPUSER_INFO_1008;
其中的UF_LOCKOUT属性可以达到我们的目的。最终代码如下:
代码语言:javascript复制// active.cpp : 定义控制台应用程序的入口点。//
#include "stdafx.h"#include <windows.h>#include <lmaccess.h>#include <stdio.h>#include <lm.h>#pragma comment(lib, "netapi32.lib")
int _tmain(int argc, _TCHAR* argv[]){ USER_INFO_1008 ui; ui.usri1008_flags = UF_LOCKOUT; NET_API_STATUS nStatus = NetUserSetInfo(NULL, argv[1], 1008, (LPBYTE)&ui, NULL);
if (nStatus == NERR_Success) { printf("[ ]%ls active successful...",argv[1]); } else { printf("[ ]%ls active fail,%u", argv[1],nStatus); }
return 0;}
效果如下: