博文記錄
教程分享 2019-09-10 12:30:17 155 0

作为开发者,很多人往往忽略一些安全性问题,无论是业务逻辑,还是代码安全,又或者是服务器安全、数据库安全等等。

本文以攻击者的视角,逐步测试实现可利用的漏洞或者令我们忽视的问题,加固一些安全策略或者设置来让服务器提高一定的安全性。

 

以PHP项目为例,Nginx+MySQL的基础组件来展开相关工作 ,其他WEB端也可以参照。

 

注:测试时请备份线上环境,或者进行快照操作,避免某些马有残留无法清除。

 

本机测试机器为CentOS7,部署了基本的Nginx、PHP、MySQL、无特殊安全项配置等。

1.手工传马到项目中

手工传一个PHP马到项目根目录中,模拟被上传大马后的操作场景。

大马下载地址网上有很多,这里推荐几个,不保证没后门。测试需注意

 

通过vi写入木马到项目根目录中,并保存为webshell.php

由于是通过root用户直接写入的,导致马的权限非常大。

 

访问大马文件

正确显示如下,输入密码进行登录。

 

进入后的界面如下

左侧菜单为不同功能类、右边为具体的工作区。

 

点击上级目录、或者输入系统任何地址,可以直接进行读取。

可以跨站读写

 

/tmp可写

 

/etc/passwd可读

 

网卡配置信息可查看

 

系统命令执行

查看系统监听端口

端口监听情况

 

常用端口扫描

局域网端口扫描

 

查看系统进程

 

解决问题

总结一下,上面存在很多问题,比如跨站读写、系统文件可读、常用bash命令执行等。

下面我们逐步进行解决。

1.跨站/目录 读写

解决方案就是设置PHP的限制目录参数,可以通过Nginx参数配置,也可以通过php.ini配置,也可以通过站点下.user.ini文件进行配置。

这里演示使用nginx进行参数设置

fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root:/tmp/:/proc/";

其允许访问目录为站点目录,以及系统缓存目录(上传文件用到的),以及proc目录(PHP用到的一些系统指针相关操作)。

完整配置如下:

location ~ .*\.(php|php5)?$ {
	fastcgi_pass 127.0.0.1:9000;
	fastcgi_index index.php;
	fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
	fastcgi_param  SCRIPT_NAME $fastcgi_script_name;
	fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root:/tmp/:/proc/";
	include fastcgi_params;
}

 

2.禁用系统命令

禁用项目中用不到,又比较危险的函数,如shell_exec、exec、system、popen、passthru。

这里依然使用Nginx进行设置、如果站点较多也可在php.ini设置全局的限制。

限制常用的SHELL命令执行函数,避免通过shell获取系统信息,或者执行其他木马。

fastcgi_param PHP_ADMIN_VALUE "disable_functions=shell_exec,exec,system,popen,passthru,popen,proc_open,mail";

 

如果项目中没有进程管道之类的操作,没有socket相关操作,也可以使用如下参数,将其一并禁用。

fastcgi_param PHP_ADMIN_VALUE "disable_functions=system,exec,shell_exec,passthru,proc_open,proc_close, proc_get_status,checkdnsrr,getmxrr,getservbyname,getservbyport, syslog,popen,show_source,highlight_file,dl,socket_listen,socket_create,socket_bind,socket_accept, socket_connect, stream_socket_server, stream_socket_accept,stream_socket_client,ftp_connect, ftp_login,ftp_pasv,ftp_get,sys_getloadavg,disk_total_space, disk_free_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname,mail";

 

 

(吃饭去了,待补充)

anyokumsaqev

2019-12-01 11:52

http://mewkid.net/where-is-xena/ - Buy Amoxil Online <a href="http://mewkid.net/where-is-xena/">Buy Amoxicillin Online Without Prescription</a> cie.yymn.eller.tech.agm.xc http://mewkid.net/where-is-xena/

iozakadu

2019-12-01 12:18

http://mewkid.net/where-is-xena/ - Buy Amoxil Online <a href="http://mewkid.net/where-is-xena/">Amoxicillin Online</a> pxj.vqdj.eller.tech.kvj.ap http://mewkid.net/where-is-xena/

發表評論
StudioEIM - 冒险者讲习所
0:00