当前位置: 首页 > news >正文

常见漏洞描述及修复建议

1.SQL注入漏洞

漏洞描述
Web程序中对于用户提交的参数未做过滤直接拼接到SQL语句中执行,导致参数中的特殊字符破坏了SQL语句原有逻辑,攻击者可以利用该漏洞执行任意SQL语句,如查询数据、下载数据、写入webshell、执行系统命令以及绕过登录限制等。
修复建议
代码层最佳防御sql漏洞方案:使用预编译sql语句查询和绑定变量。

  1. 使用预编译语句,使用PDO需要注意不要将变量直接拼接到PDO语句中。所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。
  2. 对进入数据库的特殊字符(’”<>&*;等)进行转义处理,或编码转换。
  3. 确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。
  4. 数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。
  5. 网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。
  6. 严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。
  7. 避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。
  8. 过滤危险字符,例如:采用正则表达式匹配union、sleep、and、select、load_file等关键字,如果匹配到则终止运行。

2.XSS

漏洞描述
1、Web程序代码中对用户提交的参数未做过滤或过滤不严,导致参数中的特殊字符破坏了HTML页面的原有逻辑,攻击者可以利用该漏洞执行恶意HTML/JS代码、构造蠕虫、篡改页面实施钓鱼攻击、以及诱导用户再次登录,然后获取其登录凭证等。
2、XSS攻击对Web服务器本身虽无直接危害,但是它借助网站进行传播,对网站用户进行攻击,窃取网站用户账号身份信息等,从而也会对网站产生较严重的威胁。

XSS攻击可导致以下危害:
1、钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者通过注入钓鱼JavaScript脚本以监控目标网站的表单输入,甚至攻击者基于DHTML技术发起更高级的钓鱼攻击。
2、网站挂马:跨站时,攻击者利用Iframe标签嵌入隐藏的恶意网站,将被攻击者定向到恶意网站上、或弹出恶意网站窗口等方式,进行挂马。
3、身份盗用:Cookie是用户对于特定网站的身份验证标志,XSS攻击可以盗取用户的cookie,从而利用该cookie盗取用户对该网站的操作权限。
4、盗取网站用户信息:当窃取到用户cookie从而获取到用户身份时,攻击者可以盗取到用户对网站的操作权限,从而查看用户隐私信息。
5、垃圾信息发送:在社交网站社区中,利用XSS漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。
6、劫持用户Web行为:一些高级的XSS攻击甚至可以劫持用户的Web行为,从而监视用户的浏览历史、发送与接收的数据等等。
7、XSS蠕虫:借助XSS蠕虫病毒还可以用来打广告、刷流量、挂马、恶作剧、破坏数据、实施DDoS攻击等。
修复建议
【】xss漏洞本质上是一种html注入,也就是将html代码注入到网页中。那么其防御的根本就是在将用户提交的代码显示到页面上时做好一系列的过滤与转义
(1)过滤输入的数据,对例如:“ ‘ ”,“ “ ”,” < “,” > “,” on* “,script、iframe等危险字符进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。
(2)不仅验证数据的类型,还要验证其格式、长度、范围和内容。
(3)不仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。
(4)对输出到页面的数据进行相应的编码转换,如HTML实体编码、JS编码等。对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行检查。

3.XXE

漏洞详情
参考:https://www.freebuf.com/company-information/165769.html

修复建议
1、检查所使用的底层XML解析库,默认禁止外部实体的解析。
2、若使用第三方应用代码需要及时升级补丁。
3、对用户提交的XML数据进行过滤。

4.CSRF

漏洞描述
CSRF是跨站请求伪造,不攻击网站服务器,而是冒充用户在站内的正常操作。通常由于服务端没有对请求头做严格过滤引起的。CSRF会造成密码重置,用户伪造等问题,可能引发严重后果。绝大多数网站是通过 cookie 等方式辨识用户身份,再予以授权的。所以要伪造用户的正常操作,最好的方法是通过 XSS 或链接欺骗等途径,让用户在本机(即拥有身份 cookie 的浏览器端)发起用户所不知道的请求。CSRF攻击会令用户在不知情的情况下攻击自己已经登录的系统。
修复建议
1、验证请求的Referer是否来自本网站,但可被绕过。
2、在请求中加入不可伪造的token,并在服务端验证token是否一致或正确,不正确则丢弃拒绝服务。

5.SSRF

漏洞描述
SSRF(Server-Side Request Forgery,服务器端请求伪造):通俗的来说就是我们可以伪造服务器端发起的请求,从而获取客户端所不能得到的数据。SSRF漏洞形成的原因主要是服务器端所提供的接口中包含了所要请求的内容的URL参数,并且未对客户端所传输过来的URL参数进行过滤。这个漏洞造成的危害有:
1、可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息。
2、攻击运行在内网或本地的应用程序(比如溢出)。
3、对内网Web应用进行指纹识别,通过访问默认文件实现。
4、攻击内外网的Web应用,主要是使用Get参数就可以实现的攻击(比如Struts2漏洞利用,SQL注入等)。
5、利用File协议读取本地文件。
修复建议
1、禁用不需要的协议,只允许HTTP和HTTPS请求,可以防止类似于file://, gopher://, ftp:// 等引起的问题。
2、白名单的方式限制访问的目标地址,禁止对内网发起请求。
3、过滤或屏蔽请求返回的详细信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
4、验证请求的文件格式。
5、禁止跳转。
6、限制请求的端口为http常用的端口,比如 80、443、8080、8000等。
7、统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。

