白帽子讲Web安全-服务器端应用安全

本文详细介绍了Web安全中的注入攻击,包括SQL注入、数据库攻击技巧和防御方法。强调了防御SQL注入的关键在于数据与代码分离,并提出使用预编译语句、存储过程和安全函数等策略。同时,还涵盖了文件上传漏洞、认证与会话管理、访问控制、加密算法和Web服务器安全等方面,提供了一系列安全实践建议。
摘要由CSDN通过智能技术生成

1.注入攻击

    注入攻击的本质,是把用户输入的数据当做代码执行。两个关键条件:一是用户能够控制输入,二是原本程序要执行的代码,拼接了用户输入的数据。

1.1SQL注入

    SQL注入,是构造SQL执行语句拼接在输入参数中,从而执行SQL。若Web服务器开启了错误回显,则会披露敏感信息,为攻击者提供更大便利。

    SQL盲注,是在服务器没有错误回显时完成的注入攻击。常见验证方法是构造简单的条件语句,根据返回页面是否发生变化,来判断SQl语句是否得到执行。

    Timing Attack,利用BENCHMARK()测试函数性能函数,让同一个函数执行若干次,使得结果的返回结果比一般长,通过时间长短的变化,判断注入语句是否执行成功。

1.2数据库攻击技巧

    1)常见攻击技巧

    sqlmap:SQL注入可以猜测出数据库的对应版本,验证表名是否存在,进而验证用户名密码等更多信息。这可通过sqlmap.py自动化注入工具帮助完成整个过程。链接:https://github.com/sqlmapproject/sqlmap

    读写文件:在MySQL中通过load_file()读取系统文件,通过INTO DUMPFILE写入本地文件,再通过LOAD DATA INFILE将文件导入创建的表中,最后通过一般的注入技巧直接操作表数据。其中INTO DUMPFILE适用于二进制文件,它会将目标文件写入同一行内,也可使用INTO OUTFILE写入文本文件。写入文件的技巧常用于导出一个Webshell,为攻击者进一步攻击做铺垫。

    因此在设计数据库安全方案时,可以禁止普通数据库用户具备操作文件的权限。

    2)命令执行

    利用用户自定义函数UDF(User-Defined Functions)来执行命令。

    通过lib_mysqludf_sys提供的函数执行系统命令,主要是sys_eval()和sys_exec()。在攻击过程中将lib_mysqludf_sys.so上传到数据库能访问到的路径下,在创建UDF后,使用sys_eval()等函数执行系统命令。

    因此在建立数据库账户时应该遵循”最小权限原则“,尽量避免给Web应用使用数据库的管理员权限。

    3)攻击存储过程

    xp_cmdshell:执行系统命令, xp_cmdshell在SQL Server 2000中默认是开启的,但在2005及之后的版本默认被禁止了。若当前数据库用户拥有sysadmin权限,则可以使用sp_configure重新开启。

    xp_regread:操作注册表

    xp_servicecontrol:允许用户启动,停止服务

    xp_dirtree:允许获得一个目录树

    xp_enumdsn:列举服务器上的ODBC数据源

    xp_loginconfig:获取服务器安全信息

    4)编码问题

    注入攻击中常用单引号,双引号等特殊字符,基于字符集攻击。如当MySQL使用GBK编码时,0xbf27和0xbf5c会被认为是一个字符(双字节字符),而在进入数据库之前。在Web语言中则没有考虑到双字节字符的问题,双字节字符会被认为是两个字节。若攻击者输入“0xbf27 or 1=1”,经过转义后会变成“0xbf5c27”(\的ASCII码为0x5c),原本存在的转义符号在数据库中会被吃掉。

    因此在设计时需要统一数据库,操作系统,Web应用所使用的字符集,以避免各层对字符的理解存在差异。建议设置为UTF-8是一个很好的方法。根据系统所使用的不同字符集来限制用户输入数据的字符允许范围,以实现安全过滤。

    5)SQL Column Truncation

    在MySQL中有一个sql_mode选项,当MySQL的sql-mode设置为default即没有开启STRICT_ALL_TABLES选项时,MySQL对于用户插入的超长值只会提示warning,而不是error。这可能造成越权访问。

1.3正确地防御SQL注入

    防御的关键:一是找到所有的SQL注入漏洞,二是修补这些漏洞。

    1)使用预编译语句,绑定变量,SQL语句的语义不会发生改变,攻击者无法改变SQL的结构。

    2)使用存储过程,使用安全的存储过程对抗SQL注入,尽量避免在存储谷城内使用动态的SQl语句,若无法避免,则使用严格的输入过滤或编码函数来处理用户的输入数据。

    3)检查输入数据的数据类型,或者其他的数据格式及类型检查。

    4)使用安全函数,参考数据库厂商和OWASP ESAPI的实现。从数据库自

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值