Apache潜在漏洞

四 12th, 2009
815 views | 没有评论

        很多多论坛网站,都具备有上传附件的的功能,一般都会开放rar附件上传,并可能会保留原来文件名称,这从而可能导致一个很严重的问题,test.php.rar文件可能会被Apache当作php文件来执行,造成一定程度的安全隐患。
        如何测试? 当你将某个php程序文件后缀名修改成 test.php.rar,这时测试一下,还是按照PHP文件解析执行,Apache并不会认为这是一个rar文件,这是为什么呢?
        其实,因为每遇到一种后双重后缀名(如test.php.rar)的文件,Apache都会去conf/mime.types文件中检查最后一个后缀,如果最后一个后缀并没有在mime.types文件中定义,则使用前一个后缀来解释,因为在默认情况下,rar并未在mime.types中定义,故 Apache会使用php后缀来解释文件,这就是漏洞的原因所在吧。
        由此可知,如果使用test.jsp.aaa.rar则会很可能认为是jsp文件,如果修改成test.shtml.rar,则会识别成shtml文件。
        如果没有相应修改设置,不知道有多少网站可能存在这个问题? 如何杜绝这个隐患 ?
        修改Apache相应的配置文件httpd.conf文件内容:

    AddType application/rar .rar
    AddType application/x-compressed .rar
    AddType application/x-rar .rar
    AddType application/x-rar-compressed .rar
    AddType application/x-rar-compressed; application/x-compressed .rar
    AddType compressed/rar; application/x-rar-compressed .rar

        然后重新启动Apache服务
        针对Web管理员及Web程序开发者,如何更安全
        1.只允许上传指定后缀名的文件,当然,要禁止掉rar格式文件上传。(但这条往往行不通,一般的网站都需要上传rar文件)
        2.对上传后的文件名进行强制重命名,强制使用最后一个扩展名,如原始文件名为test.php.rar,上传后强制重命名为20090412.rar即可避免这个隐患
        ps:早期版本的phpcms、discuz等貌似存在这个漏洞

标签: ,

查看硬件信息工具lshw及查找打开的文件工具lsof

