小白入坑 Web 渗透测试必备指南

小白入坑 Web 渗透测试必备指南

本文来自作者 肖志华 在 GitChat 上分享「Web 渗透测试入坑必备指南」,阅读原文」查看交流实录

文末高能

编辑 | 黑石

小白如何快速入门

由于本人技术性受限制,可能部分内容显得不那么清晰,如有疑问请读者圈联系我。再者,内容不会完全讲清楚,因为本身话题的原因,部分会一笔带过。

小白该如何踏入 Web 安全这个坑呢?我的经历是,兴趣所在。我是野路子,全靠兴趣来自学。

现 Web 安全如果要讲入门,要求并不高,两三天就能入门,而我也仅在入门级别。

我接触这个比较早,最初是在10年还是09年来接触到一份网传 Web 渗透课,后沉迷于此。

期间玩的第一个靶机是 dedecms5.7 最新 sql 注射漏洞利用,当时并不懂什么技术性的东西。然后一直没怎么学过,学习资源有限也就停了。

安全问题都体现在输入输出的问题上,能够分析数据流就有迹可循了。先学会用工具,工具报什么漏洞你就应该学着去百度这个漏洞,了解并且复现它。

在复现的过程中,势必会遇到很多以前从未遇到的问题,这时候就要学着用谷歌去解决问题。你能遇到的问题,别人也许也遇到了,并且做了记载。

向记录学习过程中的问题并解决的博主致敬!

Web 知识本身就非常丰富,覆盖范围也非常广泛:

  • 从浏览器到服务器、数据库;

  • 从 HTML、JavaScript 和 CSS 到 PHP、Java、ASP(.net);

  • 从页面加载到 DOM 渲染;

  • 从静态页面到 MVC;

  • 从 URL 协议到 HTTP 协议。

我相信大多数人如果没有前端的经验,想入这个坑,先学前端就已经要崩了,但是并不需要一次性学这么多。

了解基本攻击类型,再去复现它,不断学习,不断进步,在疑惑中解决问题,在解决问题中成长并积累经验,这就是我告诉大家的方法,无捷径可走。

请务必实战,不实战,单理论的话,容我说一句放屁!再牛的前端,不关注安全技术,也能倒在前端 Xss 攻击上。

Web 安全高手都是实战练出来的,漏洞喂出来的。切莫想快速入门。快速如果定义在三个月,每天12小时用来研究 Web 安全,我估计也够入门了。

安全圈特别浮躁,很难有一个静心的交流环境,无数交流环境都是被发表情混水坑死的。所幸有 Gitbook 这样技术氛围丰厚的社区,很实在。

摸漏洞摸久了,经验自然也就丰富了,前些天我挖了 Csdn 一波储存性XSS,危害是劫持任意用户登陆会话,已经上报并修复。

出于原则不能公开漏洞详情,留个链接做证明吧。http://my.****.net/rNma0y  访问此条链接即可。

最后一句话做总结:“整就牛!”

Nmap 的使用

Nmap 作为一款端口扫描软件,可以说是目前最强大的端口扫描工具,更是很多安全从业者所必备的工具。

Nmap的安装教程请自行安装,有 Windows 系统的也有 Unix 以及 Mac。

Nmap的扫描方式有很多,包括 TCP Syn TCPACK 扫描等,使用也比较简单,仅仅需要几个参数。扫描指定IP开放的端口:

nmap -sS -p 1-20000 -v 220.176.172.178

表示使用半开扫描,系统很少会保存日志。扫描C段主机:

nmap -sP 220.176.172.178/24

小白入坑 Web 渗透测试必备指南

这里给出的结果是C段存在256个主机,方便我们后期对目标进行C段渗透。指定端口扫描 :

nmap -p 80,8080,22,445 220.176.172.178

指定端口扫描和半开结果类似,故不贴图。扫描主机操作系统:

nmap -o 220.176.172.178

扫描全部端口:

nmap -v -A 220.176.172.178

小白入坑 Web 渗透测试必备指南

这里可以看到初步就已经判断出来了 23端口和8888端口都是使用tcp协议。后面他会自行进行Syn的扫描,结果较慢,故不在等待。

小白入坑 Web 渗透测试必备指南