6.任意命令/代码执行

漏洞描述
命令或代码执行漏洞是指代码未对用户可控参数做过滤,导致直接带入执行命令和代码,通过漏洞执行恶意构造的语句,执行任意命令或代码。攻击者可在服务器上执行任意命令,读写文件操作等,危害巨大。
修复建议
1、严格过滤用户输入的数据,禁止执行非预期系统命令。
2、减少或不使用代码或命令执行函数
3、客户端提交的变量在放入函数前进行检测
4、减少或不使用危险函数

7.任意文件上传

漏洞描述
文件上传漏洞通常由于代码中对文件上传功能所上传的文件过滤不严或web服务器相关解析漏洞未修复而造成的,如果文件上传功能代码没有严格限制和验证用户上传的文件后缀、类型等,攻击者可通过文件上传点上传任意文件,包括网站后门文件(webshell)控制整个网站。
修复建议
1、对上传文件类型进行验证,除在前端验证外在后端依然要做验证,后端可以进行扩展名检测,重命名文件,MIME类型检测以及限制上传文件的大小等限制来防御,或是将上传的文件其他文件存储服务器中。
2、严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关上传文件目录的执行权限,防止木马执行。
3、对上传文件格式进行严格校验,防止上传恶意脚本文件;
4、严格限制上传的文件路径。
5、文件扩展名服务端白名单校验。
6、文件内容服务端校验。
7、上传文件重命名。
8、隐藏上传文件路径。

任意文件下载

“任意⽂件下载”漏洞是⼀种常⻅的安全漏洞,攻击者可以通过构造特定的请求,从⽽下载服务器上的任意⽂件,包括敏感⽂件和配置⽂件等。

修复

  1. 建议对下载文件的路径进⾏限制:在下载文件之前,需要对文件路径进⾏限制,只允许下载特定的文件,⽽不是所有的文件。可以通过⽩名单的方式,来限制下载的文件路径;
  2. 建议检查用户权限:在下载文件之前,需要检查用户的权限,只允许有权限的用户进⾏下载。可以通过用户认证和授权等方式来确保用户权限的合法性;
  3. 建议对文件进⾏加密:对敏感文件进⾏加密处理,即使攻击者成功下载了文件,但是由于⽆法解密文件,所以⽆法获得敏感信息;
  4. 建议加强日志监控:加强日志监控,及时记录并分析下载文件的请求,发现异常请求,及时采取相应的防御措施,确保服务器安全。

8.目录穿越/目录遍历

漏洞描述
文件下载或获取文件显示内容页面由于未对传入的文件名进行过滤,利用路径回溯符…/跳出程序本身的限制目录,来下载或显示任意文件。
修复建议
对传入的文件名参数进行过滤,并且判断是否是允许获取的文件类型,过滤回溯符…/。

9.文件包含

漏洞描述
本地文件包含是指程序在处理包含文件的时候没有严格控制。利用这个漏洞,攻击者可以先把上传的文件、网站日志文件等作为代码执行或直接显示出来,或者包含远程服务器上的恶意文件,进而获取到服务器权限。
修复建议
1、严格检查变量是否已经初始化。
2、对所有输入提交可能包含的文件地址,包括服务器本地文件及远程文件,进行严格的检查,参数中不允许出现./和…/等目录跳转符。
3、严格检查文件包含函数中的参数是否外界可控。

10.弱口令

漏洞描述
由于网站用户帐号存在弱口令,导致攻击者通过弱口令可轻松登录到网站中,从而进行下一步的攻击,如上传webshell,获取敏感数据。
另外攻击者利用弱口令登录网站管理后台,可执行任意管理员的操作。
修复建议
1、强制用户首次登录时修改默认口令,或是使用用户自定义初始密码的策略;
2、完善密码策略,信息安全最佳实践的密码策略为8位(包括)以上字符,包含数字、大小写字母、特殊字符中的至少3种。
3、增加人机验证机制,限制ip访问次数。

11.暴力破解

漏洞描述
由于没有对登录页面进行相关的人机验证机制,如无验证码、有验证码但可重复利用以及无登录错误次数限制等,导致攻击者可通过暴力破解获取用户登录账号和密码。
修复建议
1、如果用户登录次数超过设置的阈值,则锁定帐号(有恶意登录锁定帐号的风险)
2、如果某个IP登录次数超过设置的阈值,则锁定IP
3、增加人机验证机制
4、验证码必须在服务器端进行校验,客户端的一切校验都是不安全的。

12.越权访问

漏洞描述
由于没有对用户访问角色的权限进行严格的检查及限制,导致当前账号可对其他账号进行相关操作,如查看、修改等。对低权限对高权限账户的操作为纵向越权,相同权限账户之间的操作成为横向越权也称水平越权。
修复建议
1、对用户访问角色的权限进行严格的检查及限制。
2、在一些操作时可以使用session对用户的身份进行判断和控制。

13.未授权访问

漏洞描述
未授权访问漏洞是指攻击者可以在未经授权的情况下访问应⽤程序、系统或⽹络中的敏感信息或功能。这种类型的漏洞通常是由于安全配置不当或实施过程中的⼈为错误造成的。
攻击者利⽤未授权访问漏洞可以执⾏各种恶意活动,例如窃取用户数据、修改配置⽂件、引⼊恶意软件等。这可能会导致数据泄露、服务停⽌、违反合规要求等后果。