三 26th, 2009
1,102 views | 没有评论

        介绍推荐两款命令系统工具:硬件配置信息查看工具lshw及查看打开的文件和套接字工具lsof
        lshw硬件查看工具,它全称叫:HardWare LiSter,实现的原理应该可以说是获取使用/proc里面读取到的数据来显示相关的信息
        下载地址:http://ezix.org/software/files/lshw-B.02.14.tar.gz
        解压安装:tar -zxvf lshw-B.02.14.tar.gz && make && make install 即可
        可以先了解查看解压后目录下的README文件信息:

    1 lshw: HardWare LiSter for Linux
    2 ===============================
    4 lshw is a small tool to provide detailed information on the hardware confi-
    5 guration of the machine. It can report exact memory configuration, firmware
    6 version, mainboard configuration, CPU version and speed, cache configuration,
    7 bus speed, etc. on DMI-capable x86 or EFI (IA-64) systems and on some PowerPC
    8 machines (PowerMac G4 is known to work).
    10 Information can be output in plain text, XML or HTML.
    12 It currently supports DMI (x86 and EFI only), OpenFirmware device tree
    13 (PowerPC only), PCI/AGP, ISA PnP (x86), CPUID (x86), IDE/ATA/ATAPI, PCMCIA
    14 (only tested on x86), USB and SCSI.
    16  * Requirements
    17     . Linux 2.4.x or 2.6.x (2.2.x might work, though)
    18     . a PA-RISC, Alpha, IA-64 (Itanium), PowerPC or x86 based machine
    19     . an ANSI (or close enough to ANSI compliance) C++ compiler
    20     (tested with g++ 2.95.4 and 3.2.2)
    21     . for the (optional) GTK+ graphical user interface, you will need a
    22     complete GTK+ 2.4 development environment (gtk2-devel on RedHat/Fedora
    23     derivatives)
    25  * To compile it, just use:
    27     $ make
    29  * If you want to build the optional GUI, do:
    31     $ make
    32     $ make gui
    34  * the lshw home page is http://lshw.org/
    35  * send bug reports, requests for help, feature requests, comments, etc. to
    36    bugs@ezix.org.  The author can be contacted directly (lyonel@ezix.org)
    37    Please make sure you include enough information in your bug report:
    XML  38    output from lshw is preferred over text or HTML, indicate the affected
    39    version of lshw, your platform (i386, x86-64, PA-RISC, PowerPC, etc.) and 40
    your distribution.
    and so on。。。

        可以使用html格式输出这些信息 通过web浏览查看 如:

    #lshw -html >/var/www/pcinfo.html

        然后网页 http://yourdomain/pcinfo.html 查看
        还有更多的相关lshw参数可以使用 也支持图形界面的查看,详见

    #lshw –X    //图形界面
    #man lshw   // 查看lshw工具更多参数用法

        lsof轻松查看正在运行的进程可打开哪些文、目录及套接字等信息,了解应用程序打开了哪些文件或者哪个应用程序打开了特定的文件,进而了解更多关于系统的信息。
        快速查出哪个进程在使用某个特定目录(如:/root/install) ,此有助于umount(卸载)或rm(删除)某些文件系统或目录前进行确认,可尝试使用lsof工具:

    [root@yanqx ~]# lsof /root/install/
    COMMAND   PID USER   FD   TYPE DEVICE SIZE      NODE NAME
    bash    18041 root  cwd    DIR   0,29 4096 188088470 /root/install/

        可见得,显然是root进入到了/root/install目录中。。。。
        同样,lsof也可列举出与特地进程相关联到的文件、目录、库等等信息,如要显示与指定PI进程相关联的文件可使用-p选项:

    [root@yanqx ~]# lsof -p 9554
    COMMAND  PID USER   FD   TYPE   DEVICE    SIZE      NODE NAME
    sshd    9554 root  cwd    DIR     0,29    4096 187957388 /
    sshd    9554 root  rtd    DIR     0,29    4096 187957388 /
    sshd    9554 root  txt    REG     0,29  409560 187988270 /usr/sbin/sshd
    sshd    9554 root  mem    REG     0,29  132304 187973604 /lib64/ld-2.5.so
    sshd    9554 root  mem    REG     0,29   44472 187973606 /lib64/libpam.so.0.81.5
    sshd    9554 root  mem    REG     0,29   20424 187973386 /lib64/libdl-2.5.so
    sshd    9554 root  mem    REG     0,29 1750504 190255826 /usr/local/ssl/lib/libcrypto.so.0.9.8
    sshd    9554 root  mem    REG     0,29   15280 187973406 /lib64/libutil-2.5.so
    sshd    9554 root  mem    REG     0,29   83344 187959026 /usr/lib64/libz.so.1.2.3
    sshd    9554 root  mem    REG     0,29  111480 187973548 /lib64/libnsl-2.5.so
    sshd    9554 root  mem    REG     0,29   45728 187973602 /lib64/libcrypt-2.5.so
    sshd    9554 root  mem    REG     0,29   89800 187972006 /lib64/libresolv-2.5.so
    sshd    9554 root  mem    REG     0,29 1698672 187973486 /lib64/libc-2.5.so
    sshd    9554 root  mem    REG     0,29   84400 187973582 /lib64/libaudit.so.0.0.0
    sshd    9554 root  mem    REG     0,29   53880 187973574 /lib64/libnss_files-2.5.so
    sshd    9554 root    0u   CHR      1,3          12392555 /dev/null
    sshd    9554 root    1u   CHR      1,3          12392555 /dev/null
    sshd    9554 root    2u   CHR      1,3          12392555 /dev/null
    sshd    9554 root    3u  IPv6 12393000               TCP *:ssh (LISTEN)
    sshd    9554 root    4u  IPv4 12393002               TCP *:ssh (LISTEN)

        或也可以通过使用-c参数选项,来通过进程名称来指定的进程查看:

    [root@yanqx ~]# lsof -c init
    COMMAND PID USER   FD   TYPE DEVICE    SIZE      NODE NAME
    init      1 root  cwd    DIR   0,29    4096 187957388 /
    init      1 root  rtd    DIR   0,29    4096 187957388 /
    init      1 root  txt    REG   0,29   40968 187988546 /sbin/init
    init      1 root  mem    REG   0,29          96280139 /sbin/init (path inode=187988546)
    init      1 root  mem    REG   0,29  132304 187973604 /lib64/ld-2.5.so
    init      1 root  mem    REG   0,29  245264 187973608 /lib64/libsepol.so.1
    init      1 root  mem    REG   0,29   92960 187973474 /lib64/libselinux.so.1
    init      1 root  mem    REG   0,29 1698672 187973486 /lib64/libc-2.5.so
    init      1 root  mem    REG   0,29   20424 187973386 /lib64/libdl-2.5.so
    init      1 root   10u  FIFO   0,48          12392766 /dev/initctl

        关于lsof这工具还可以通过相当多的不同参数进行实现不同功能 这里就不一一列举。。可自己查看工具命令帮助文档了解 嗯
        对此两工具就简单介绍分享推荐到此////

标签: ,

删除Ubuntu的NetworkManager网络管理并手动设置静态IP

三 19th, 2009
2,024 views | 没有评论

        Ubuntu操作系统安装完成后网络管理默认是用DHCP自动获取IP地址的,之前在自己住宿就一两台机使用反正也没啥差就懒得改为静态固定IP,但是最近在公司使用vm虚拟机下安装了台Ubuntu8.10玩一玩,有时基本使用SecureCRT软件SSH远程登陆使用,但是由于公司使用都是内部动态 IP地址,而且机器较多所以导致IP地址经常性更换,有点烦所以自己决定试图修改成使用静态IP,可是那个可恶的NetworkManager总是在重启后又变成默认的DHCP自动获取IP。。。故决定删除彻底NetworkManager

    sudo apt-get –purge remove network-manager
    sudo apt-get –purge remove network-manager-gnome

        手动设置静态IP地址:编辑修改网络接口配置文件/etc/network/interfaces

    sudo vim /etc/network/interfaces
    auto lo
    iface lo inet loopback
    auto eth0
    iface eth0 inet static
            address 172.17.4.170
            netmask 255.255.255.0
            network  172.17.4.1
            gateway 172.17.4.3

        修改设置DNS服务器配置文件/etc/resolv.conf

    sudo vim /etc/resolv.conf
    nameserver 202.101.103.54
    nameserver 202.101.103.55
    nameserver 172.17.4.1

        最后重启网络服务

sudo /etc/init.d/networking restart

        这样上网基本就没什么问题啦/// 如果你之前没有删除NetworkManager网络管理的话,重启后/etc/resolv.conf里面的配置文件又会被修改为

# Generated by NetworkManager

        导致又是使用DHCP动态分配IP地址的。