这是全端口扫描得出的结果,但是要注意的地方是,他只是默认的1000个高危端口扫描,若要检测全部端口,还需要加入-P-这个参数才行。

Namp 的命令很多,我这里只是列举了常用的几个命令,需要查看更多命令的请百度 namp 的官网进行命令手册翻阅。

Safe3

Safe3 作为一个国产的漏洞扫描工具,和 Appscan 来做比较还是有些不足。虽有不足,但依然无法阻止众多安全从业者的使用。我用 safe3 第一个印象就是觉得,快。

在 Windows 平台下,打开速度和扫描速度是非常之快的。

小白入坑 Web 渗透测试必备指南

这就是 safe3 的全面貌,中文界面,做用户的友好性十分的强。操作也比较傻瓜的,填入扫描的网站地址后,选择需要扫的漏洞就行。

小白入坑 Web 渗透测试必备指南

由图可见,扫描结果显示的是sql注入的漏洞,但是safe3这款工具误报性个人觉得是相当的高,笔者也很少使用,只是有时候拿来扫个后台地址而已。

Sqlmap

qlmap 作为一款强势的 sql 注入攻击工具,其功能性之强是其他 sql 注入工具所无法比拟的。如果要说缺陷,那就是众多的参数以及英文界面。

sqlmap 是一款非常强大的开源 sql 自动化注入工具,可以用来检测和利用sql注入漏洞。它由 python 语言开发而成,因此运行需要安装 python 环境。

我这里是 KaliLinux2.0 系统,已经集成了 sqlmap,所以 Windows 平台的朋友需要安装 Python 环境才能运行。检测注入点是否可用:

这里需要用到参数:-u
-u:指定注入点URL

小白入坑 Web 渗透测试必备指南

这里是在进行注入测试了,如果存在注入,那么应该返回该网站的应用程序详:

小白入坑 Web 渗透测试必备指南

这里返回了服务器系统2008 ,web 容器为 IIS7.5,脚本语言是 asp 的,数据库为 SQLserver 2005 版本。

1. 列出该数据库中的所有数据库名称

参数: —dbs

小白入坑 Web 渗透测试必备指南

小白入坑 Web 渗透测试必备指南

上图所显示的就是我们在输入了 —dbs 参数后,sqlmap 列出的所有数据库,也叫做爆库。

由于我 Kali 下开的 sqlmap 太多了,我又找不到那个命令窗口,就拿个新的网站来做接下来的例子。

2. 列出当前程序所在的数据库

参数:—current-db

小白入坑 Web 渗透测试必备指南

图中已经列出了当前应用程序所使用的数据库是“vps415”。列出指定数据库的所有表。

sqlmap -u “http://www.hkmsedu.com/class.php?id=121“ -D vps415 —tables

—tables 参数便是用来获取数据库表,-D参数为指定的数据库,结果如下:

小白入坑 Web 渗透测试必备指南

3.读取指定表中的数据

sqlmap -u “http://www.hkmsedu.com/class.php?id=121“ -D vps415 -T book —columns

参数为:—columns

结果如下:

小白入坑 Web 渗透测试必备指南

4. 读取指定字段及内容

小白入坑 Web 渗透测试必备指南

参数为:-C 指定字段名称,-T指定表名,-D指定数据库名,—dump 为保存数据。

Sqlmap 会把数据保存在文件夹下,已cvs文件后缀。

小白入坑 Web 渗透测试必备指南

到此,就已经完成了用 sqlmap 进行 sql 注入的一个完整过程,sqlmap 参数还有很多,如需深入了解,请自行查阅官方命令手册。

APPscan

APPscan 的界面如下,很简洁

小白入坑 Web 渗透测试必备指南

进入配置向导界面,如下所示。

小白入坑 Web 渗透测试必备指南

选择 WEB 扫描,同时他也可以扫描 Web Services,我们选一个 Web 站点进行扫描。

小白入坑 Web 渗透测试必备指南

然后一路回车即可。扫描专家建议就是一个建议程序,可开可不开。扫描过程如下:

小白入坑 Web 渗透测试必备指南

APPScan 的界面非常简单,左上角是基于 URL 的爬行参数,左下角仪表盘是总的安全报告。又侧则是风险详情信息。下面便是扫描结果,可以看到这个站已经存在 SQL 盲注以及 SQL 注入等网站安全问题。