修复建议

  1. 建议实施访问控制:限制⽤户访问权限,确保只有经过授权的⽤户才能访问受保护的资源。可以使⽤⻆⾊/权限管理系统、访问控制列表(ACL)等实现访问控制;
  2. 建议强化身份验证:使⽤强密码策略、多因素认证等⽅式来增强身份验证的安全性。例如,可以要求⽤户在登录时输⼊⽤户名和密码,并通过短信或应⽤程序⽣成的令牌进⾏身份验证;
  3. 建议审计和监视⽤户活动:记录⽤户对系统资源的访问和操作,以便及时发现异常⾏为。可以使⽤安全信息和事件管理系统(SIEM)等⼯具来实现审计和监视;
  4. 建议更新和加固软件:定期更新和修补软件,以消除已知漏洞和缺陷。同时,使⽤安全编程技术和代码审查来减少新漏洞的出现;
  5. 建议进⾏漏洞扫描:定期进⾏漏洞扫描和渗透测试,及时发现未授权访问漏洞并采取措施进⾏修复;
  6. 建议增强⽹络安全防御:使⽤⼊侵检测和防⽕墙等⼯具来保护⽹络安全,减少攻击者进⼊系统的机会。同时,制定应急预案和安全策略,提⾼组织的⽹络安全意识。

14.列目录

漏洞描述
由于web服务器配置不当,开启了目录浏览,攻击者可获得服务器上的文件目录结构,获取敏感文件。
修复建议
1、通过修改配置文件,禁止中间件(如IIS、apache、tomcat)的文件目录索引功能
2、设置目录访问权限

15.PHP反序列化

漏洞描述
php反序列化漏洞也叫PHP对象注入,形成原因为程序未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导致代码执行、文件操作、执行数据库操作等不可控后果。这一类攻击在java、python等面向对象语言中均存在。
可参考:https://www.freebuf.com/articles/web/167721.html
修复建议
1、对传入的对象进行严格的过滤检查
2、在反序列化过程执行的文件读写、命令或代码执行函数中是否有用户可控的参数。

16.http slow拒绝服务攻击

漏洞描述
按照设计,HTTP协议要求服务器在处理之前完全接收请求。 如果HTTP请求没有完成,或者传输速率非常低,服务器会保持其资源忙于等待其余数据。如果服务器保持太多的资源请求和处理,这将造成一个拒绝服务。严重者一台主机即可让web运行缓慢甚至是崩溃。
修复建议
对于 Apache 可以做以下优化(其他服务器原理相同):
1、设置合适的 timeout 时间(Apache 已默认启用了 reqtimeout 模块),规定了 Header 发送的时间以及频率和 Body 发送的时间以及频率
2、增大 MaxClients(MaxRequestWorkers):增加最大的连接数。根据官方文档,两个参数是一回事,版本不同,MaxRequestWorkers was called MaxClients before version 2.3.13.Theold name is still supported.
3、默认安装的 Apache 存在 Slow Attack 的威胁,原因就是虽然设置的 timeoute,但是最大连接数不够,如果攻击的请求频率足够大,仍然会占满Apache的所有连接

17.CRLF注入

漏洞描述
CRLF 是“回车 +换行”(\r\n)的简称。在 HTTP 协议中,HTTPHeader 与 HTTP Body 是用两个 CRLF 符号进行分隔的,浏览器根据这两个 CRLF 符号来获取 HTTP 内容并显示。因此,一旦攻击者能够控制 HTTP 消息头中的字符,注入一些恶意的换行,就能注入一些会话 Cookie 或者 HTML 代码。
修复建议
1、过滤 \r 、\n 及其各种编码的换行符,避免输入的数据污染到其他 HTTP 消息头。

18.LDAP注入

漏洞描述
由于Web 应用程序没有对用户发送的数据进行适当过滤和检查,攻击者可修改LDAP 语句的结构,并且以数据库服务器、Web 服务器等的权限执行任意命令,许可权可能会允许查询、修改或除去 LDAP 树状构造内任何数据。
修复建议
对用户的输入内容进行严格的过滤。

19.URL 跳转

漏洞描述
有的Web 应用程序中使用URL参数中的地址作为跳转链接的功能 ,攻击者可实施钓鱼、恶意网站跳转等攻击。
修复建议
1、在进行页面跳转前校验传入的URL是否为可信域名。
2、白名单规定跳转链接

20.明文传输

漏洞描述
用户登录过程中使用明文传输用户登录信息,若用户遭受中间人攻击时,攻击者可直接获取该用户登录账户,从而进行进一步渗透。
修复建议
1、用户登录信息使用加密传输,如密码在传输前使用安全的算法加密后传输,可采用的算法包括:不可逆hash算法加盐(4位及以上随机数,由服务器端产生);安全对称加密算法,如AES(128、192、256位),且必须保证客户端密钥安全,不可被破解或读出;非对称加密算法,如RSA(不低于1024位)、SM2等。
2、使用https来保证传输的安全。

21.网页木马

