‘壹’ 网络攻防平台有哪些
我们平时涉及到的计算机网络攻防技术,主要指计算机的防病毒技术和制造具破坏性的病毒的技术。具体的攻和防指的,一个是黑客,一个是杀毒软件。一个是入侵计算机系统的技术,一个是保护计算机不被入侵的技术。
防御:对应用层的防范通常比内网防范难度要更大,因为这些应用要允许外部的访问。防火墙的访问控制策略中必须开放应用服务对应的端口,如web的80端口。这样,黑客通过这些端口发起攻击时防火墙无法进行识别控制。入侵检测和入侵防御系统并不是针对应用协议进行设计,所以同样无法检测对相应协议漏洞的攻击。而应用入侵防护系统则能够弥补防火墙和入侵检测系统的不足,对特定应用进行有效保护。
‘贰’ Web应用安全威胁与防治——基于OWASP Top 10与ESAPI的目录
第1篇 引子
故事一:家有一IT,如有一宝 2
故事二:微博上的蠕虫 3
故事三:明文密码 5
故事四:IT青年VS禅师 5
第2篇 基础篇
第1章 Web应用技术 8
1.1 HTTP简介 8
1.2 HTTPS简介 10
1.3 URI 11
1.3.1 URL 11
1.3.2 URI/URL/URN 12
1.3.3 URI比较 13
1.4 HTTP消息 13
1.4.1 HTTP方法14
1.4.2 HTTP状态码 19
1.5 HTTP Cookie20
1.5.1 HTTP Cookie的作用22
1.5.2 HTTP Cookie的缺点23
1.6 HTTP session23
1.7 HTTP的安全 24
第2章 OWASP 27
2.1 OWASP简介27
2.2 OWASP风险评估方法28
2.3 OWASP Top 10 34
2.4 ESAPI(Enterprise Security API) 35
第3篇 工具篇
第3章 Web服务器工具简介 38
3.1 Apache 38
3.2 其他Web服务器 39
第4章 Web浏览器以及调试工具 42
4.1 浏览器简介 42
4.1.1 基本功能 42
4.1.2 主流浏览器 43
4.1.3 浏览器内核 44
4.2 开发调试工具 45
第5章 渗透测试工具 47
5.1 Fiddler 47
5.1.1 工作原理 47
5.1.2 如何捕捉HTTPS会话 48
5.1.3 Fiddler功能介绍 49
5.1.4 Fiddler扩展功能 56
5.1.5 Fiddler第三方扩展功能 56
5.2 ZAP 58
5.2.1 断点调试 60
5.2.2 编码/解码 61
5.2.3 主动扫描 62
5.2.4 Spider63
5.2.5 暴力破解 64
5.2.6 端口扫描 65
5.2.7 Fuzzer66
5.2.8 API 66
5.3 WebScrab 67
5.3.1 HTTP代理67
5.3.2 Manual Request 69
5.3.3 Spider70
5.3.4 Session ID分析71
5.3.5 Bean Shell的支持 71
5.3.6 Web编码和解码 73
第6章 扫描工具简介 74
6.1 万能的扫描工具——WebInspect 74
6.1.1 引言 74
6.1.2 WebInspect特性 74
6.1.3 环境准备 74
6.1.4 HP WebInspect总览 76
6.1.5 Web网站测试 79
6.1.6 企业测试 86
6.1.7 生成报告 88
6.2 开源扫描工具——w3af 91
6.2.1 w3af概述 91
6.2.2 w3af环境配置 92
6.2.3 w3af使用示例 93
6.3 被动扫描的利器——Ratproxy 94
6.3.1 Ratproxy概述 94
6.3.2 Ratproxy环境配置 95
6.3.3 Ratproxy运行 96
第7章 漏洞学习网站 98
7.1 WebGoat 98
7.2 DVWA 99
7.3 其他的漏洞学习网站 99
第4篇 攻防篇
第8章 代码注入 102
8.1 注入的分类 104
8.1.1 OS命令注入 104
8.1.2 XPath注入109
8.1.3 LDAP注入114
8.1.4 sql注入 118
8.1.5 JSON注入131
8.1.6 URL参数注入 133
8.2 OWASP ESAPI与注入问题的预防 135
8.2.1 命令注入的ESAPI预防 135
8.2.2 XPath注入的ESAPI预防 138
8.2.3 LDAP注入的ESAPI预防 138
8.2.4 SQL注入的ESAPI预防 141
8.2.5 其他注入的ESAPI预防 143
8.3 注入预防检查列表 143
8.4 小结 144
第9章 跨站脚本(XSS)146
9.1 XSS简介 146
9.2 XSS分类 146
9.2.1 反射式XSS 146
9.2.2 存储式XSS 148
9.2.3 基于DOM的XSS 149
9.2.4 XSS另一种分类法 151
9.3 XSS危害 154
9.4 XSS检测 156
9.4.1 手动检测 156
9.4.2 半自动检测 158
9.4.3 全自动检测 158
9.5 XSS的预防 159
9.5.1 一刀切 159
9.5.2 在服务器端预防 160
9.5.3 在客户端预防 168
9.5.4 富文本框的XSS预防措施 170
9.5.5 CSS 172
9.5.6 FreeMarker174
9.5.7 OWASP ESAPI与XSS的预防 177
9.6 XSS检查列表 183
9.7 小结 184
第10章 失效的身份认证和会话管理 185
10.1 身份认证和会话管理简介185
10.2 谁动了我的琴弦——会话劫持186
10.3 请君入瓮——会话固定 188
10.4 我很含蓄——非直接会话攻击191
10.5 如何测试 199
10.5.1 会话固定测试 199
10.5.2 用Web Scrab分析会话ID 200
10.6 如何预防会话攻击 202
10.6.1 如何防治固定会话 202
10.6.2 保护你的会话令牌 204
10.7 身份验证 208
10.7.1 双因子认证流程图 209
10.7.2 双因子认证原理说明 210
10.7.3 隐藏在QR Code里的秘密 211
10.7.4 如何在服务器端实现双因子认证 212
10.7.5 我没有智能手机怎么办 216
10.8 身份认证设计的基本准则216
10.8.1 密码长度和复杂性策略 216
10.8.2 实现一个安全的密码恢复策略 217
10.8.3 重要的操作应通过HTTPS传输 217
10.8.4 认证错误信息以及账户锁定 219
10.9 检查列表 219
10.9.1 身份验证和密码管理检查列表 219
10.9.2 会话管理检查列表 220
10.10 小结 221
第11章 不安全的直接对象引用 222
11.1 坐一望二——直接对象引用 222
11.2 不安全直接对象引用的危害 224
11.3 其他可能的不安全直接对象引用 224
11.4 不安全直接对象引用的预防 225
11.5 如何使用OWASP ESAPI预防 227
11.6 直接对象引用检查列表 230
11.7 小结 230
第12章 跨站请求伪造(CSRF) 232
12.1 CSRF简介 232
12.2 谁动了我的奶酪232
12.3 跨站请求伪造的攻击原理233
12.4 剥茧抽丝见真相235
12.5 其他可能的攻击场景236
12.5.1 家用路由器被CSRF攻击 236
12.5.2 别以为用POST你就躲过了CSRF 238
12.5.3 写一个自己的CSRF Redirector 241
12.5.4 利用重定向欺骗老实人 243
12.6 跨站请求伪造的检测245
12.6.1 手工检测 245
12.6.2 半自动CSRFTester 246
12.7 跨站请求伪造的预防250
12.7.1 用户需要知道的一些小技巧 250
12.7.2 增加一些确认操作 250
12.7.3 重新认证 250
12.7.4 加入验证码(CAPTCHA) 250
12.7.5 ESAPI解决CSRF 250
12.7.6 CSRFGuard 256
12.8 CSRF检查列表 260
12.9 小结 261
第13章 安全配置错误 262
13.1 不能说的秘密——Google hacking 262
13.2 Tomcat那些事 264
13.3 安全配置错误的检测与预防 264
13.3.1 系统配置 264
13.3.2 Web应用服务器的配置 268
13.3.3 数据库 282
13.3.4 日志配置 284
13.3.5 协议 285
13.3.6 开发相关的安全配置 291
13.3.7 编译器的安全配置 302
13.4 安全配置检查列表 305
13.5 小结 307
第14章 不安全的加密存储 308
14.1 关于加密 310
14.1.1 加密算法简介 310
14.1.2 加密算法作用 312
14.1.3 加密分类 313
14.2 加密数据分类 314
14.3 加密数据保护 315
14.3.1 密码的存储与保护 315
14.3.2 重要信息的保护 323
14.3.3 密钥的管理 336
14.3.4 数据的完整性 339
14.3.5 云系统存储安全 342
14.3.6 数据保护的常犯错误 343
14.4 如何检测加密存储数据的安全性 344
14.4.1 审查加密内容 344
14.4.2 已知答案测试(Known Answer Test)344
14.4.3 自发明加密算法的检测 345
14.4.4 AES加密算法的测试 345
14.4.5 代码审查 346
14.5 如何预防不安全的加密存储的数据347
14.6 OWASP ESAPI与加密存储 348
14.6.1 OWASP ESAPI与随机数 353
14.6.2 OWASP ESAPI 与FIPS 140-2 354
14.7 加密存储检查列表 355
14.8 小结 355
第15章 没有限制的URL访问357
15.1 掩耳盗铃——隐藏(Disable)页面按钮357
15.2 权限认证模型 358
15.2.1 自主型访问控制 360
15.2.2 强制型访问控制 360
15.2.3 基于角色的访问控制 361
15.3 绕过认证 363
15.3.1 网络嗅探 364
15.3.2 默认或者可猜测用户账号 364
15.3.3 直接访问内部URL364
15.3.4 修改参数绕过认证 365
15.3.5 可预测的SessionID365
15.3.6 注入问题 365
15.3.7 CSRF 365
15.3.8 绕过认证小结 366
15.4 绕过授权验证 367
15.4.1 水平越权 368
15.4.2 垂直越权 369
15.5 文件上传与下载373
15.5.1 文件上传 373
15.5.2 文件下载和路径遍历 377
15.6 静态资源 382
15.7 后台组件之间的认证383
15.8 SSO 385
15.9 OWASP ESAPI与授权 386
15.9.1 AccessController的实现387
15.9.2 一个AccessController的代码示例390
15.9.3 我们还需要做些什么 391
15.10 访问控制检查列表 393
15.11 小结 393
第16章 传输层保护不足 395
16.1 卧底的故事——对称加密和非对称加密395
16.2 明文传输问题 396
16.3 有什么危害398
16.3.1 会话劫持 398
16.3.2 中间人攻击 399
16.4 预防措施 399
16.4.1 密钥交换算法 400
16.4.2 对称加密和非对称加密结合 401
16.4.3 SSL/TLS 406
16.5 检查列表 423
16.6 小结 423
第17章 未验证的重定向和转发 425
17.1 三角借贷的故事——转发和重定向425
17.1.1 URL转发425
17.1.2 URL重定向 426
17.1.3 转发与重定向的区别 429
17.1.4 URL 重定向的实现方式 430
17.2 危害 438
17.3 如何检测 439
17.4 如何预防 440
17.4.1 OWASP ESAPI与预防 441
17.5 重定向和转发检查列表 443
17.6 小结 443
第5篇 安全设计、编码十大原则
第18章 安全设计十大原则 448
设计原则1——简单易懂 448
设计原则2——最小特权 448
设计原则3——故障安全化450
设计原则4——保护最薄弱环节451
设计原则5——提供深度防御 452
设计原则6——分隔 453
设计原则7——总体调节 454
设计原则8——默认不信任454
设计原则9——保护隐私 455
设计原则10——公开设计,不要假设隐藏秘密就是安全 455
第19章 安全编码十大原则 457
编码原则1——保持简单 457
编码原则2——验证输入 458
编码原则3——注意编译器告警459
编码原则4——框架和设计要符合安全策略 459
编码原则5——默认拒绝 460
编码原则6——坚持最小权限原则 462
编码原则7——净化发送到其他系统的数据 463
编码原则8——深度预防 464
编码原则9——使用有效的质量保证技术464
编码原则10——采用一个安全编码规范 465
媒体评论
这是一本带点酷酷的工程师范儿和人文气质的“硬货”。作为一名资深IT文艺老人,特别喜欢这种带着思想气息却又有着丰富案例娓娓道来的实用信息安全书,过去却往往只在国外作者中读到。正如书中开头的引子说的那样:“家有IT,如有一宝。”那么在Web安全日益火爆的今天,你会不会在读完这本书后的未来也成为传说中让我们顶礼膜拜的大牛呢^-^
——IDF威慑防御实验室益云(公益互联网)社会创新中心联合创始人万涛@黑客老鹰
伴随互联网的高速发展,基于B/S架构的业务系统对安全要求越来越高,安全从业人员面临空前的压力。如何让安全从业人员快速掌握Web应用安全?本书以诙谐、幽默的语言,精彩、丰富的实例,帮助安全从业人员从端到端理解Web应用安全。不失为近几年Web应用安全书籍的上佳之作。
——OWASP中国区主席SecZone高级安全顾问 RIP
很乐意看到有人将自身的资深安全积累和OWASP的最佳实践出版成书,内容严谨细致却不乏生动。这本信息安全领域的实用手册将成为银基安全致力于互联网安全的参考指导书目之一,我们广泛的电信、银行、保险、证券和政府部门等客户都会从中受益。
——上海银基信息安全技术有限公司首席技术官胡绍勇(Kurau)
随着安全访问控制策略ACL的普及应用,互联网企业目前面临的安全风险面主要集中在Web服务层。其中Web应用系统在架构设计、开发编码过程中是安全漏洞和风险引入的主要阶段,而普遍地我们的架构、开发、测试岗位在安全技能与意识上恰恰是相对比较欠缺的。本书详细介绍了Web安全基础知识、测试平台与方法,常见漏洞形式与原理,并结合OWASP最佳实践经验给出预防建议、设计和编码原则等。书中举例生动形象,图文代码并茂,步骤归纳清晰。特别推荐给广大Web开发、测试、安全岗位的朋友们。
—— 中国金山软件集团信息安全负责人程冲
在网络攻击愈加复杂,手段日益翻新的今天,Web攻击依然是大多数攻击者首选的入侵手段。反思CSDN泄密及新浪微博蠕虫事件,Web应用的安全突显其重要性。OWASP作为全球领先的Web应用安全研究团队,透过本书将Web应用安全的威胁、防御以及相关的工具进行了详细的探讨和研究。详尽的操作步骤说明是本书的亮点之一,这些详实且图文并茂的内容为逐步深入学习Web应用安全提供了很好的帮助。我衷心希望这本书能够成为信息安全专业的在校生以及应用安全相关从业人员的学习指导书。
-- 上海交通大学信息安全工程学院施勇(CISSP CISA)
‘叁’ dvwa sql injection high级怎么破
1、设置
把安全等级先调整为low,让自己获得点信心,免得一来就被打脸。
2、测试和分析页面的功能
这里有一个输入框
根据上面的提示,输入用户的id。然后我们输入之后,发现它返回了关于这个user的信息!这里我们输入了“1”。
它返回三行数据,一行是我们输入的用户ID。一行是用户名,另外一行是用户别名。同时,看一下浏览器的地址栏那里,发现url成这样了
这里有个id=1,是不是就是我们输入的user id呢?再输入“2”,发现url变成了
好了,到这里,我们可以得出这里传进去的id的值是我们可以控制的。我们在输入框中输入什么,就会通过id传进去什么!
3、对参数进行测试
对id这个参数进行测试,查看一下它是否存在sql注入漏洞。我们在输入框里面输入“1'”,注意1后面有一个单引号“'”。
发现这里报错了,说我们的sql语句出现了语法错误。
我们可以进行这样一个猜测:首先它这个id是被两个“'”包住的。查询语句可能是这样的:
select firstname,surname from users where id = '1';
当我们在1之后加一个引号,则会导致单引号数目不平衡,那么查询语句会变成这样:
select firstname,surname from users where id = '1'';
可以看到最后一个引号没被闭合,那我们该怎么办呢?其实有好多种解决的办法,下面就简单介绍下。
方法一:可以在原来的基础上再继续输入一个引号,也就是“1''”。这时我们看一下查询语句:
select firstname,surname from users where id = '1''';
* 在where语句中,当出现多个字符串的时候,“=”将会选择优先级最高的一个,优先级是从左到右,依次降低的,也就是离“=”最近的一个。
看到了么,出来的结果还是和user_id=1一样。
方法二:使用“#”符号来注释后面的单引号,到时查询语句将会变成这样:
select firstname,surname from users where id = '1'#';
方法三:使用“-- ”。这里注意了“-- ”后面有一个空格。在url当中,我们可以使用“+”来代替“--”后面的空格。到时查询语句将会变成这样:
select firstname,surname from users where id = '1'--+';
上面显示出来的结果和输入1时一样。到这里我们就可以确定:
漏洞的参数是“id”。
漏洞的类型是字符型。
4、构造payload
好了,在我们确认漏洞之后,就可以构造payload了。什么是payload?说白了就是一段恶意代码,以便我们能够获得数据库里面的数据。
4.1 分析字段数
分析字段数的话,也是有两种方法。
方法一:用order by 语句。
分析字段数的原因是我们之后需要用union select语句来获得我们需要的敏感数据。根据order by知识知道,要是后面跟着的数字超出了字段数时,就会报错!通过这个我们可以确定字段数。我们构造的payload如下:
1' order by 1#
1' order by 2#
1' order by 3#
当输入到3的时候,发现它报错了,也就是说字段数为2。
方法二:直接用union select来猜测字段数。
因为当字段数不对应的时候,它也是会发生报错的!我们构造以下查询语句:
1' union select 1#
1' union select 1,2#
1' union select 1,2,3#
可以发现,当union select 1,2,3的时候报错,union select 1,2的时候没有报错,也就是说字段数为2。同时,我们也注意到,好像返回的内容中多了三条数据,这是啥呢?其实这就是我们union select出来的数据。这样通过查看页面,我们便可以获得数据库里面的信息了!
4.2 获取信息
字段数为2,说明数据列有两列。我们可以通过union select语句查出两个数据。好了,我们来获取所需要的数据库里面的信息吧!
4.2.1 获取当前数据库名,当前用户名
构造数据库查询语句如下所示:
1' union select database(),user()#
解释一下,database()将会返回当前网站所使用的数据库名字,user()将会返回进行当前查询的用户名。
好的,我们可以看到当前使用的数据库为:dvwa,当前的用户名:root@localhost。
有时候,后面的select语句会限制输出的行数,一般来说,都会让原数据库查询无效,也就是输入无效的id,使得原数据库查询不反回结果。如下操作:
-1' union select database(),user()#
这样就只会返回我们需要的数据了。
类似的函数还有:version() 获取当前数据库版本,@@version_compile_os获取当前操作系统。
-1' union select version(),@@version_compile_os#
* 数据库版本高于5.0就可以爆库了,下面会具体讲解。
4.2.2 获取当前的用户表
根据上面的信息,我们知道当前数据库名为dvwa,可是还不够呀,表名是什么?内容又是什么?是不是打算放弃了?先吃根辣条冷静一下吧。
想想看,当你有不懂的字会怎么办呢?不要动不动就去网络,除了问度娘,还能怎么做呢?对了,查字典。那么mysql有没有类似于字典的东西呢?答案是肯定的,就是information_schema,这是一个包含了mysql数据库所有信息的“字典”,本质上还是一个database,存放着其他各个数据的信息。
在information_schema里,有一个表tables。有一个columns……是不是有点感觉了? tables这个表存放的是关于数据库中所有表的信息,里面有个字段叫table_name,还有个字段叫做table_schema。其中table_name是表名,table_schema表示的是这个表所在的数据库。对于columns,它有column_name,table_schema,table_name。回想一下,我们拥有的信息是数据库名。也就是说我们可以构造这样的payload来从数据库里获取一些东西。
好的,构造的查询语句如下:
-1' union select table_name,2 from information_schema.tables where table_schema= 'dvwa'#
爆出来两个表,对那个感兴趣呢???当然是users表啦!不是说还有一个columns表么?所以我们还需要table_name以及table_schema来查column_name。这次我们构造的payload如下:
-1' union select column_name,2 from information_schema.columns where table_schema= 'dvwa' and table_name= 'users'#
这里简单说一下,倘若不指定数据库名为'dvwa',若是其他数据里面也存在users表的话,则会出现很多混淆的数据。当然,在这里直接使用下面的语句也是可以成功的。
-1' union select column_name,2 from information_schema.columns where table_name='users'#
跟上一条结果一样吧?
又来了,这么多数据,选哪个呢???废话,当然是user,password啦。我们再次修改payload:
-1' union select user,password from users#
Binggo!我们爆出所有的用户名和密码值!等等,这密码好像有点奇葩,数一数,32位!好吧,是经过md5加密的。好不容易爆出管理员账号和密码,但是密码却加密,这就没有办法了吗?不一定!我们需要找一些破解md5值的网站来进行破解!直接网络“CMD5”,然后选择一个网站进去破解就可以了。
我们选择admin这个来进行破解,md5密文为:。
可以看到密码已经被破解出来了,密码是“admin”,好的,我们来验证一下!
看,这个时候我们已经成功登陆了!
好的,简单的SQL注入就说到这儿了,下次我们将进行DVWA里面的中级SQL注入。
‘肆’ 黑客分为哪几个等级
黑客的等级可以用下面7个层次来说明:
Level 1——愣头青【百万人】:会使用安全工具,只能简单扫描、破译密码
Level 2——系统管理员【上万人】:善用安全工具,特别熟悉系统及网络
Level 3——大公司的开发人员或核心安全公司大牛【几千人】:对操作系统特别熟悉,开始开发代码,写自己的扫描器
Level 4——能找到并利用漏洞【几百人】:自己能找漏洞、自己找0day并且写exp利用漏洞的;对系统做挖掘漏洞的协议测试
Level 5——高水平【少于百人】:防御和构建系统的人
Level 6——精英级【几十人到十几人】:对操作系统的理解很深入
Level 7——大牛牛【寥寥无几】:马克·扎克伯格、艾伯特·爱因斯坦等改变世界的人
‘伍’ 如何在dvwa上进行跨站式脚本攻击
(1)持久型跨站:最直接的危害类型,跨站代码存储在服务器(数据库)。
(2)非持久型跨站:反射型跨站脚本漏洞,最普遍的类型。用户访问服务器-跨站链接-返回跨站代码。
(3)DOM跨站(DOM XSS):DOM(document object model文档对象模型),客户端脚本处理逻辑导致的安全问题。
‘陆’ dvwa试验中php allow_url_include=on 怎么打开跪求大神指点!
https://stackoverflow.com/questions/34274492/dvwa-setup-php-function-allow-url-include-disabled/34540293 可以参考这篇文章。
‘柒’ 网络安全怎么学
你可以把网络安全理解成电商行业、教育行业等其他行业一样,每个行业都有自己的软件研发,网络安全作为一个行业也不例外,不同的是这个行业的研发就是开发与网络安全业务相关的软件。
既然如此,那其他行业通用的岗位在安全行业也是存在的,前端、后端、大数据分析等等,也就是属于上面的第一个分类,与安全业务关系不大的类型。这里我们重点关注下第二种,与安全业务紧密相关的研发岗位。
这个分类下面又可以分为两个子类型:
做安全产品开发,做防
做安全工具开发,做攻
防火墙、IDS、IPS
WAF(Web网站应用防火墙)
数据库网关
NTA(网络流量分析)
SIEM(安全事件分析中心、态势感知)
大数据安全分析
EDR(终端设备上的安全软件)
DLP(数据泄漏防护)
杀毒软件
安全检测沙箱
安全行业要研发的产品,主要(但不限于)有下面这些:
总结一下,安全研发的产品大部分都是用于检测发现、抵御安全攻击用的,涉及终端侧(PC电脑、手机、网络设备等)、网络侧。
开发这些产品用到的技术主要以C/C++、Java、Python三大技术栈为主,也有少部分的GoLang、Rust。
安全研发岗位,相对其他两个方向,对网络安全技术的要求要低一些(只是相对,部分产品的研发对安全技能要求并不低),甚至我见过不少公司的研发对安全一无所知。