小白入坑 Web 渗透测试必备指南

旁边可执行一些手动语句的测试来验证漏洞是否存在。以上漏洞可一个一个的去手动复现,到此,AppScan 就已经完成了一次自动化的扫描过程。

Appscan 和 WVS 类似,不过是英文界面,所以我选了 AppScan 来做实例,并不是 WVS 不及 Appscan。

重点来喽,作为一名渗透测试人员,Burpsuite 工具可以说是在众多工具中位列榜首可是神器呢,基本以后的安全测试之路都需要用这款工具去操作。所以学好 Burpsuite 的使用是非常重要的。

Burpsuite

有两个版本,一个是免费版,一个是Pro(Professional)版,相比只有一个功能差距,免费版不带扫描功能,Pro版则有扫描功能,但是,作为一个优秀的安全工具,Pro版则是太贵,我记得正版需要 2000 来块人民币(买不起),所以就自然有了**版,我手中这款 1.7.11就是Pro**版(羞耻)。

小白入坑 Web 渗透测试必备指南

首先,界面如上,功能模块包括 taeget、proxy、spider、Scaneer、intuder、Repeater 等模块。

由于1.7.11版本字体设计有些许问题,所以下面用1.58版本展示。

首先,选入“Options”模块,进入“Display” Display 模块,找到第二栏,“Http Message Display”,选择字体为“微软雅黑”,改这个设置的原因是,后面的 HTTP 请求消息如果中文可能会乱码。

小白入坑 Web 渗透测试必备指南

然后,进入“proxy”,遂“options”,第一栏,设置你的代理IP地址,因为他本质就是个浏览器操作后截获数据进行分析,需要用代理来。

具体代理信息可以转到浏览器代理 IP 设置的方法。我这里以 Edge 为例。

设置-高级设置-代理设置-打开代理设置即可。如下图:

小白入坑 Web 渗透测试必备指南

这个代理设置要和 burp 上的设置一样才能抓到HTTP响应哦~

接下来,我们看 intercpt 功能,也就是最基础的功能,抓取当前页面的http请求。

小白入坑 Web 渗透测试必备指南

如果以上设置没有问题了,那么你应该会成功访问该目标地址,我这里测试的是“gitbook.cn”。

访问的同时,我点击了 intercept is 模块  Is off Is on 分别关,开两种状态。我这里选择了on,那么这个页面的 HTTP 请求将被显示到 burp 中的这个模块下。

小白入坑 Web 渗透测试必备指南

上面就是显示的内容了,可以看出上面信息呢?请求来自http://gitbook.cn:80,开放了80端口,IP地址为[123.59.80.114.]。

请求是GET的,协议是 http1.1 而不是 http2.0,http状态码是200,表示返回成功。请求页面是 http://gitbook.cn/。

下面较为重要的信息就是 cookie 等登陆信息。通过对截获的http信息,一般就能看出一些安全问题。下面用实例+抓包请求信息来介绍,我经常用到的 intruder 模块使用。

Intruder,字面解释为入侵者,解释完美的诠释了这个模块是多么的爆炸。案例诠释 Burp 的爆炸功能。

我的测试目标是一所高校,拿到所在的域名之后,首先进行了扫描器的自动化扫描,并且我自己也开始进行手动测试,从该高校的官网,爬到了一处OA系统,OA系统为自主开发,并不是什么市面上的A8之类。

小白入坑 Web 渗透测试必备指南

访问到这个页面的时候,我的第一想法是,应该可以成功渗透。

因为无验证码,无权限控制,这样也就提供了**的信息,**也就恰恰是我所要讲的 burp 中的 intruder 模块功能之一。

随便输入账号密码后,我们来看看网页访问请求。

小白入坑 Web 渗透测试必备指南

可以看到,截获到的 http 请求页面如上,aspx(Asp、net)的脚本语言。

小白入坑 Web 渗透测试必备指南

账号和密码ID分别都是 6666,明文传输。我就很奇怪,为什么要很多涉及到登陆的网页,不肯做一点点加密?

哪怕是 base64 编码后再传入也好啊。但事实就是这样,明文传输。

小白入坑 Web 渗透测试必备指南

我们右键,选择 Ctrl+R,发送到 Repeater 模块来分析登陆响应。点击左上角 GO 即可。