漏洞描述
经渗透测试发现目标站点存在webshell,攻击者可直接爆破口令使用木马,非常低成本的进行恶意操作。
修复建议
1、确认并删除木马文件,并进行本地文件漏洞扫描排查是否还存在有其他木马。
2、发现并及时修复已存在的漏洞。
3、通过查看日志、服务器杀毒等安全排查,确保服务器未被留下后门

22.备份文件泄露

漏洞描述
备份文件泄露主要是由于开发人员或运维管理人员的疏忽所导致。如未及时删除调试页面、未关闭程序调试功能、未屏蔽程序错误信息、备份文件未删除、数据库备份文件未删除、未屏蔽敏感数据信息等多个方面所导致的不同严重程度的信息泄露。攻击者可通过所掌握的信息进一步分析攻击目标,从而有效发起下一步的有效攻击。
修复建议
1、不在网站目录下存放网站备份文件或敏感信息的文件。
2、如需存放该类文件,请将文件名命名为难以猜解的无规则字符串。

23.敏感信息泄露

漏洞描述
敏感信息泄露主要是由于开发人员或运维管理人员的疏忽所导致。如未及时删除调试页面、未关闭程序调试功能、未屏蔽程序错误信息、备份文件未删除、数据库备份文件未删除、未屏蔽敏感数据信息等多个方面所导致的不同严重程度的信息泄露。攻击者可通过所掌握的信息进一步分析攻击目标,从而有效发起下一步的有效攻击。
修复建议

  1. 建议如果是探针或测试页面等无用的程序建议删除,或者修改成难以猜解的名字;
  2. 建议不影响业务或功能的情况下删除或禁止访问泄露敏感信息页面;
  3. 建议在服务器端对相关敏感信息进行模糊化处理;
  4. 建议对服务器端返回的数据进行严格的检查,满足查询数据与页面显示数据一致。

24.短信/邮件轰炸

漏洞描述
由于没有对短信或者邮件发送次数进行限制,导致可无限次发送短信或邮件给用户,从而造成短信轰炸,进而可能被大量用户投诉,从而影响公司声誉。
修复建议
在服务器限制发送短信或邮件的频率,如同一账号1分钟只能发送1次短信或邮件,一天只能发送3次。

25.phpinfo信息泄漏

漏洞描述
Web站点的某些测试页面可能会使用到PHP的phpinfo()函数,会输出服务器的关键信息,造成服务器信息泄露,为攻击提供有利的信息。
修复建议
1、删除phpinfo 函数。
2、若文件无用可直接删除。

26.IIS短文件名泄露漏洞

漏洞描述
Internet Information Services(IIS,互联网信息服务)是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。 Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件。危害:攻击者可以利用“~”字符猜解或遍历服务器中的文件名,或对IIS服务器中的.Net Framework进行拒绝服务攻击。
攻击者可通过该漏洞尝试获取网站服务器文件的文件名,达到获取更多信息来入侵服务器的目的。
修复建议
修改Windows配置,关闭短文件名功能。
1.关闭NTFS 8.3文件格式的支持。该功能默认是开启的,对于大多数用户来说无需开启。
2.如果是虚拟主机空间用户,可采用以下修复方案:
1)修改注册列表HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation的值为1(此修改只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除)。
2)如果你的web环境不需要asp.net的支持你可以进入Internet 信息服务(IIS)管理器 — Web 服务扩展 - ASP.NET 选择禁止此功能。
3)升级net framework 至4.0以上版本。
3.将web文件夹的内容拷贝到另一个位置,比如D:\www到D:\www.back,然后删除原文件夹D:\www,再重命名D:\www.back到D:\www。如果不重新复制,已经存在的短文件名则是不会消失的。

27.应用程序错误信息泄露

漏洞描述
攻击者可通过特殊的攻击向量,使web服务器出现500、403等相关错误,导致信息泄漏如绝对路径、webserver版本、源代码、sql语句等敏感信息,恶意攻击者很有可能利用这些信息实施进一步的攻击。
修复建议
1、自定义错误页面或使用统一的错误页面提示。

28.Apache Tomcat默认文件

漏洞描述
Apache Tomcat默认样例文件没有删除或限制访问,可能存在cookie、session伪造,进行后台登录操作
修复建议
1、删除样例文件
2、限制文件访问权限

29.Crossdomain.xml 配置不当

漏洞描述
网站根目录下的 crossdomain.xml 文件指明了远程Flash 是否可以加载当前网站的资源(图片、网页内容、Flash等)。如果配置不当,可能导致遭受跨站请求伪造(CSRF)攻击。
修复建议
对于不需要从外部加载资源的网站,在 crossdomain.xml 文件中更改allow-access-from的domain属性为域名白名单。

30.目标服务器启用了不安全 HTTP 方法

漏洞描述
目标服务器启用了不安全的传输方法,如PUT、TRACE、DELETE、MOVE等,这些方法表示可能在服务器上使用了 WebDAV,由于dav方法允许客户端操纵服务器上的文件,如上传、修改、删除相关文件等危险操作,如果没有合理配置dav,有可能允许未授权的用户对其进行利用,修改服务器上的文件。
修复建议
1、关闭不安全的传输方法,只开启POST、GET方法。
2、如果服务器不使用 WebDAV 可直接禁用,或为允许webdav的目录配置严格的访问权限,如认证方法,认证需要的用户名,密码。

31.weblogic SSRF服务器请求伪造

