【网络安全】——服务端安全(注入攻击、认证与会话管理和访问控制、访问控制、加密算法与随机数、Web框架安全、应用层拒绝服务攻击DDOS)

这一篇博客记录的是服务端安全应用安全的知识,学习内容来自《白帽子讲Web安全》。

​ 承接自上一篇客户端安全之后,包括注入攻击、认证与会话管理和访问控制、访问控制、加密算法与随机数、Web框架安全、应用层拒绝服务攻击DDOS、Web Server安全等方面

注入攻击

由于应用违背了“数据与代码分离的原则”。两个条件:1.用户能控制数据的输入;2.代码拼凑了用户输入的数据。

SQL注入

盲注

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

Timing Attack

​ 利用数据库中某些特殊的函数,可以有条件地造成延迟。

​ 例如在MySQL中,利用BENCHMARK()函数,可以让同一个函数执行若干次,使得返回的结果比平均时间要长,通过时间长短的变化,可以判断出注入语句是否执行成功。这是一种 边信道攻击

​ eg:

1170 UNION SELECT IF(SUBSTRING(current,1,1) =
CHAR(119),BENCHMARK(5000000,ENCODE('MSG','by
5 seconds')),null) FROM (Select Database()
as current) as tbl;

​ 这段Payload判断库名的第一个字母是否为CHAR(119),即小写的w。如果判断结果为真,
则会通过BENCHMARK()函数造成较长延时;如果不为真,则该语句将很快执行完。攻击者
遍历所有字母,直到将整个数据库名全部验证完成为止。

​ 此外,例如如此的手段还可以获得很多有关数据库的信息。

数据库攻击技巧

常见的攻击机巧

​ SQL注入可以猜解数据库的版本。有自动化工具完成猜解username和password。。(猜解。。暴力),可以获取到当前用户的身份,从而进行进一步的文件操作,通过LOAD_FILE读出,然后INTODUMOFILE写入系统,最后通过LOAD DATA INFILE将文件导入表中。这种技巧可以导出Web-shell,为进一步攻击做好准备。

​ 自动化注入工具:sqlmap

命令执行

​ 在MySQL中,除了直接导出Web-shell间接执行命令之外,还可以利用UDF(USER-Defined-Functions)来执行命令。若当前用户是root,则可以直接获取到root权限。

攻击存储过程

​ 存储过程为数据库提供了强大的功能,但必须用CALL或者EXECUTE执行。在注入过程中,存储过后才能为攻击者提供很大便利。例如MS SQL Server中,“xp_cmd-shell”执行系统命令。

编码问题

​ 注入攻击中常常用到的单引号和双引号等特殊字符。当数据集采用了“宽字符集”的时候,就会产生一些漏洞,比如几个编码代表一个字符,例如。

​ 0xbf27 or 1=1 经过转义之后 成为 经过转义后,会变成0xbf5c27(“\”的ASCII码为0x5c),但0xbf5c又是一个字符。故原有的转义字符 \ 就会“吃掉”。

​ 统一设置为UTF-8是一个很好的办法,也就是,设置页面meta标签的charset属性。

SQL Column Truncation

​ MySQL数据库中,strict模式不开启会导致重复数据插入或其他非法数据插入,从而有可能获得越权访问。

正确地防御SQL注入

  • 找到所有SQL注入漏洞

  • 修补这些漏洞

    使用预编译语句:最佳方式是使用预编译语句,绑定变量,用户的输入无法改变语句的结构和语义。

    使用存储过程:将SQL语句定义在数据库中,避免使用动态的SQL语句。

    检查数据类型使用安全函数

    从数据库角度来说,应该使用最小权限原则。

其他注入攻击

  • XML注入:和HTML注入很相似
  • 代码注入: 通过一些执行命令的函数间接执行命令,如eval(), system()
  • CRLF注入: 两个字符 \n \t 表示换行,注入换行符改变语义。eg:log日志文件的改写,注入HTTP头(Http Response Splitting),因为HTTP头是\n\t换行的,可能导致安全隐患,可形成XSS攻击。

<

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值