小白入坑 Web 渗透测试必备指南

在 params 模块下,可以更改你的输入参数,用于测试不同的参数会返回什么内容,但是需要每次修改后都点击 Go,用于测试。

小白入坑 Web 渗透测试必备指南

如上图,我修改了 txtuserld 为 admin password 保持了 6666 不变 点击 GO 后的结果。一串乱七八糟的,待会我们再提。

回到 intercept 模块下,我们选择 Ctrl+I,发送到 intruder 模块下,进行猜解用户名和密码。

小白入坑 Web 渗透测试必备指南

上图所示,positions 模块下显示具体参数,标黄的(用黄色字体颜色显示出来的)都是变量参数,我们猜解用户名和密码则需要指定一些参数。

右边的“clear”,则是清除所有参数,清除后会去掉所有变量(颜色),选中你需要的参数,然后选择“Add”就可以指定该参数为变量。

我指定了用户名作为变量参数,其余不变。意味着 txtuserld:admin   txtpassword:123456  其中 userld 中的 admin 参数为变量。

有的读者可能奇怪,为什么我这里要设置用户名为变量呢。

因为考虑到我的测试目标是 OA 系统,OA 系统为多人办公系统,在线人数几百人。用户名不止一个 admin,如果选择 admin,可能会出错。

所以我的思路是**他的账号,所以我选中了 admin 做变量,而不是**他的密码。相比之下去选择一批账号进行**,成功率远远比一个账号成功率高了太多。

也要结合实际环境来测试,比如网站后台,只有一个 admin 管理员账号的情况下,显然我这种情况是不合适的。

小白入坑 Web 渗透测试必备指南

变量设置完毕后,选择 payloads,来进行字典的配置,payload Sets 就是攻击类型,有多重变量的情况下,可以选择。

比如账号和密码都为变量,如果测试一个字典则不显得那么机智,需要字典在两个变量之间相互测试,就用到这个功能模块,这里我们不做测试,遂跳过,保持默认就好。

在字典装好后,在这个模块的旁边有个options模块,这里用来更改类似于线程的参数。

在第二栏有个 Request Engine 参数,这里第一栏是 Number of threads 默认是5。

这个意思是,线程。默认5线程进行攻击,这个更改需要根据网站的配置和字典的数量,如果网站配置好,请往上加,如果不好,跑一跑就会跑坏,那么就默认。

小白入坑 Web 渗透测试必备指南

我设置的线程为50,设置完了后,就可以点击左上角的 intruder,选择第一个了。

小白入坑 Web 渗透测试必备指南

开始进行**,我这里导入的是弱账号 top500,通过几秒钟的碰撞后, length 的返回数字头中,包含了 2910-2973. 唯独出现了一个“liujuan”的 ID 返回了 3391 数字头。

这个账号有点可疑,我们放到前面所讲的 Ctrl+R 中来分析一下。

小白入坑 Web 渗透测试必备指南

更改 uid 后,点击 Go,返回了 http 信息,如上图,基本可以判断这个账号就是正确的账号,已经成功**出来,为了验证猜想,我们使用该ID进入网页。

小白入坑 Web 渗透测试必备指南

如上图,测试已经成功,burpsuite 就是这么暴力的一个安全测试工具,这只是其中几个模块,真正玩的转的人,很少。

个人觉得能玩转 burp 的所有功能,得花好几个月来专门学习 burp 这方面的资料,遗憾的是市面上还没有一本关于 burp 的工具书,如果有大神愿意写,那是自然最好的。

通过以上学习,能基本掌握这几款工具的用法了,当然不能说之能成功渗透目标了,因为这只针对无访问控制,无验证码,存在弱口令的网站情况。

通过案例学习,开发者也应该明白,怎样去做才能更加安全,为用户保驾护航。

案例是哪个高校,我就直说了,属于云南大学主站,这个漏洞,我在80天前就已经提交给漏洞平台了,他们也整改了,今天写下这篇文章的时候是2017年11月1日22:11:05,我万万没想到,整改是指哪改哪的姿势。

安全问题万万不可指哪改哪,我当时提交的另一个账号的弱口令,但是我明明确确的是写了属于逻辑漏洞,整改意见清清楚楚写上了“增加验证码效验机制防止**”。

