尊敬的读者们,网络安全一直是一个备受关注和重视的领域。随着技术的不断进步,网络攻击者也在不断寻找各种漏洞和弱点来入侵我们的系统。在本文中,我们将揭示一些常见的漏洞类型,并提供一些建议来保护您的网络安全。
场景:Web 应用程序通常会根据用户提交的参数,进行数据库查询。在查询数据的过程中,攻击者可以构造特殊的SQL 语句发起SQL 注入攻击。 只要Web 应用有与数据库交互的地方,都有可能存在SQL 注入漏洞
原理:代码没有对用户的输入项进行一个验证和处理,就插入了查询语句,导致攻击者可以在查询语句中插入自己的SQL语句代码
SQL注入种类:
1.数据传递方式 GET ,POST,COOKIE 等
2.执行效果方式 盲注 报错 堆叠 宽字节
危害:导致数据库信息泄露,留后门,使用万能密码的登陆网站获取管理员帐密,读取文件,写入webshell等
防御:加waf ,验证用户输入项,对特殊字符进行过滤转义处理,对输入进行过滤 ,限制输入长度
避免采用拼接的方式构造SQL 语句,可以采用预编译等技术;
对进入SQL 语句的参数进行足够过滤。
部署安全设备比如WAF。
现行很多开发框架,基本上已经从技术上,解决SQL 注入问题
场景: 在特殊场景下,客户端向服务器发起更改状态的请求,容易产生CSRF 漏洞
原理:跨站请求伪造,说白了就是攻击者伪造一个网站引导受害者进去登陆网站,向被攻击的网站发起跨站请求利用受害者在网站上登陆后收集到的凭证绕过后台验证,冒充受害者身份对网站进行一些操作
如何实现:1.使用get请求,进入网站后通过设置的img的src属性自动发起请求,2.在攻击者的网站中,构造隐藏表单自动发起post请求
防御:目前防御CSRF攻击主要有三种策略:
验证HTTP referer字段;
在请求地址中添加token并验证;
在HTTP头中自定义属性并验证
场景: 服务器从用户侧获取URL 地址,访问该URL 地址 服务器替用户发送URL 请求。 攻击者在此场景下,利用这个功能,可以精心构造URL 请求,以服务器的身份或以服务器的角度发起攻击。 攻击的对象以内网资产为主要目标。
原理:服务端请求伪造,就是一种由于没有做合法验证 攻击者模拟服务器对其他服务器资源进行请求的安全漏洞,是由服务端发起的所以攻击目标是从外网无法访问的内部系统
验证:因为ssrf是服务器发送请求的安全漏洞 可以通过抓包分析发送请求是否使用服务器发送的 危害:可以对外网。服务器所在的内网,本地进行端口扫描,攻击内网,本地的应用,读取本地文件, 如何实现:对外网,服务器所在内网进行端口扫描,获取一些服务的信息;攻击内外网的web,http的get请求就可以实现;向内部主机的任何端口发送构造的payload
防御:禁止跳转;限制协议;内外网限制;url限制 过滤输入
限制协议,仅允许http 或https 协议;
限制IP,避免应用被用来获取内网数据,攻击内网;
限制端口,限制请求端口为常用端口。
过滤输出
过滤返回信息,只要不符合要求的,全部过滤;
统一错误信息,让攻击无法对内网信息进行判断。
原理:插入js语句 ,改变结果,操纵数据 用户输入的html语句直接输出,其中包括了不正确的方法验证,
验证:找到用户可以插入操控代码的位置,找到用户输入的代码在网页的什么地方
类型:
反射型:恶意的js脚本 用户发给网站请求中的一部分 随后网站将这部分返回给用户,脚本将在页面中被执 行
Dom型:网页本身的js是可以改变html的 存储型:攻击者将恶意的js脚本长期保存在服务端数据库里,用户一旦访问相关页面,脚本就会被执行,常 见于微博,搜索,社区等 反射型和dom型的区别:
反射型:服务器客户端发起请求,客户端解析代码之后返回之后,恶意代码就会被执行从而做出一些操作 dom型: 诱导游用户点击恶意的url 由客户端直接执行的恶意代码
危害:可以盗取用户的cookie,进行未授权操作,劫持用户行为,进一步进行内网渗透
防御:使用白名单策略进行检测和过滤,将html元素内容,属性意见url请求参数进行编码 给关键的Cookie设置HttpOnly属性
进行输入检查
输出检查 一般说来,除了富文本输出之外,在变量输出到HTML页面时,可以使用编码或者转义的方式来防御XSS攻击。
原理:XML外部实体注入漏洞,发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可以加载恶意的外部文件,造成文件读取,命令执行,内网端口扫描等危害
XML:用于标记电子文件使其具有结构性的标记语言,用来标记数据,定义数据类型 ;XML是传输数据而不是显示数据,XML标签没有预定义需要自定义,XML简化了数据分享,简化了数据变更。
防御:对用户提交的XML数据进行过滤 XXE一般在什么地方出现 任何可以上传XML文件的位置都有可能存在XXE漏洞,若没有对上传的XML文件进行过滤,可导致上传恶意文件。
场景: 在动态文件读取的地方,可以尝试修改文件路径的参数,尝试读取其他文件 攻击者可以利用任意文件读取漏洞,读取敏感文件,包括:日志文件,配置文件,网站源代码文件,系统文件等。
原理: 网站开启的文件读取功能,但是对文件读取没有做限制或限制不足,导致任意文件读取
危害:利用任意文件读取漏洞,读取敏感文件,包括:
数据库配置文件,如/metinfo_6.0.0/config/config_db.php。
Linux 系统账号文件,如/etc/passwd。
用户个人隐私信息。
日志文件,如/var/log/secure
防御:
使用白名单,让web 用户只能访问(读取),所需要的文件和路径。
不能有文件包含漏洞,目录遍历漏洞或其他漏洞。
限定文件访问范围
场景:Web 应用开放了文件上传功能,包括头像上传,附件上传等。用户可以利用文件上传功能向服务器上传文件。
原理:是由于程序员对用户文件上传部分的控制不足,处理缺陷,并未考虑文件格式后缀的合法性校验 从而导致用户可以越权向服务器上传文件,比如可以执行的恶意动态脚本(如jsp,asp,php等)
危害:可能导致用户信息泄露,可以使攻击者直接上传webshell(运行在web应用上的远程控制程序)到服务器,得到信息和权限,达到对数据库执行,服务器文件管理 命令执行等恶意操作
防御:将文件上传的目录设置为不可执行,判断文件类型,限制文件大小
绕过方法:黑白名单绕过,文件类型绕过,前端js绕过,大小写
利用:能成功上传木马,上传的木马能够被web解析执行 如一句话木马,还可以使用中国蚁剑等工具连接
原理:开发人员出于对代码灵活性的考虑,会将被包含的文件设置成变量,从而进行动态调用,就是因为这种灵活性的动态变量引入包含的文件时,对这个变量进行可控且服务端队友做合理的校验或者校验被绕过造成了漏洞
危害:服务器存在文件包含漏洞会导致防御失效,比如蚁剑,木马可以过安全狗、攻击者利用文件包含漏洞,可以:
读取文件
执行PHP 代码
直接获取网站后门
控制网站
控制服务器
防御:
设置文件路径,
设置白名单,
过滤危险字符,
设置文件目录(配置php.ini)
函数:php:
include()
include_once()
require()
require_once()
原理:因为代码是人写的难免会出现逻辑问题,随着思维逻辑产生的不足就产生了逻辑漏洞
分类:验证机制缺陷,权限管理缺陷,业务逻辑缺陷,登陆缺陷,支付逻辑缺陷
常见的:交易支付,密码修改,密码找回,越权查询
说出三种业务逻辑漏洞:密码找回漏洞存在密码暴力破解,跳过验证步骤
身份认证漏洞存在,会话固定攻击,cookie仿冒
验证码漏洞存在,验证码暴力破解,验证码通过js或者抓包改包的方法绕过
验证码业务流程缺陷
一般找回密码分为三个步骤:发验证码 --> 校验页面 --> 修改页面 如果我们在发验证码的时候,直接能去访问修改页面,那么这就是业务流程缺陷 如果传参加密了,他可能是:
①JS前端加密,我们就需要看它的代码来分析加密方式。
②后端加密,这时候我们就需要去找他加密的数据包,将它截住,然后把我们想要添加的数据加进去。
③之前数据包隐藏域的返回,④强行猜解,MD5、Base64、URL等加密方式,看它的1加密为了什么字符,2加密为了什么字符,一个一个猜。
常见的
支付漏洞。0 元购、负价格、四舍五入薅羊毛、条件竞争突破等
暴力破解。用户名暴力枚举、密码爆破、脱敏信息利用查询条件爆破等
验证码问题。验证码复用、验证码爆破、验证码可预测
认证绕过。前后端校验不一致、仅前端校验状态码
原理:是因为后台使用了不合理的权限校验规则导致的
分类:
水平越权,A,B两个同级别的用户,如果A越权操作B用户信息叫做水平越权
垂直越权,A用户级别高于B用户,如果B用户越权操作A用户的信息叫做垂直越权
常见的
Docker 未授权访问
Durid 未授权访问
Elasticsearch 未授权访问
JBoss 未授权访问
Redis 未授权访问
Weblogic 未授权访问
redis未授权访问漏洞未开启认证,导致可以直接连到数据库,然后在攻击机中生成ssh公钥和私钥,密码设置为空,然后将生成的公钥写入,再利用私钥连接 Redis默认情况下,端口是6379,默认配置无密码 造成未授权访问原因:
1.未开启登录验证,并且把IP绑定到0.0.0.0
2.未开启登录验证,没有设置绑定IP,protected-mode关闭 Redis 未授权访问如何利用
连接 redis
写入反弹 shell
配置 cron 目录和文件名
持久化保存
连接 webshell
必要时可以利用 shell 写入后门维持权限
原理:
PHP 中,传入代码执行或命令执行等危险函数的参数,客户端可控,同时针对该参数没有做过滤或过滤不足,导致代码执行或命令执行。通过远程访问方式传参,就叫做RCE。
反序列化漏洞引起的RCE。
系统漏洞引起RCE。
因为应用系统上从设计上要给用户指定一个远程命令的操作接口,比如防火墙,入侵检测设备的web管理界面上,因为该功能没有做严格的安全控制,导致攻击者可以通过接口来提交命令,后台会把用户输入的代码的一部分进行执行,就造成了远程代码执行漏洞
危害:继承当前用户权限:
GetShell,执行代码或命令。
读写文件。
反弹Shell。
控制网站。
控制系统。
系统命令执行函数
system()
passthru()
exec()
shell_exec()
popen()
proc_open()
pcntl_exec()
防御:
尽量不要使用eval 等危险函数,如果使用的话一定要进行严格的过滤。
preg_replace() 放弃使用e 修饰符。
在php.ini 配置文件中disable_functions 中禁用。