漏洞描述
目标存在weblogic SSRF服务器请求伪造漏洞。WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)。Weblogic中间件默认带有“UDDI 目录浏览器”且为未授权访问,通过该应用,可进行无回显的SSRF请求。攻击者可利用该漏洞对企业内网进行大规模扫描,了解内网结构,并可能结合内网漏洞直接获取服务器权限。
修复建议
1、若不影响业务则可删除uddiexplorer文件夹
2、限制uddiexplorer应用只能内网访问

32.Apache Struts2 远程代码执行漏洞(S2-019)

漏洞描述
Apache Struts2的“Dynamic MethodInvocation”机制是默认开启的,仅提醒用户如果可能的情况下关闭此机制,如果未关闭此机制将导致远程代码执行漏洞,远程攻击者可利用此漏洞在受影响应用上下文中执行任意代码。
修复建议
1、目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载。
2、或者手工设置struts.xml文件<constantname="struts.enable.DynamicMethodInvocation"value=“false”/>

33.Apache Struts2 远程代码执行漏洞(S2-037)

漏洞描述
Apache Struts2在使用REST插件时,攻击者可以绕过动态方法执行的限制,调用恶意表达式执行远程代码。
修复建议
建议用户到官方获取最新补丁或者最新版本程序。

34.Apache Struts2 DevMode 远程代码执行漏洞

漏洞描述
为了便于开发人员调试程序,Struts2提供了一个devMode模式,可以方便查看程序错误以及日志等信息。当Struts2中的devMode模式设置为true时,存在严重远程代码执行漏洞。如果WebService 启动权限为最高权限时,可远程执行任意命令,包括关机、建立新用户、以及删除服务器上所有文件等等。
修复建议
建议用户到官方获取最新补丁或者最新版本程序。
或者将struts.properties中的devMode设置为false,或是在struts.xml中添加如下代码: <constant name="struts.devMode"value=“false”/>。

35.Apache Struts2 远程代码执行漏洞(S2-045)

漏洞描述
Apache Struts2的Jakarta Multipartparser插件存在远程代码执行漏洞,漏洞编号为CVE-2017-5638。攻击者可以在使用该插件上传文件时,修改HTTP请求头中的Content-Type值来触发该漏洞,导致远程执行代码。
修复建议
检测方式查看web目录下/WEB-INF/lib/目录下的struts-core.x.x.jar ,如果这个版本在Struts2.3.5 到 Struts2.3.31 以及 Struts2.5 到 Struts2.5.10之间则存在漏洞。
1、建议用户到官方获取最新补丁或者最新版本程序。
2、更新至Strusts2.3.32或者Strusts2.5.10.1,或使用第三方的防护设备进行防护。
3、临时解决方案:删除commons-fileupload-x.x.x.jar文件(会造成上传功能不可用)。
4、修改WEB-INF/classes目录下的配置在WEB-INF/classes目录下的struts.xml中的struts 标签下添加<constantname=”struts.custom.i18n.resources”value=”global”/>;在WEB-INF/classes/目录下添加global.properties,文件内容如下:struts.messages.upload.error.InvalidContentTypeException=1

36.Apache Struts2 远程代码执行漏洞(S2-033)

漏洞描述
Apache Struts2在开启动态方法调用(DynamicMethod Invocation)的情况下,攻击者使用REST插件调用恶意表达式可以远程执行代码。
修复建议
1、用户到官方获取最新补丁或者最新版本程序。
2、或者在允许的情况下禁用动态方法调用(Dynamic Method Invocation),修改Struts2的配置文件struts.xml,将struts.enable.DynamicMethodInvocation设置为“false”。

37.redis相关漏洞修复

漏洞描述
redis默认没有口令可能会造成未授权访问造成信息泄露,若redis为高权限账户运行,可能导致服务器权限丢失等。
修复建议
1.禁用一些高危命令
  常见如:flushdb,flushall,config,keys 等
2.以低权限运行 Redis 服务
3.为 Redis 添加密码验证
4.禁止外网访问 Redis
5.保证 authorized_keys 文件的安全

38.任意用户注册漏洞(身份认证缺失)

漏洞描述
由于应用在最初设计时由于未考虑全⾯,在登录、注册、找回密码、支付模块中程序的判断逻辑及程序的处理流程上存在缺陷,导致攻击者可以绕过程序的处理流程,从而达到特定的目的,如暴力破解密码,任意用户注册、任意用户登录、任意密码重置及各种支付漏洞。
中高危
漏洞修复
对新注册用户的绑定手机号进行短信身份认证,短信验证码请不要仅使用短数字,最好是以字母加数字进⾏组合,并且验证码需要限定过期时间和验证错误次数,防止短信验证码被暴力破解。

  1. 建议验证用户身份后再返回token信息;
  2. 建议对用户登录接⼝进行多重身份验证,如token令牌,短信验证码,多个参数结合认证等方式;
  3. 严格校验客户端提交的用户登录请求,对应请求的用户身份和当前登录的用户身份进行服务端与客户端双向校验,判断是否有权登录用户。

39 会话标识未失效漏洞

简介: Session 是应用系统对浏览器客户端身份认证的属性标识,在用户注销或关闭浏览器时,系统应将客户端Session 认证属性标识清空

危害: 如果未能清空 Session 认证会话,该认证会话将持续有效,此时攻击者获得该Session 认证会话会导致用户权限被盗取