但他们只改掉了出问题的那个账户的密码……

所以我很多时候不能理解厂商的态度,加个验证码效验如此简单的事情,非得让攻击重新发生一次。
是不是一定要等用户数据泄露,企业等遭受致命打击才能明白信息安全的重要呢?

白帽子的测试是否合法,边界在哪里?

相信这是很多人都关心的问题,从白帽子袁炜的事件来说(该白帽子挖世纪佳缘的漏洞并通知该厂商后被世纪佳缘起诉),白帽子的的边界在哪?

严格来讲,只要没有授权的测试,都是违法的,属于未授权访问,如果追究这罪名就可以吃。

授权测试比如什么呢?漏洞平台的 SRC,比如京东,小米等 SRC 是鼓励白帽子挖洞提交的,确认后甚至会送你小礼物,这些厂商建立的 SRC 平台,是有些许合法授权的意思。(个人认为)

白帽子做测试都应当遵守一个原则,点到为止,即:我只证明漏洞的存在,不会真正的实施破坏或者利用。未修复的漏洞,不应当公开其详情。所以我想厂商不会通过司法途径解决。

但是,如果你在找到SQL注入点后,进行了数据修改读取并且下载到本地,这就是脱库行为,有这种行为,就触犯了边界,那么厂商可以报警了,并且你也存在犯罪行为。

有时候,厂商也不必这么小气,不存在边界行为就不用报警,不要人家证明了你网站有漏洞后,你悄悄修复了,然后报警。

网站有漏洞是好事,一般来说白帽子的检测并没有给厂商带来多大损失,入侵本身也没有明显恶意,还主动告知漏洞及修补方案,大多数通情达理的厂商都不会选择走法务。

白帽子并不是一个人在战斗,随意抓人的后果可能会触怒其他白帽子,对厂商些许会带来相应损失。

比如,挖到洞后不再提交,直接互联网匿名公开呢?送个小礼物表示一下是不是比冰冷手铐好太多了?

找好边界,尤其重要。

OWASP top10

官方网址可以看这里:https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project

2017年的十大风险已经选出来了。分别是:

  1. 攻击注入漏洞

  2. 失效的身份认证和会话管理

  3. 跨站脚本 Xss

  4. 失效的访问控制

  5. 安全配置错误

  6. 敏感信息泄露

  7. 攻击检测与防范不足

  8. 跨站请求伪造(CSRF)

  9. 使用含有已知漏洞的组件

  10. 未受保护的 API。

这些内容我就不贴出来了,我把官方的 PDF 文档发送到读者圈提供阅读理解。
相信官方的解释也比我解释的更好。

挖到洞该怎么办?

很简单,0day 就刷一波积分,不是通用性就上交国家啦~

练手靶机

本地环境推荐使用DVWA进行模拟攻击操作练手,该系统包含了很多Web漏洞,便于复现。
真实环境请用谷歌hack语法搜索网站程序进行实机攻击。

个人推荐书单

学安全务必啃书,书中的知识结合实战经验会让你了解的更彻底也更快。

小白入坑 Web 渗透测试必备指南

这是我目前在看的一系列丛书,要推荐大概就这些吧。《Web 安全深度剖析》是本好书,入门就靠这书带。《黑客攻防技术宝典 Web 实战篇第二版》也值得看,就是内容太多,歪果仁写的。

接着就是道哥的《白帽子讲 Web 安全》啦~前端黑客可看余弦大大的 Web 前端黑客技术揭秘。双十一我自己入了 Python 和几套散文集。

最后,需要用到以上工具的读者圈联系我,链接不放了。祝大家想往这条路上走的人越走越远。

近期热文

前端工程师“应试”指南

如何用 Node.js 爬虫?

两款敏捷工具,治好你碎片化交付硬伤

改做人工智能之前,90%的人都没能给自己定位

想入行 AI,别让那些技术培训坑了你...

通知

个人和企业的信息泄露到今天已经严重到了什么程度?

严重到只要想查,就可以用各种社会工程学的方式来了解你的大部分信息。

在网络环境里,如果不会用手段保护自己,那和“透明人”没什么两样。

小白入坑 Web 渗透测试必备指南

「阅读原文」看交流实录,你想知道的都在这里