业务流程

一、基本业务

1.用户注册

​ 隐患及解决方式:

1.用户重复注册;利用token机制

2.不校验用户注册数据(比如,注册时,admin与admin空格;数据库会认为同一个用户);后台用过滤函数即可。

3.频繁的用户批量注册:

​ 1.对相同用户信息注册频率限制:

​ 单IP注册频率限制、表单加验证码、需要姓名加身份证认证

​ 2.采用二次身份校验技术

​ 需要验证用户邮箱、手机绑定验证

但是,所有的限制手段的目的均为提升批量注册的难度,但无法从根本上阻止恶意用户,因为系统无法识别用户注册的真实意图。因此从防御视角来看,应尽可能提高恶意注册的难度,使批量注册的成本高于从网站获取到的利益,这样为解决此问题的唯一思路。

2.用户登录

1.用户名常见、密码太简单(弱口令爆破):

​ 1)限制用户名/密码验证速率。

​ 2)连续三次输入错误后采用验证码等手段进行限制。

​ 3)提升用户密码强度及位数(较难执行,用户不遵守的情况较多)。

​ 4)定期修改密码(在实践中基本上无法做到,仅适用于极个别企业内网系统)。

2.sql注入的万能密码

​ 关键是构造使用or的数据库查询语句,并添加恒等式,实现数据库对用户输入的密码查询结果永远正确。

比如输入

' or '1'='1

后台处理为:

select * from user where name= 'admin' and passwd= '' or '1'='1';

然后还有用户名注释嘞,admin' -- s 密码随意

后台处理为:select * from user where name= 'admin' – s and …

预防的话:

限制用户名及密码可使用字符,不符合要求的直接过滤,避免单引号、数据库注释符等SQL注入行为发生。

在PHP+MySQL环境下,推荐采用mysql_real_escape_string()函数实现对输入数据的过滤,mysql_real_escape_string()函数转义SQL语句中使用的字符串中的特殊字符。

开启此功能后,下列字符受影响:\x00、\n、\r、\、’、”、\x1a。

用户Session校验

3.密码找回

验证步骤可跳过

平行越权

弱token

Session覆盖

4.用户越权

​ RBAC模型(基于角色的访问控制)

主要是Web系统能定制各类业务,能快速实现各类不同应用场景及功能。不好总结。

二、标准业务

一台物理服务器、一个互联网接口、一个固定IP及域名就可以构建一个基本的Web网站。

也可利用目前各类云服务器(如阿里云)并配合相应的CMS,就可在半小时内快速建站,网站的速度及美观性均可满足用户基本需求,而且提供完备的站点管理措施及内容更新方式。

系统管理者面临的问题

1.如何建设

开发人员根据Web功能需求开发网站。这样涉及的问题会非常多,目前也有非常成熟的开发体系及防护方案。

中小站长由于时间及技术实力的问题,通常会选择各类CMS架设网站。

2.如何管理

远程登录服务器,在操作系统层面实现本地对文件的修改。

远程登录数据库,直接管理数据库等。

建设管理后台,实现对网站的应用层面管理等。

3.用户怎么用

网站交互功能越多,面临的安全风险就越高,这点毋庸置疑。一个静态网站无论如何也不会出现各类安全漏洞。这里不包含伪静态网站,伪静态网站只是将参数转换为路径(如?a=1转换为/a/1),这在攻击者看来没有什么难度。

攻击者使用的范围并不会比正常用户广。因此,攻击者会从各项应用点进行考虑并分析,寻找安全隐患,如Web传参点等。

CMS及其特征

CMS(Content Management System)即内容管理系统,通常指一套完整的网站模板或建站系统。

CMS已设计好一套标准的使用环境,包括完整的前后台逻辑等。用户只需要将CMS部署在Web服务器上,添加相应内容、修改站点样式即可完成网站的制作。国内目前大量的论坛及个人博客均采用CMS进行架设。

Discuz 、Ecshop、phpcms等

从安全角度考虑,CMS的安全问题主要有:

1)整个网站系统依托于CMS,如果CMS突然爆发高危漏洞,则站点会受到影响。

2)CMS默认会在根目录中有setup页面。很多网站管理员在CMS安装完毕后如不及时删除它,则很容易留下被覆盖攻击的隐患。

CMS比较适合运维人员少或无专职运维人员的个人及中小型企业者