漏洞挖掘:
1、登录状态点击注销,浏览器后退,若返回数据说明存在漏洞;若跳转登录页面说明无漏洞
2、登录状态点击注销,重复发送带有之前sessionID的数据包,若有数据返回说明存在漏洞
3、登录状态,长时间未操作(根据业务需求)仍然可进行访问和操作

修复建议:
1、在用户注销或退出应用系统时,服务器应及时销毁Session认证会话信息并清空客户端浏览器Session属性标识
2、对每个生成的Session认证会话配置生命周期

APP安全漏洞

1反编译

0x01 漏洞描述
APK文件是安卓工程打包的最终形式,将apk安装到手机或者模拟器上就可以使用APP。反编译apk则是将该安卓工程的源码、资源文件等内容破解出来进行分析。

0x02 漏洞危害
攻击者通过反编译可获取应用安卓客户端应用的源代码,攻击者可根据源代码获取对应接口信息,加密算法、密钥,以及一些硬编码在代码中的其他敏感信息,从而进行进一步攻击。

0x03 修复意见
使用市面上安卓加固的厂商对安卓APP进行加固,比如360、梆梆等。

2安装包签名

0x01 漏洞描述
Android系统要求安装的应用必须用数字证书进行签名后才能安装,并且签名证书的私钥由应用开发者保存。签名证书的生成也由开发者自己生成。在应用安装时会校验包名(package name)和签名,如果系统中已经存在了一个相同的包名和签名的应用,将会用新安装的应用替换旧的;如果包名相同但是签名不同,则会安装失败。

应用签名完后在应用的META-INF目录下会有三个文件: CERT.RSA、CERT.SF和MANIFEST.MF。

MANIFEST.MF中保存了所有其他文件的SHA1摘要并base64编码后的值。

CERT.SF文件是对MANIFEST.MF文件中的每项中的每行加上“\r\n”后,再次SHA1摘要并base64编码后的值(这是为了防止通过篡改文件和其在MANIFEST.MF中对应的SHA1摘要值来篡改APK,要对MANIFEST的内容再进行一次数字摘要)。

CERT.RSA文件:包含了签名证书的公钥信息和发布机构信息。

0x02 漏洞危害
签名信息中包含的组织信息,将便于用户识别安装包的真伪。

0x03 修复意见
在应用程序发布时使用企业签名对安装包进行签名。

3应用完整性

0x01 漏洞描述
客户端若未进行应用完整性校验,经二次打包后的Android APP,破解后植入恶意代码重新打包。不管从性能、用户体验、外观它都跟正规APP一模一样但是背后它确悄悄运行着可怕的程序,它会在不知不觉中浪费手机电量、流量,恶意扣费、偷窥隐私等等行为。

0x02 漏洞危害
插入自己广告或者删除原来广告;
恶意代码,恶意扣费、木马等;
修改原来支付逻辑;
0x03 修复意见
在应用发布时使用360、梆梆等安全厂商进行安全加固。
对签名文件中classes.dex哈希值的校验
可参考下列文章:

android APK安全性校验

Android防重签名和二次打包

Android 应用防止被二次打包指南

4任意数据备份

0x01 漏洞描述
Android属性allowBackup安全风险源于adb backup允许任何一个能够打开USB 调试开关的人,从Android手机中复制应用数据到外设,一旦应用数据被备份之后,所有应用数据都可被用户读取,adb restore允许用户指定一个恢复的数据来源(即备份的应用数据)来恢复应用程序数据的创建。

因此,当一个应用数据被备份之后,用户即可在其他Android手机或模拟器上安装同一个应用,以及通过恢复该备份的应用数据到该设备上,在该设备上打开该应用即可恢复到被备份的应用程序的状态。

0x02 漏洞危害
当allowBackup标志为true时,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复。

尤其是通讯录应用,一旦应用程序支持备份和恢复功能,攻击者即可通过adb backup和adb restore进行恢复新安装的同一个应用来查看聊天记录等信息;对于支付金融类应用,攻击者可通过此来进行恶意支付、盗取存款等;

0x03 修复意见
设置android:allowBackup值为false。

5程序可被调试

0x01 漏洞描述
当在 AndroidManifest.xml文件中设置 android:debuggable="true"时,应用程序可以以调试模式启动,并被任意调试器附加调试。

0x02 漏洞危害
客户端若设置了可被动态调试时,增加了apk被破解、分析的风险。

目前动态调试器的功能都很强大,如果debuggable属性为true,则可轻易被调试,通常用于重要代码逻辑分析、破解付费功能等。

0x03 修复意见
在应用发布时,不要将android:debuggable的值改为ture。

6Root环境检测

0x01 漏洞描述
Android安全架构是基于Linux多用户机制的访问控制。在Linux操作系统中,root的权限是最高的,也被称为超级权限的拥有者。在系统中,每个文件、目录和进程,都归属于某一个用户,没有用户许可其它普通用户是无法操作的,但对root除外。

root用户的特权性还表现在:

对文件或目录进行读取、修改或删除;
对可执行程序的执行、终止;
对硬件设备的添加、创建和移除等;
对文件和目录进行属主和权限进行修改,以适合系统管理的需要;
root是超越任何用户和用户组的,基于用户ID的权限机制的沙盒是无法隔离的。
0x02 漏洞危害
攻击者可在root的终端上对应用程序进行动态调试、内存访问篡改、Hook应用程序与服务端交互流量等。

