MSSQL 2006中仅能执行ping localhost的RCE问题排查求助
可能的原因分析
- SQL Server服务账号权限不足:虽然拿到了
dbo权限,但xp_cmdshell是以SQL Server服务运行的本地系统账号/域账号执行命令的,这个账号很可能没有C:\Windows\Temp目录的写入权限,导致mkdir失败。而ping localhost只是发起本地回环ICMP请求,不需要文件系统或特殊权限,所以能正常执行并产生延迟。 - 盲注场景下的命令反馈盲区:
mkdir、文件写入这类命令本身没有执行延迟,不管成功失败都不会有时间变化,你没法通过延迟判断是否执行成功。可以试试拼接延迟命令验证,比如执行mkdir C:\Windows\Temp\pwned && ping -n 10 localhost,如果出现10秒延迟,说明mkdir已经执行成功了。 - 注入点的字符过滤/转义问题:ASP应用的注入点可能对空格、特殊符号(比如
&&、|)做了过滤或转义,导致mkdir的路径参数无法被正确解析。比如如果空格被过滤,mkdirC:\Windows\Temp\pwned肯定执行失败,但ping localhost参数简单,不容易触发这个问题。 - 系统命令缺失或路径问题:MSSQL 2006对应的Windows系统(比如Server 2003/2008)默认没有预装
curl,所以curl命令本身就不存在,自然执行失败。 - 主机安全软件拦截:本地的HIPS(主机入侵防护系统)或杀毒软件可能拦截了SQL Server服务账号执行的文件修改类命令,只允许
ping这类被判定为“无害”的操作通过。
内容的提问来源于stack exchange,提问作者dawn breaker
相关产品推荐
相关产品推荐

