2022持续学习-安全测评-渗透测试

        之前参与了很多的项目安全测试,其中渗透测试尤为重要,总结如下内容供大家学习:

1 XSS跨站脚本漏洞。

       描述:系统程序没对用户提交的变量中的代码进行过滤或转换,在用户输入页面可插入javascript、active等恶意脚本,风险等级:高。

       危害:系统对用户输入过滤不足,通过植入的恶意脚本修改用户设置或获取用户权限、网页内容、会话等各项内容。

       建议:对用户输入参数进行过滤、校验;输出的参数进行html实体编码。

        1)在系统全局增加过滤器,对s<script|alert|%3cscript|script>|script%3e|alert|window|location|%3cinput|<input|%3cimg|<img|iframe|<iframe|%3ciframe|等js、vb参数进行输入校验。在输入变量处,对script、alert、src、onerror等js、vb参数进行输入校验。

2 SQL注入漏洞

       描述:系统的应用服务器端对SQL语句中使用的特殊字符“;”、“--”和“and”、“or”等未做过滤,并且允许其向数据库系统提交,风险等级:高。

       危害:攻击者通过在客户端输入界面中提交特殊构造的SQL查询语句,从而非法的执行数据库添加、删除、联合查询等功能,甚至是drop数据库表文件和入侵操作系统。攻击者利用SQL注入漏洞,可以获取数据库中的多种信息(例如:管理员后台密码),从而脱取数据库中内容(脱库)。在特别情况下还可以修改数据库内容或者插入内容到数据库,如果数据库权限分配存在问题,或者数据库本身存在缺陷,那么攻击者可以通过SQL注入漏洞直接获取webshell或者服务器系统权限。

       建议:过滤、校验或者预处理的方式要覆盖的系统内所有参数;过滤规则强大可以有效的防止注入。遇到典型的案例就是服务端直接通过客户端(页面)传递的参数,作为条件拼接到SQL的where条件中,例如非法的构造页面参数 input id=‘userId 内容 123 ; drop table user;

服务端接受userId参数,拼接SQL语句

private String getNameByUserId(String userId) {

    Connection conn = getConn();//获得连接

    String sql = "select name from user where id=" + userId;

    PreparedStatement pstmt =  conn.prepareStatement(sql);

    ResultSet rs=pstmt.executeUpdate();

    ......

       我们的user表就被drop了,当然我们使用框架或平台都会对输入的参数进行过滤,转换如上的代码可通过预编译sql的方式:

         String sql = "select name from user where id=?”;

         PreparedStatement pstmt =  conn.prepareStatement(sql);

         pstmt.setString(1, userId)

    **mybatis的映射语句时,尽量采用“#{xxx}”这样的格式(类似于预编译SQL)。若不得不使用“${xxx}”(变量替换,风险很高)这样的参数,要手工地做好过滤工作,来防止sql注入攻击。

3 明文传输漏洞

       描述:对系统用户口令等机密信息的保护不足,攻击者可以利用攻击工具,从网络上窃取合法用户的口令数据,从而登录系统执行非法操作。

       危害:攻击者可以利用监听工具在网络中窃取合法用户的口令数据,从而非法获取系统的访问权限。

       建议:对系统内关于密码传输的信息需要做加密处理;不要采用容易被破解的加密方法(如md5加密),不要采用编码方式(如base64编码、url编码等)。建议使用https传输数据。在使用加密传输过程中建议使用非对称加密、签名等组合方式。攻击者可以通过网络数据包截取到数据报文,但是无法有解密的私钥从而解决明文传输的漏洞。

4越权访问漏洞

       描述:不同权限账户之间的存在越权访问,风险等级:高。

       危害:攻击者通过访问非授权页面或请求,执行非授权操作。如:

1、没有日志查询功能的用户访问日志用户查询连接可查看日志信息。

2、没有在线用户查询功能的用户访问用户查询连接可查看在线用户。

3、使用业务操作员cookie可以查看超级管理员请求数据。

4、截取bingl用户密码功能数据包。bingl用户id244,将其修改为242可以修改id242的用户密码。

建议:对权限之间进行严格的合法性验证。

5明文存储

       描述:对系统用户口令等机密信息的存储保护不足,导致攻击者可以获取系统的访问权限;

       危害:攻击者可以获取系统的合法用户名和口令,执行非授权。

       建议:对系统内关于密码存储的信息需要做加密处理。(历史密码md5加密的比较多,虽然目前md5是不可逆的算法,但可以通过md5库反像撞库来破解。)采用国密算法SM3一种密码杂凑算法 用于替代MD5/SHA-1/SHA-2等国际算法);SM2是非对称加密算法 它是基于椭圆曲线密码的公钥密码算法标准,其秘钥长度256bit,包含数字签名、密钥交换和公钥加密,用于替换RSA/DH/ECDSA/ECDH等国际算法

       常用的加密算法我自己使用过的 MD5DES3DESRSA

6 敏感信息泄露漏洞

描述:系统暴露系统内部信息,如网站绝对路径、网页源代码、SQL语句、中间件版本和程序异常等信息。高

危害:数据库的敏感信息泄露(数据库表段等信息泄露),攻击者可能利用此缺陷对客户端或服务器发送特殊构造的数据,发出攻击,从而了解后台数据库表等信息,对系统安全构成威胁。通过系统暴露出的异常信息,便于入侵者了解系统框架及代码等,从而加大系统被侵入的风险。

建议:对用户输入的异常字符做过滤,防止网站绝对路径、网页源代码和SQL语句等信息输出。