利用CMS建站时,建议采取以下手段,可有效保障Web系统的安全。

1)及时升级CMS系统版本,保证版本最新。

2)尽可能少利用CMS的扩展插件,尤其是WordPress。

3)上线完毕后删除默认安装脚本。

4)务必修改默认密码、CMS标识等。

CMS系统无论怎么修改,其中一些特征依然可被攻击者轻易识别,之后再利用目标CMS版本对应的漏洞进行攻击尝试。利用搜索引擎进行搜索即可发现大量此类内容,点击进入之后可看到相关的标识:以discuz!为例,它常用于各类站点首页的标识。不过,部分管理员会对其进行修改。

powered by Discuz! X3.2 技术支持。。。。

还有,源代码也可能有这种信息。

当然了,目标站点的CMS及对应版本号这些基本信息,可能低危漏洞都算不上,但对于攻击者来说,是个考虑是继续渗透还是放弃的信息。

常见远程管理方式

Windows远程登录

RDP协议(Remote Desktop Protocol,远程桌面协议)可使Windows系统之间进行互相的远程访问,默认利用3389端口。

它虽不存在什么漏洞,但攻击者可能利用其他方式对现有系统提权后并创建账号,再直接利用新创建账号远程登录即可。

Linux SSH22端口

(Windows使用putty进行SSH登录)

命令嘛,工具也可以。

ssh ...@…

攻击者攻击Web应用的主要原因是想获得Web应用所在服务器的权限,进而作为跳板攻击内网。当攻击者获得webshell后,接下来就会进行提权并开放远程管理权限。因此,远程管理很多时候方便运维人员开展,但在一定程度上也为攻击者提供了远程连接的通道。

Web应用管理后台

注意不要在前台放后台管理链接,

否则

在前台可利用SQL注入、XSS盲打等手段获取后台用户的登录凭证

也避免被路径扫描到后台路径,Web应用管理后台起得复杂一点。

针对后台管理业务的安全,重点在于登录用户管理阶段,如管理员登录、密码找回,越权等。

数据库开放远程管理

在正常网站运行时,数据库只需与Web服务器进行通信。如果站(网站)库(数据库)为一体部署,那么在本地通信即可。但在真实环境中,MySQL默认数据库远程管理处于关闭状态,考虑到维护的方便,部分系统均会考虑打开远程数据库接口。管理员可利用各类数据库管理工具实现远程登录。

启用远程管理的安全隐患包括:

1)如果存在弱密码,则直接可能被攻击者登录并获取数据。

2)可远程爆破MySQL密码。

3)如果攻击者已获得webshell,则会在页面中寻找数据库连接密码,再进行远程连接。

以上任何一种隐患可能均会对数据库安全造成极大影响,因此建议关闭数据对外连接端口。如需远程维护,考虑利用VPN等先连接到内网再进行访问。

在线编辑器

如果有上传文件功能,那就存在文件上传漏洞。

以fckeditor为例,可将编辑器结合在网页中,实现功能强大的上传点。

目前此类问题主要存在于大量已运行多年的Web应用系统中,新建系统基本不存在此类问题。

可能的漏洞点:

是否有搜索框能否注入或XSS

是否有留言框能否XSS打cookie

有登录尝试登录框是否有sql注入或XSS

是否有验证码
验证码能否被识别
验证码能否被无视

注册是否有sql漏洞

是否能注册管理权限的账号

验证手机的情况下
是否能无限轰炸
是否能任意更改
验证码是否有时间验证
验证码是否相同
是否能爆破验证码

登录是否能越权
未授权访问
SQL注册测试

个人信息是否有存储型XSS

个人信息能否CSRF
有验证机制能否绕过

个人信息是否存在越权
改变uid等敏感参数检测是否越权
平行越权
垂直越权

头像上传是否能getshell
直接getshell
解析漏洞
上传漏洞
是否能上传txt

修改密码能否CSRF
有验证机制能否绕过

找回密码是手机号码验证
是否能无限轰炸
是否能任意更改
验证码是否有时间验证
验证码是否相同
是否能爆破验证码

是否有购买商品功能
任意修改支付金额
任意修改商品数量
收货地址存储型XSS

配置检查

API接口安全

逻辑错误漏洞

参考

CSDN思源湖的鱼

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2023-2025 是羽泪云诶
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信