很多多论坛网站,都具备有上传附件的的功能,一般都会开放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
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操作系统安装完成后网络管理默认是用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地址的。