屏蔽应用程序报错回显,防止恶意用户获得服务器的敏感信息,或对出错信息进行跳转,例如:跳转到自定义404500等页面。

敏感信息包括但不仅限于:

        1)网站绝对路径

        2SQL语句

        3)中间件版本

        4)程序异常等

7 后台泄露漏洞

       描述:后台地址过于简单地址泄露或者默认后台,为攻击者攻击系统提供便利。攻击者可以通过弱口令或默认用户密码等方式进入后台,对系统造成危害。

危害:未限制后台地址访问,攻击者可通过暴力破解等手段尝试登录该管理后台,可上传网马获取系统webshell后可对系统进一步进行攻击。

建议:修改后台地址连接,攻击者猜测和破解不到后台地址。不要通过修改端口的方式解决此类问题。(之前常见的就是登录weblogic的控制台)

8 会话重放攻击

       描述:不断恶意或欺诈性地重复一个有效的数据包,重放攻击。攻击者可以拦截并重复发该数据到服务端,服务器端未对用户提交的数据包重放进行有效限制。如:可以抓取HTTP包固定账号破解密码、固定密码破解账号和重放提交投票数据包。

       危害:攻击者可以拦截并重复发该数据到服务端,服务器端未对用户提交的数据包重放进行有效限制。

       建议:添加token验证、时间戳或者图片验证码。如:

token、时间戳和图片验证码在服务器后端刷新,数据包提交一次数据刷新一次;

对固定账号破解密码、固定密码破解账号会话重放都要进行限制;

对系统关键操作进行防护,如登录操作。

9 默认口令/弱口令

       描述:系统存在默认口令/弱口令。默认口令/弱口令包括:

        1)应用程序弱口令

        2)中间件程序弱口令等

       危害:默认口令/弱口令很容易被他人猜到或破解,所以如果你使用默认口令/弱口令,就像把家门钥匙放在家门口的垫子下面,是非常危险。

       建议:加强口令强度不使用弱口令,口令构成应使用数字字母大小写和特殊符号构成,八位以上;口令中不出现常用的单词,如:root123admin123qwer1234

口令不应该为连续的某个字符,如11111aaaaa;口令不应该为用数字或符号代替某些字母的单词,如p@ssw0rd;口令中不应包含本人、父母、子女和配偶的姓名和出生日期、纪念日期、登录名、E-mail地址等等与本人有关的信息,以及字典中的单词。

10 SSRF漏洞

       描述:SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。

       危害:应用程序参数可控,导致可以对内网的系统进行访问。

       建议:1.过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。

2.统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。

3.限制请求的端口为http常用的端口,比如,8044380808090

4.黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网。

5.禁用不需要的协议。仅仅允许httphttps请求。

6.weblogic补丁修复或卸载相关的包。

11 SSL3.0漏洞

       描述:SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer SecurityTLS)是为网络通信提供安全及数据完整性的一种安全协议。TLSSSL在传输层对网络连接进行加密。已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。SSL常会爆出一些漏洞,如:心脏滴血漏洞等。

危害:心脏出血漏洞,可以泄露服务器内存数据。

建议:升级OpenSSL版本

12 CSRF(跨站请求伪造)

       描述:跨站请求伪造(Cross-Site Request ForgeryCSRF)是一种使已登录用户在不知情的情况下执行某种动作的攻击。因为攻击者看不到伪造请求的响应结果,所以CSRF攻击主要用来执行动作,而非窃取用户数据。当受害者是一个普通用户时,CSRF可以实现在其不知情的情况下转移用户资金、发送邮件等操作;但是如果受害者是一个具有管理员权限的用户时CSRF则可能威胁到整个Web系统的安全。

       危害:程序重要操作url、表单数据均可被完整构造,并且未对用户请求来源进行检查,导致攻击者可以使用用户的身份对程序进行操作。

       建议:添加token验证、时间戳或者图片验证码。token、时间戳和图片验证码在服务器后端刷新,数据包提交一次数据刷新一次;对系统关键操作进行防护,如用户操作。

13 命令执行漏洞

       描述:系统对上传的文件类型没有进行验证,在应用系统的运营过程中,不可避免地要对网站的某些页面或者内容进行更新,这时便需要使用到网站的文件上传的功能。如果不对被上传的文件进行限制或者限制被绕过,该功能便有可能会被利用于上传可执行文件、脚本到服务器上,进而进一步导致服务器沦陷。

       危害:恶意文件被上传,可执行非法操作。如文件操作、命令执行等;

攻击者可以上传JSP脚本木马,通过脚本木马可以对服务器上的任意文件进行篡改,执行cmd命令在服务器上添加管理员用户,从而获取服务器超级管理员权限。

       建议:对于用户提交的上传文件应该进行严格验证,防止上传asp,aspx,asa,php,jsp等类型的危险脚本。同时最好加入文件头验证,防止恶意用户上传非法文件。

14 任意文件包含

       描述:任意文件包含,系统对传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入,导致恶意攻击者可以利用该缺陷读取服务器上指定文件

危害:攻击者可利用该漏洞读取服务器上的一些敏感文件,如应用程序配置文件、程序源代码等,可以帮助攻击者进行进一步的攻击实施。

建议:系统对引用的文件类型及路径做严格验证。

15 任意文件下载

       描述:任意文件下载,系统提供文件下载功能,但未对下载文件名进行限制,可下载任意文件。

       危害:系统在进行文件下载操作时,未对下载路径进行合法性验证。恶意用户可以利用该漏洞下载服务器上任意文件,如应用系统数据库配置文件等

       建议:对于用户提交的文件名及下载路径应该进行严格验证,防止恶意的文件包含读取和任意文件下载

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值