0x03 修复意见
3.1 查看系统是否为测试版
可以查看发布的系统版本,是test-keys(测试版),还是release-keys(发布版)。

可是在实际情况下,也有某些厂家的正式发布版本也是test-keys

3.2 检查是否存在Superuser.apk
Superuser.apk是一个被广泛使用的用来root安卓设备的软件,所以可以检查这个app是否存在。

3.3 检查su命令
su是Linux下切换用户的命令,在使用时不带参数,就是切换到超级用户。通常我们获取root权限,就是使用su命令来实现的,所以可以检查这个命令是否存在。

3.4 执行busybox
BusyBox集成压缩了 Linux 的许多工具和命令,所以若设备root了,很可能Busybox也被安装上了。

3.5 访问/data目录,查看读写权限
在Android系统中,有些目录是普通用户不能访问的,例如 /data、/system、/etc等。

可以以/data为例,来进行读写访问。先写入一个文件,然后读出,查看内容是否匹配,若匹配,才认为系统已经root了。

具体代码可参考:

Android root检测方法小结

7模拟器环境检测

0x01 漏洞描述
安卓模拟器是一种可以运行在电脑上的虚拟设备,通过它可以实现应用的跨平台操作,让移动端APP无需任何改动即可在PC上执行。

模拟器作为一种虚拟机,配合改机工具,能够以较低成本实现设备多开,因此而备受黑灰产的青睐。

0x02 漏洞危害
可利用PC端其他辅助工具完成对移动端应用的支持,如通过按键精灵完成自动挂机等操作。

通过模拟器多开功能,零成本体验同时多部手机、多个账户开小黑屋,实现刷单、薅羊毛。

通过模拟器虚拟定位伪造真实地理位置。
。。。
0x03 修复意见
在客户端代码中增加模拟器检测代码。

模拟器的检测秉持一句话:抓取特征值与真机比较。

可参考下列文章:

Android模拟器检测体系梳理

检测Android虚拟机的方法和代码实现

8代理环境检测

0x01 漏洞描述
APP客户端通过宿主机与服务器进行流量交互,攻击者可通过设置Wi-Fi、网卡代理进行中间人劫持,抓取通信过程中的流量包,进行进一步分析利用。

0x02 漏洞危害
攻击者可利用Charles、fiddler、BurpSuite等抓包工具,抓包分析网络流量及api接口信息,从而进一步分析相关接口、参数等安全问题。

0x03 修复意见
检查是不是用了Http代理,如果是,客户端不发送网络请求;
通过Okhttp设置默认代理;
代码可参考:

Android检测代理

9SQLite敏感信息

0x01 漏洞描述
ndroid中有些时候会将一些隐私数据存放在sqlite数据库中,在root过的手机中通过RE就能够轻松的打开并查看数据库所有内容。

0x02 漏洞危害
SQLite不支持加密,应用中重要的数据、账号密码等容易被泄露。

0x03 修复意见
3.1 加密数据库内容
在存储数据时加密内容,在查询时进行解密。但是这种方式不能彻底加密,数据库的表结构等信息还是能被查看到,另外检索数据也是一个问题。

3.2 加密数据库文件
借助SQLCipher。SQLCipher是一个在SQLite基础之上进行扩展的开源数据库,它主要是在SQLite的基础之上增加了数据加密功能。

加密性能高、开销小,只要5-15%的开销用于加密
完全做到数据库100%加密
采用良好的加密方式(CBC加密模式)
使用方便,做到应用级别加密
采用OpenSSL加密库提供的算法

10LogCat敏感信息

0x01 漏洞描述
在 Android 中有一种名为 LogCat 的日志机制,不仅系统日志信息,还有应用日志信息也会输出到LogCat。

开发人员通常会通过打印出的日志信息来分析、定位问题。如果对外发布版本的时候,忘记关闭相关的日志打印。LogCat 中的日志信息可以从同一设备中的其他应用中读出,敏感信息不应输出到LogCat,因此向Logcat输出敏感信息的应用,被认为具有信息泄露的漏洞。

0x02 漏洞危害
攻击者通过调试可获取到logcat输出的敏感信息,造成敏感信息泄漏

0x03 修复意见
在发行版应用中,最好不要输出任何日志。

为了APP的错误采集,异常反馈,必要的日志如要被输出,需遵循安全编码规范将风险控制在最小范围内

具体代码及实现请参考:

Android Logcat Security

11硬编码敏感信息

0x01 漏洞描述
信息安全的基础在于密码学,而常用的密码学算法都是公开的,加密内容的保密依靠的是密钥的保密,密钥如果泄露,对于对称密码算法,根据用到的密钥算法和加密后的密文,很容易得到加密前的明文;对于非对称密码算法或者签名算法,根据密钥和要加密的明文,很容易获得计算出签名值,从而伪造签名。

若将加密密钥、数据库连接信息、后台信息等敏感信息硬编码在Java代码、文件中,将导致敏感信息泄漏,造成更大危害。

0x02 漏洞危害
硬编码敏感信息泄漏,造成的安全问题一般无法被轻易修正。例如:

在代码中泄露利用未指定账户的硬编码密码,这样远程攻击者获取到敏感信息,可以通过访问数据库获得管理控制权限;
本地用户可以通过读取配置文件中的硬编码用户名和密码来执行任意代码;

