Error[8]: Undefined offset: 57, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

编译安装 vsFTP 3.0.3的详细解析

漏洞详情

VSFTP是一套基于GPL发布的类Unix系统上使用的FTP服务器软件。该软件支持虚拟用户、支持两种认证方式(PAP或xinetd/tcp_wrappers)、支持带宽限制等。

VSFTP中存在安全漏洞,该漏洞源于程序没有正确处理‘deny_file'选项。远程攻击者可利用该漏洞绕过访问限制。

以下产品及版本受到影响:VSFTP3.0.2及之前版本,opensuse13.1版本和13.2版本。

受影响的产品

Vsftpd Vsftpd 3.0.2

创建用户以及共享目录、目录权限

zhangsan   #用户名
123456      #密码
lisi
123456使用

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/access
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/access

anonymous_enable=NO
local_enable=YES
write_enable=YES

#不启动锁定用户名单,所有的用户都将被锁定不允许访问上级目录,只允许访问其主目录
chroot_local_user=YES
chroot_list_enable=NO

#启动log
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/etc/vsftpd/vsftpd.log

#开启虚拟用户
guest_enable=YES
#FTP虚拟用户对应的系统用户
guest_username=vsftpd
#PAM认证文件/etc/pam.d/vsftpd
pam_service_name=vsftpd

virtual_use_local_privs=YES

编写 vsftpd 启动 脚本:/etc/init.d/vsftpd                                                                                                       

