php命令执行漏洞无回显时的渗透方法
前言
在渗透测试过程中,有些地方存在可疑的漏洞但通过注入点或者利用点进行测试的时候前端页面不会给我们显示回显。在这种情况下我们就可以使用dnslog的方式来判断漏洞的存在性。亦可以使用python启用一个http的方式来进行判断。
Dnslog
Dnslog,即dns日志。DNS在域名解析的时候会留下域名和解析IP的记录。dnslog常被利用来在无法判断漏洞的情况下或特定的技术时使用。例如OOB带外通道技术。
以一个简单的反引号执行漏洞为例子
<?php
if(isset($_GET['cmd'])){
$cmd=$_GET['cmd'];
`$cmd`; //反引号os命令执行漏洞
}else{
echo"?cmd=whoami";
}
?>
在真实的环境中我们是看不到后端代码的,我们通过简单的命令执行又可以猜测出这里存在一个命令执行漏洞点。
通过ping127.0.0.1的方式可以看到存在3秒的明显延时,虽然可以基本断定了,但是不存在回显就没有强有力的证据来说明漏洞点的存在性。
通过yakit自带功能生成一个临时的域名
然后此时再ping一下刚刚生成的域名
返回dnslog页面刷新纪录 ,可以看到一条明显的访问请求。
那么此时就可以断定此处存在命令执行漏洞了。