0x03 修复意见
使用市面上安卓加固的厂商对安卓APP进行加固,比如360、梆梆等。
使用DexGuard
对敏感信息进行伪装或者加密
敏感信息隐藏在原生函数库中(.so文件)
可参考下列文章:

Android安全开发之浅谈密钥硬编码

关于Android敏感信息

12通信加密

0x01 漏洞描述
在开发应用程序时,最好将网络请求限制为必要的网络请求。对于必要的,请确保它们是通过HTTPS而不是HTTP制作的。HTTPS是一种加密流量的协议,因此窃听者无法轻易拦截它。

多年来,HTTPS协议已被多次利用。虽然可以使用HTTPS的方式保证与服务端加密传输,但是我们仍然可以通过网卡、wifi代理、Hook等方式劫持未加密的流量数据包。

0x02 漏洞危害
攻击者通过嗅探、中间人劫持等手段可获取到客户端与服务端的交互数据包,从而能够进行数据流量分析与篡改,进行进一步的攻击。

0x03 修复意见
通信加密需采用两种手段同时加固:

3.1 使用HTTPS加密传输
3.2 对数据包进行加密,比如使用AES等

13键盘记录

0x01 漏洞描述
在应用软件在运行时,用户在设备上的一举一动都将被详细记录下来,更多的是在使用者毫无觉察的情况下将屏幕内容以图片的形式、按键内容以文本文档的形式保存在指定的文件夹或发送到指定的邮箱。键盘记录,包括物理按键与软键盘的监控,通常监控的事件有:点击,长按,滑动等,这些时间在Android上表现出来的都是一系列的KeyEvent。

0x02 漏洞危害
客户端应用程序若未针对键盘记录保护增加相关安全策略,攻击者可将记录下来的键盘记录发送到指定邮箱或post到指定网页。

0x03 修复意见
建议使用自定义随机的软键盘;

对输入框打码处理

14远程命令执行

“远程命令执⾏RCE(remote command execute)”漏洞是指攻击者通过操纵Web应⽤程序的输⼊参数,以执⾏恶意命令的⽅式,控制⽬标系统,进⾏恶意操作,包括获取敏感信息、删除⽂件等。

修复建议

  1. 建议添加输⼊验证:Web应⽤程序应该对输⼊参数进⾏有效性验证,避免攻击者通过提交恶意参数进⾏攻击;
  2. 建议限制命令执⾏:Web应⽤程序应该限制恶意命令的执⾏,例如禁⽌⽤户输⼊特定的命令或参数,避免攻击者通过执⾏命令进⾏攻击;
  3. 建议实现授权机制:Web应⽤程序应该实现授权机制,限制每个⽤户对命令执⾏的权限,确保只有具备相应权限的⽤户才能执⾏命令;
  4. 建议加强安全审计:Web应⽤程序应该加强对命令执⾏的安全审计,包括对执⾏的命令、命令来源等信息进⾏记录和分析,及时发现和修复漏洞。\

15安全配置错误

安全配置错误漏洞是指在对应用程序、框架、应用程序服务器、web服务器、数据库服务器等执行安全配置时,由于配置不当导致的漏洞。例如使用了有安全缺陷的版本、没有修改默认的帐户密码、给了某些帐户过高的权限、对敏感资源没有做访问控制等等,让攻击者有了可乘之机,可以不经授权就可以访问某些系统数据或使用系统功能。

修复

  1. 安装系统时做到最小化安装,不安装非必要的功能;使用一个应用程序时,删除示例代码和文档。
  2. 在配置权限时,应当使用“最小权限原则”并使用“默认拒绝”的策略。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SSv2数据集
  • QML基础学习
  • C++ 126类和对象_面像对像_继承
  • matlab 音频音量处理(音量大小按照dB调节)
  • 硬件工程师必须掌握的MOS管详细知识
  • QT stackwidget控件支持上下,左右手势滑动,触摸屏
  • Rust 面向对象编程
  • HTML静态网页成品作业(HTML+CSS)——花主题介绍网页设计制作(1个页面)
  • 解密键盘输入:探索设备控制器的奥秘
  • 基于STM32开发的智能家居照明控制系统
  • 港湾周评|IPO底稿的“萝卜章”与鸭脖大王被立案调查
  • unbuffer禁用输出缓存,实现实时打印解决日志乱序
  • 谷歌浏览器字体模糊不清怎么办
  • SQL高级编程:掌握自定义函数和过程的艺术
  • 牛客面经学习笔记(三)
  • (三)从jvm层面了解线程的启动和停止
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 2017年终总结、随想
  • gcc介绍及安装
  • leetcode讲解--894. All Possible Full Binary Trees
  • spark本地环境的搭建到运行第一个spark程序
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Xmanager 远程桌面 CentOS 7
  • 爱情 北京女病人
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 经典排序算法及其 Java 实现
  • 区块链将重新定义世界
  • 入门级的git使用指北
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 通过几道题目学习二叉搜索树
  • 微信小程序填坑清单
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • (0)Nginx 功能特性
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (安卓)跳转应用市场APP详情页的方式
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (十八)Flink CEP 详解
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (一)为什么要选择C++
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .net core控制台应用程序初识
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET Framework与.NET Framework SDK有什么不同?
  • .Net Remoting常用部署结构
  • .net SqlSugarHelper
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .Net的DataSet直接与SQL2005交互
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka