.本文为公测版,一旦发现有任何错误内容,会立即进行修复,请持续关注本站。
2.本文在正式版之前会不断的邀请各路黑客大手进行评价测试,欢迎提出异议。
本文仅针对网站部分,本文会对typecho,wordpress进行测试
如果你root端口为22,并且密码是123456,就没必要往下看了。
网站环境为linux tengine/nginx mariaDB,同理,apache也有相关设置,百度实验下即可。
**本文会阐述以下部分
1.基础权限控制
2.执行目录限制
3.PHP的限制
4.webshell写入与执行
5.权限细分,必须写入的目录**
1.基础权限控制
什么叫基础权限?在LNMP架构下,nginx+php-fpm架构需要什么权限?
这里我们先来看一下默认权限
默认我们的nginx运行用户是nginx,而php-fpm的默认用户是apache,默认用户安全吗?
看一下webshell
uid=48(apache) gid=48(apache) groups=48(apache)
很明显,我们的默认用户是apache
我们使用shell新建一个目录,很明显,我们是无法建立文件夹的
mkdir: cannot create directory `1': Permission denied
在网上很多教程会告诉我们,吧nginx和phpfpm改成同样的用户,我们看看会发生什么。
[root@gov 1]# sudo -u nginx mkdir 1
[root@gov 1]# ll
total 4
drwxr-xr-x 2 nginx nginx 4096 Aug 19 18:08 1
没错,这是一项愚蠢的决定!
所以默认权限是安全的吗?并不是,你忘了上传目录,我们看下上传目录的权限
drwxrwx--- 3 nginx apache 4096 Aug 14 17:09 uploads
没错,上传目录的存在就是放大权限,如果php没有写入权限,那么他就无法上传图片。
假设,我们手里有一个0day,现在我要用它来getshell
我会选择uploads目录
-rw-r--r-- 1 apache apache 0 Aug 19 18:11 1.php
完美写入,接着你的站就会被玩坏了,写入shell后我们可以插件数据库链接密码,进网站后台,脱裤,挂黑链等等等等
网站里有几个目录是默认可以写入的?在你的网站目录下执行ls -l
通常plugins themes uploads
这三个目录都是可以写入的。
你还有其他目录可以写入?赶紧修改权限吧!
加入我们的网站在/var/www/html/root
那么下面的命令是极好的,对于必须要有上传权限的uploads目录,我们下面再说
chown -R nginx.apache html
find /var/www/html/root -type d -exec chmod 750 {} \;
find /var/www/html/root -not -type d -exec chmod 640 {} \;
chmod 770 /var/www/html/root/uploads -R
如果你有某些插件也需要写入权限,给他权限,并认真看下面的内容。
2.执行目录限制
我们的apache权限有多大呢?相同的网站拥有相同的权限。
默认情况下,我们的apache权限能浏览大部分目录。最要命的问题在于,他可以跨站执行,从你的网站一直接执行到网站二。
我们需要给他一个限制,每个虚拟主机一个单独的限制,没错就是open_basedir。
这里我们需要特别的技巧,每个虚拟机都要限制
这样虚拟主机将只允许在网站目录和tmp目录执行,而不能穿越到其他目录
在乌云有一篇讨论绕过open_basedir
的文章,所以open_basedir
只能让你更安全而不是彻底安全,所以你还需要往下看。
server {
location ~ .*\.php(\/.*)*$ {
#include pathinfo.conf;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/";
3.PHP的限制
我们想一个另类解决办法,如何限制webshell的执行?
在php.ini里,我们可以选择关闭某些不安全的函数
但是由于php这玩意分之多又复杂,这里只能整理出一部分不安全的函数。
直接添加到php.ini最后面即可
disable_functions=exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,dl,popen,pcntl_exec,socket_accept,socket_bind,socket_clear_error,socket_close,socket_connect,socket_create_listen,socket_create_pair,socket_create,socket_get_option,socket_getpeername,socket_getsockname,socket_last_error,socket_listen,socket_read,socket_recv,socket_recvfrom,socket_select,socket_send,socket_sendto,socket_set_block,socket_set_nonblock,socket_set_option,socket_shutdown,socket_strerror,socket_write,stream_socket_server,disk_total_space,disk_free_space,diskfreespace,getrusage,get_current_user,getmyuid,getmypid,dl,leak,listen,chgrp,link,symlink,dlopen,proc_nice,proc_get_stats,proc_terminate,shell_exec,sh2_exec,posix_getpwuid,posix_getgrgid,posix_kill,ini_restore,mkfifo,dbmopen,dbase_open,filepro,filepro_rowcount,posix_mkfifo,putenv,sleep,chmod,chown,chroot,ini_set,phpinfo,proc_get_status,error_log,syslog,readlink,putenv
在看webshell,我们会发现里面空空如也了,并不能执行命令了。
4.webshell写入与执行
现在我们的网站已经很安全了,他能否更加安全?
现在,我们就要说说我们必须要有执行权限的upload目录了,nginx同样提供了解决方案
location ~ /(usr/uploads)/.*\.(php|php5)?$
{
deny all;
}
这个时候我们打开uploads中的php文件会提示403
403 Forbidden
You don't have permission to access the URL on this server. Sorry for the inconvenience.
我们的效果得到验证,即使写入也不能执行。
5.必须要写入权限但是又包含php文件的目录。
例如我的用的邮件通知插件目录内有cache和和log目录,是必须有写入权限的
这里千万不要犯懒,直接给CommentToMail
写入
location ~ /(usr/uploads|usr/plugins/CommentToMail/cache|usr/plugins/CommentToMail/log)/.*\.(php|php5)?$
{
deny all;
}
既可以实现写入文件,又可以让php无法执行。
总结,上面的所有配置:
用户与PHP运行权限分离
nginx:apache
执行目录限制
open_basedir
PHP函数限制
php.ini
特殊目录关闭PHP解析
deny all
权限细分
xx|xx|xx
欢迎拍砖,同时 起司靶场v2 上线,完全脱离安全锁之类的软件,欢迎测试。
起司靶场v2
用 Access 可以很好地管理各种数据, 但是在实际应用中, 许多数据并不是使用 Access 来收集的, 此时, 为了使用 Access 管理其他软件或程序收集到的数据, 可以将收集到的数据导入 Access 中。
在 Access 数据库中, 可以将其他的 Access 数据库、 ODBC 数据库、 Excel 表格、 HTML 文档和文本文件等外部数据导入当前数据库中, 下面将分别介绍。
如果要将其他 Access 数据库导入数据库对象, 既可以使用复制和粘贴的方法, 也可以使用【导入向导】来完成。 使用【导入向导】 可以在不打开 Access 的情况下完成, 其具体操作步骤如下。
Step 01 打开"销售管理数据 .accdb",单击【外部数据】 选项卡【导入并链接】 组中的【新数据源】 下拉按钮,在弹出的下拉菜单中选择【从数据库】选项,在弹出的级联菜单中选择【Access】 选项, 如图所示。
Step 02 打开【获取外部数据 -Access数据库】 对话框, 单击【文件名】文本框右侧的【浏览】 按钮, 如图所示。
Step 03 打开【打开】 对话框,选择要导入的数据库,单击【打开】按钮,如图所示。
Step 04 返回【获取外部数据 -Access数据库】 对话框,选中【将表、 查询、 窗体、 报表、 宏和模块导入当前数据库】单选按钮,单击【确定】按钮, 如图所示。
技术看板
选中【将表、 查询、 窗体、 报表、宏和模块导入当前数据库】单选按钮,表示导入后的对象与源对象是独立的,没有任何关系。 如果选中【通过创建链接表来链接到数据源】 单选按钮,会在当前数据库中创建一个链接表,链接到源数据库对象上, 此链接表的改动是双向的, 无论修改源对象还是当前数据库对象, 都会同步反映给双方。 在 Access 中, 利用该链接功能,可以实现文件的共享。
Step 05 打开【导入对象】 对话框, 在6 个选项卡中分别显示了源数据库中的各个对象, 选择【表】 选项卡中的【年度销售记录】 选项,单击【确定】 按钮如图所示。
Step 06 返回【获取外部数据 -Access数据库】 对话框,选中【保存导入步骤】 复选框; 在【另存为】文本框中输入名称,单击【保存导入】 按钮, 如图所示。
Step 07 操作完成后, 即可导入选择的数据库, 如图所示。
对于一般用户而言, 对 Excel 的熟悉程序远远高于 Access, 尤其是在操作表格数据时, Excel 的界面更加直观, 操作也更为简洁。 所以, 用户可以先在 Excel 中编辑好数据, 然后将其导入 Access 中, 从而方便快捷地制作表对象, 具体操作步骤如下。
Step 01 打开"销售管理数据 .accdb",单击【外部数据】 选项卡【导入并链接】 组中的【新数据源】下拉按钮,在弹出的下拉菜单中选择【从文件】选项,在弹出的级联菜单中选择【Excel】 选项, 如图所示。
Step 02 打开【获取外部数据 -Excel 电子表格】 对话框, 单击【文件名】文本框右侧的【浏览】 按钮, 如图所示。
Step 03 打开【打开】 对话框,选择要导入的 Excel电子表格,单击【打开】 按钮, 如图所示。
Step 04 返回【获取外部数据 -Excel 电子表格】 对话框,选中【将源数据导入当前数据库的新表中】 单选按钮,单击【确定】按钮,如图所示。
Step 05 打开【导入数据表向导】对话框,选中【显示工作表】 单选按钮,单击【下一步】 按钮,如图所示。
Step 06 在【导入数据表向导】 对话框中,选中【第一行包含列标题】复选框,单击【下一步】 按钮,如图所示。
Step 07 在【导入数据表向导】 对话框中的【字段选项】 栏分别指定每个字段的名称、 数据类型、 索引等信息, 如指定【销售编号】字段的【索引】为【有(无重复)】,单击【下一步】 按钮,如图所示。
Step 08 在【导入数据表向导】 对话框中,选中【我自己选择主键】 单选按钮,在右侧的下拉列表框中选择【销售编号】 选项,单击【下一步】 按钮, 如图所示。
Step 09 在【导入数据表向导】 对话框中, 在【导入到表】 文本框中指定表名称, 如保持默认名称, 单击【完成】 按钮, 如图所示。
Step 10 返回【获取外部数据 -Excel 电子表格】 对话框,选中【保存导入步骤】 复选框,在【另存为】文本框中输入名称,单击【保存导入】 按钮, 如图所示。
Step 11 操作完成后, 即可导入选择的Excel 电子表格, 并在数据库中创建一个新表, 如图所示。
在工作中, 需要使用文本文件导出的数据很多, 如考勤文件、 企业到企业(B2B) 的数据传输等。 如果有需要, 也可以将这些文本文件导入Access数据库中, 具体操作步骤如下。
Step 01 打开"销售管理数据 .accdb",单击【外部数据】 选项卡【导入并链接】 组中的【新数据源】 下拉按钮,在弹出的下拉菜单中选择【从文件】选项,在弹出的级联菜单中选择【文本文件】 选项, 如图所示。
Step 02 打开【获取外部数据 - 文本文件】 对话框, 单击【文件名】 文本框右侧的【浏览】按钮, 如图所示。
Step 03 打开【打开】 对话框,选择要导入的文本文件,单击【打开】按钮, 如图所示。
Step 04 返回【获取外部数据 - 文本文件】 对话框,选中【将源数据导入当前数据库的新表中】单选按钮,单击【确定】 按钮, 如图所示。
Step 05 打开【导入文本向导】 对话框,选中【带分隔符】 单选按钮,单击【下一步】 按钮, 如图所示。
技能拓展—导入固定宽度的文本文件
如果文本文件是使用固定宽度分隔开, 可以选中【固定宽度】单选按钮,系统会根据宽度创建分隔线。 用户也可以对分隔线执行添加、移动等操作,如图所示。
Step 06 在【导入文本向导】 对话框中的【请选择字段分隔符】 栏选中【逗号】 单选按钮, 选中【第一行包含字段名称】复选框,单击【下一步】 按钮, 如图所示。
Step 07 在【导入文本向导】 对话框中的【字段选项】 栏设置各字段的名称和数据类型, 单击【下一步】按钮, 如图所示。
Step 08 在【导入文本向导】 对话框中,选中【让 Access 添加主键】 单选按钮,单击【下一步】 按钮, 如图所示。
Step 09 在【导入文本向导】 对话框中的【导入到表】 文本框中输入文件名,单击【完成】 按钮, 如图所示。
Step 10 返回【获取外部数据 - 文本文件】 对话框, 直接单击【关闭】 按钮,如图所示。
Step 11 操作完成后, 即可导入选择的文本文件, 并在数据库中创建一个新表, 如图所示。
上面蓝色字体↑“懒人简笔画”关注我, 就可以实现简笔画秒会, [懒人大学]知识秒会的梦想了哦
Access | ||
1.快捷键 | 2.创建数据库 | 3.创建查询 |
4.SQL查询 | 5.常用SQL | 6.函数调用 |
7.导出到Excel | 8.vba操作Access | 9.在线参考 |
10.练习题 | 11.几十本电子书 |
4000个简笔画秒会教程汇总 | ||
1.表情 | 2.眼睛 | 3.鼻子 |
4.嘴 | 5.发 | 6.手 |
7.身 | 8.衣服 | 9.火柴人 |
10.Q版人物 | 11.猫 | 12.狗 |
13.鼠 | 14.家具 | 15.鳄鱼 |
16.大象 | 17.交通 | 18.植物 |
19.树 | 20.水果 | 21.食物 |
22.春节 | 23.圣诞素材1 | 24.圣诞树 |
25.风景 | 26.车 | 27.乐器 |
28.房子 | 29.京剧 | 30.3D |
31.七龙珠全家福 | 32.蜡笔小新全家福 | 33.机器猫全家福 |
34.巴巴爸爸全家福 | 35.小猪佩奇全家福 | 36.旅行青蛙全家福 |
37.挤娃娃 |
懒人大学-愿天下知识都能秒会 | ||
1.简笔画 | 2.公开课 | 3.水彩 |
4.书法 | 5.数位板 | 6.手帐 |
7.素描 | 8.速写 | 9.花体 |
10.唱歌 | 11.尤克里里 | 12.吉他 |
13.物理 | 14.化学 | 15.少儿舞蹈 |
16.C语言 | 17.爬虫 | 18.AI音箱 |
19.PPT | 20.Excel | 21.Linux |
22.ih5 | 23.小程序 | 24.javascript |
25.公众号 | 26.声律启蒙 | 27.资治通鉴 |
28.幽默故事 | 29.解剖学 | 30.常见病 |
31.国际音标 | 32.英语教程汇总 | 33.法语 |
34.韩语教程汇总 | 35.日语教程汇总 | 36.德语教程汇总 |
37.马来语教程汇总 | 38.葡萄牙语教程汇总 | 39.藏语教程汇总 |
40.意大利语教程汇总 | 41.俄语教程汇总 | 42.阿拉伯语秒会教程 |
43.泰语教程汇总 | 44.西班牙语秒会教程汇总 | 45.AI教程汇总 |
46.PS秒会教程汇总 | 47.摄影教程汇总 | 48.经典片头欣赏 |
49.烹饪教程汇总 | 50.蒸菜教程汇总 | 51.会计教程汇总 |
52.插花教程汇总 |
懒人大学vip QQ群433569528
*请认真填写需求信息,我们会在24小时内与您取得联系。