#!/bin/bash
#
# vsftpd      This shell script takes care of starting and stopping
#             standalone vsftpd.
#
# chkconfig: - 60 50
# description: Vsftpd is a ftp daemon, which is the program
#              that answers incoming ftp service requests.
# processname: vsftpd
# config: /etc/vsftpd/vsftpd.conf
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x /usr/local/sbin/vsftpd ] || exit 0
RETVAL=0
prog="vsftpd"
start() {
        # Start daemons.
        if [ -d /etc/vsftpd ] ; then
                for i in `ls /etc/vsftpd/*.conf`; do
                        site=`basename $i .conf`
                        echo -n $"Starting $prog for $site: "
                        /usr/local/sbin/vsftpd $i &
                        RETVAL=$?
                        [ $RETVAL -eq 0 ] && {
                           touch /var/lock/subsys/$prog
                           success $"$prog $site"
                        }
                        echo
                done
        else
                RETVAL=1
        fi
        return $RETVAL
}
stop() {
        # Stop daemons.
        echo -n $"Shutting down $prog: "
        killproc $prog
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
        return $RETVAL
}
# See how we were called.
case "" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|reload)
        stop
        start
        RETVAL=$?
        ;;
  condrestart)
        if [ -f /var/lock/subsys/$prog ]; then
            stop
            start
            RETVAL=$?
        fi
        ;;
  status)
        status $prog
        RETVAL=$?
        ;;
  *)
        echo $"Usage: 
  • 修改文件 /etc/xinetd.d/vsftpd ,不使用 xinetd 守护进程启动 vsftpd
  • {start|stop|restart|condrestart|status}" exit 1 esac exit $RETVAL

    增加执行权限

    登陆测试

    以上就是编译安装 vsFTP 3.0.3的详细内容,更多关于编译安装 vsFTP 3.0.3的资料请关注脚本之家其它相关文章!

    )
    File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
    File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
    File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
    编译安装 vsFTP 3.0.3的详细解析_软件运维_内存溢出

    编译安装 vsFTP 3.0.3的详细解析

    编译安装 vsFTP 3.0.3的详细解析,第1张

    编译安装 vsFTP 3.0.3的详细解析

    漏洞详情

    VSFTP是一套基于GPL发布的类Unix系统上使用的FTP服务器软件。该软件支持虚拟用户、支持两种认证方式(PAP或xinetd/tcp_wrappers)、支持带宽限制等。

    VSFTP中存在安全漏洞,该漏洞源于程序没有正确处理‘deny_file'选项。远程攻击者可利用该漏洞绕过访问限制。

    以下产品及版本受到影响:VSFTP3.0.2及之前版本,opensuse13.1版本和13.2版本。

    受影响的产品

    Vsftpd Vsftpd 3.0.2

    • FTP的登录一般有三种方式,分别是:
    • 匿名用户形式:默认安装的情况下,系统只提供匿名用户访问,只需要输入用户anonymous/ftp,并将自己的Email作为口令即可登录。
    • 本地用户形式:以/etc/passwd中的用户名为认证方式。
    • 虚拟用户形式:支持将用户名和密码保存在文件或数据库中,将登录用户映射到指定的系统账号(/sbin/nologin)来访问资源,其中这些虚拟用户是FTP的用户。
    • 实验环境: CentOS 7.5 192.168.2.3
    • firewalld、iptables 及 SElinux 均为关闭状态
    • 下面实验采用基于PAM的虚拟用户,需要先用yum来安装PAM的组件:
    • 需要使用 epel 源 
    • yum -y install epel-release && yum -y install pam pam-devel db4-utils
    • 在默认配置下 vsftpd 需要使用 nobody 用户
    • 从官网上下载 https://www.linuxfromscratch.org/blfs/view/svn/server/vsftpd.html
    • wget https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gz
    • tar xf vsftpd-3.0.3.tar.gz
    • cd vsftpd-3.0.3/

    • vsftpd的源码包里并没有configure文件,直接编译安装
    • make clean && make -j 4 && make install 
    • 如果编译的时候报错
    • /usr/bin/ld: cannot find -lcap
    • 查找该 .so 文件
    • find / -name "*libcap.so*"
    • /usr/lib64/libcap.so.2.22
    • /usr/lib64/libcap.so.2
    • ln -sv /usr/lib64/libcap.so.2 /usr/lib64/libcap.so

    • 默认配置: 
    • 默认配置: 
    • 主程序文件:/usr/local/sbin/vsftpd
    • 主配置文件:/etc/vsfptd.conf
    • PAM认证文件:/etc/pam.d/vsftpd
    • 匿名用户主目录:/var/ftp
    • 匿名用户的下载目录:/var/ftp/pub
    •  
    • vsftpd的安全原则主要有两个:
    • 只允许支持虚拟用户登录,关闭本地用户和匿名用户。
    • 不允许使用root权限运行。
    •  
    • 创建配置文件存放目录
    • mkdir /etc/vsftpd
    • 拷贝新的配置文件到 /etc/vsftpd 目录

    创建用户以及共享目录、目录权限

    • 创建虚拟用户口令明文文件,使用前面安装的db4-utils组件生成口令认证文件:
    •  vim /etc/vsftpd/access.txt

    zhangsan   #用户名
    123456      #密码
    lisi
    123456使用

    • 前面安装的db4-utils组件生成口令认证文件:
    • db_load -T -t hash -f /etc/vsftpd/access.txt /etc/vsftpd/access.db

    • 编辑vsftpd的PAM认证文件:
    • vim /etc/pam.d/vsftpd

    auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/access
    account required /lib64/security/pam_userdb.so db=/etc/vsftpd/access

    • 编辑配置主文件 /etc/vsftpd/vsftpd.conf
    • cp /etc/vsftpd/vsftpd.conf{,.bak}
    • vim /etc/vsftpd/vsftpd.conf
    • #禁止匿名用户
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    
    #不启动锁定用户名单,所有的用户都将被锁定不允许访问上级目录,只允许访问其主目录
    chroot_local_user=YES
    chroot_list_enable=NO
    
    #启动log
    xferlog_enable=YES
    xferlog_std_format=YES
    xferlog_file=/etc/vsftpd/vsftpd.log
    
    #开启虚拟用户
    guest_enable=YES
    #FTP虚拟用户对应的系统用户
    guest_username=vsftpd
    #PAM认证文件/etc/pam.d/vsftpd
    pam_service_name=vsftpd
    
    virtual_use_local_privs=YES

    编写 vsftpd 启动 脚本:/etc/init.d/vsftpd                                                                                                       

    #!/bin/bash
    #
    # vsftpd      This shell script takes care of starting and stopping
    #             standalone vsftpd.
    #
    # chkconfig: - 60 50
    # description: Vsftpd is a ftp daemon, which is the program
    #              that answers incoming ftp service requests.
    # processname: vsftpd
    # config: /etc/vsftpd/vsftpd.conf
    # Source function library.
    . /etc/rc.d/init.d/functions
    # Source networking configuration.
    . /etc/sysconfig/network
    # Check that networking is up.
    [ ${NETWORKING} = "no" ] && exit 0
    [ -x /usr/local/sbin/vsftpd ] || exit 0
    RETVAL=0
    prog="vsftpd"
    start() {
            # Start daemons.
            if [ -d /etc/vsftpd ] ; then
                    for i in `ls /etc/vsftpd/*.conf`; do
                            site=`basename $i .conf`
                            echo -n $"Starting $prog for $site: "
                            /usr/local/sbin/vsftpd $i &
                            RETVAL=$?
                            [ $RETVAL -eq 0 ] && {
                               touch /var/lock/subsys/$prog
                               success $"$prog $site"
                            }
                            echo
                    done
            else
                    RETVAL=1
            fi
            return $RETVAL
    }
    stop() {
            # Stop daemons.
            echo -n $"Shutting down $prog: "
            killproc $prog
            RETVAL=$?
            echo
            [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
            return $RETVAL
    }
    # See how we were called.
    case "" in
      start)
            start
            ;;
      stop)
            stop
            ;;
      restart|reload)
            stop
            start
            RETVAL=$?
            ;;
      condrestart)
            if [ -f /var/lock/subsys/$prog ]; then
                stop
                start
                RETVAL=$?
            fi
            ;;
      status)
            status $prog
            RETVAL=$?
            ;;
      *)
            echo $"Usage: 
  • 修改文件 /etc/xinetd.d/vsftpd ,不使用 xinetd 守护进程启动 vsftpd
  • {start|stop|restart|condrestart|status}" exit 1 esac exit $RETVAL

    增加执行权限

    • sed -in 's/disable.*=.*/disable = yes/g' /etc/xinetd.d/vsftpd
    • sed -in 's/disable.*=.*/disable = yes/g' /etc/xinetd.d/vsftpdn
    • 启动 vsftpd

    • servicevsftpd start
    • 开机启动,重启测试

    登陆测试

    • chkconfig vsftpd on

    以上就是编译安装 vsFTP 3.0.3的详细内容,更多关于编译安装 vsFTP 3.0.3的资料请关注脚本之家其它相关文章!

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/yw/893945.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-14
    下一篇 2022-05-14

    发表评论

    登录后才能评论

    评论列表(0条)

    保存