链接:https://www.zhihu.com/question/21606800/answer/22268855
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
因为正好Web安全是我擅长的,你说的是 0基础,我总结下我的一些看法吧,针对0基础的。
一. 首先你得了解Web
Web分为好几层,一图胜千言:
<img data-rawheight="720" data-rawwidth="960" src="https://pic4.zhimg.com/133c88180340b844466e8fa5552e122b_b.jpg" class="origin_image zh-lightbox-thumb" width="960" data-original="https://pic4.zhimg.com/133c88180340b844466e8fa5552e122b_r.jpg">
事实是这样的: 如果你不了解这些研究对象是不可能搞好安全研究的。
这样看来,Web有八层(如果把浏览器也算进去,就九层啦,九阳神功……)!!!每层都有几十种主流组件!!!这该怎么办?
别急, 一法通则万法通,这是横向的层,纵向就是 数据流啦!搞定好数据流:从横向的层,从上到下→从下到上,认真看看这些数据在每个层是怎么个处理的。
数据流中,有个关键的是HTTP协议,从上到下→从下到上的头尾两端(即请求响应),搞通!难吗?《HTTP权威指南》720页!!!坑爹,好难!!!
怎么办?
横向那么复杂、纵向数据流的HTTP协议就720页的书!!!放弃好了……
不,千万别这样。
给你点信心是:《HTTP权威指南》这本书我压根没看过。但是通过百度/Google一些入门的HTTP协议,我做了大概了解,然后Chrome浏览器F12实际看看“Network”标签里的HTTP请求响应,不出几小时,就大概知道HTTP协议这玩意了。(这是快速研究的精髓啊)
搞明白HTTP协议后,你就会明白安全术语的“ 输入输出”。
黑客通过 输入提交“特殊数据”,特殊数据在 数据流的每个层处理,如果某个层没处理好,在 输出的时候,就会出现相应层的安全问题。
精彩举例:
1. 如果在操作系统层上没处理好,比如Linux的Bash环境把“特殊数据”当做 指令执行时,就产生了 OS命令执行的安全问题,这段“特殊数据”可能长得如下这般:
; rm -rf /;
2. 如果在存储层的数据库中没处理好,数据库的SQL解析引擎把这个“特殊数据”当做 指令执行时,就产生 SQL注入这样的安全问题,这段“特殊数据”可能长得如下这般:
' union select user, pwd, 1, 2, 3, 4 from users--
3. 如果在Web容器层如nginx中没处理好,nginx把“特殊数据”当做 指令执行时,可能会产生远程溢出、DoS等各种安全问题,这段“特殊数据”可能长得如下这般:
%c0.%c0./%c0.%c0./%c0.%c0./%c0.%c0./%20
4. 如果在Web开发框架或Web应用层中没处理好,把“特殊数据”当做 指令执行时,可能会产生远程命令执行的安全问题,这段“特殊数据”可能长得如下这般:
eval($_REQUEST['x']);
5. 如果在Web前端层中没处理好,浏览器的JS引擎把“特殊数据”当做 指令执行时,可能会产生XSS跨站脚本的安全问题,这段“特殊数据”可能长得如下这般:
'"><script>alert(/cos is my hero./)</script>
...
怎样,刺激吧?搞懂这些,就算入门啦。
- 记好:一切的安全问题都体现在“输入输出”上,一切的安全问题都存在于“数据流”的整个过程中。
- 记好:“数据流”、“输入输出”这两个关键点。
前面说了: 如果你不了解这些研究对象是不可能搞好安全研究的。
拿我XSS来说,曾经有人问我,我回答的一个: 在学习XSS前我应该学习什么?你可与参考下。
假如我曾经要不是比较熟JavaScript、ActionScript、HTML/CSS的话,我估计我要研究好XSS是很困难的,我熟悉这些语言刚开始的出发点是想“ 创造”,我做了好些Flash动画、做了好些网站、包括自己从后端到前端独立实现过一个博客系统,为了解决好前端在各浏览器的兼容问题(当时是IE6如日中天的时候),我啃了好几本书,如《CSS网站布局实录》、《JavaScript DOM编程艺术》、《AJAX Hacks》、Flash从6版本以来到CS2的各类书籍我都多少看过,也实战过,这一切都是在大学前三年搞定的。
大学第四年冲刺Web安全(长期以来有黑客情怀),大四下学期进入知道创宇(刚创业起步),然后到了现在,一晃在知道创宇六年。
说到这,很清晰啦: 如果你不了解这些研究对象是不可能搞好安全研究的。
咱们继续:)
二. 黑客兵器谱
新人入门总在寻找好工具来提高效率,Web安全这块我之前放出了我的“兵器谱”,在这: 我的渗透利器(会不断抽时间更新)。
工欲善其事必先利其器嘛,而且新人用了好兵器会更有成就感的。
切记:这些兵器,你不仅要知其然还得知其所以然,别堕落了哦。
三. 明白“精于一而悟道”的道理
不多说,请看这我的回答: 对于立志在网络安全领域发展,应该如何系统学习安全知识?
四. 融入圈子
多结交些靠谱的黑客,搞搞基啦(不过别来真的,还有我好讨厌 扯淡/ 水得不得了的人),微博(含:Twitter)、QQ、微信、知乎、博客等善于跟进,不仅学,也要分享,让大家知道你的存在,更有利于交流与成长。
如果你对我有兴趣,可以看我的介绍: 关于余弦,我自认为我自己靠谱(不,这不是浮夸,这是自信)。
关于“圈子”,我想说:别把自己局限住。
最后,再次引用黑哥的一句话:“整就牛!”
从我自己的亲身经历出发给你一些学习心得~我是偶尔去网吧接触到黑客~从此踏上了自学黑客之路~
最近看的书推荐
web黑客第二版
xss攻击剖析与防御
企业级代码审计
web测试相关技术
1.专注
我觉得在学习网络安全和任何东西的时候都要分阶段专注学习、比如研究xss 那我这一个月就什么也不做只研究xss 把xss研究到极致,然后在研究下一个课题xss通常结合csrf利用那么切忌不要因为xss会结合csrf使用就把研究重点放到csrf,要有重点的研究东西,一个月后可进行下一个课题研究。
这是我写的一篇关于flash xss的总结希望能够帮到你
2.整理笔记
这个我觉得最重要,这是一个好习惯 可以让我们重新把学习的技术做一个总结和巩固。在总结的过程形成自己对技术的理解与创新。
3.多看书和分析文章
比如我在学习代码审计的时候,最有效的方法 。我是这样做的。代码审计在我们学习以前先去阅读相关的书籍。然后找两片分析0day的文章,照葫芦画瓢分析文章中一样版本的代码,这对你成长很有帮助,进步也非常快。
学习思路
在不了解黑客技术的时候觉得 盗qq 中木马是很高深的~这些其实没有技术含量~不要沉迷于此直接略过~跑题了这是做web安全
先去百度下webshell 一句话木马 是什么~
首先要学一门脚本语言推荐php不用学的太灵通,了解一些危险函数即可如 get post 请求 open exec 等函数会造成什么漏洞……了解了php中的危险函数会造成那些漏洞可举一反三套用到别的脚本需要当中如 asp aspx java这些语言的危险函数可能只是写法不一样功能是相同的~
Javascript 要好好学习一下 然后了解xss的原理~以及csrf 的原理……
关于xss初学者需要了解一些 html实体 html实体的10 或16进制 ,以及javascript 的8进制和16进制编码 双字节漏洞,提供一个学习地址以上知识在这都用讲解
然后就是数据库了~mysql sqlserver 随便先学一个~前期学会 selsct 就行,结合php尝试自己写一个查询数据库的脚本 ~来了解sql注入的原理~这样进步会很快……
Http请求时候的一些参数也需要做一些了解,如
user_agent
X-Forwarded-For
Referer
等参数 这些参数也会造成一些安全问题…… 下面就是服务器本身的漏洞与编辑器上传也需要了解
如
Iis 解析漏洞
nginx 解析漏洞
tomcat 后台上传
jboss
fckedit
eweb
可自行网上搜索这些服务器都有哪些
web渗透测试部分
信息搜集
二级兄弟域名搜集
利用DNS域名传送漏洞搜集二级域名
Liunx测试命令如下:
Dns服务器 1.1.1.1 测试域名 http://wooyun.org
dig @1.1.1.1 http://sechook.org axfr
nmap --script dns-zone-transfer --script-args dns-zone-transfer.domain= http://wooyun.org -p 53 -Pn 1.1.1
实例查询苏宁DNS服务器
D:\deep>nslookup
默认服务器: localhost
Address: 10.11.0.1
> set type=ns
> http://suning.com
服务器: localhost
Address: 10.11.0.1
非权威应答:
http://suning.com nameserver = http://lns1.zdnscloud.info
http://suning.com nameserver = http://gns2.zdnscloud.net.cn
http://suning.com nameserver = lns2.zdnscloud.biz
http://suning.com nameserver = http://gns1.zdnscloud.net
>
查询苏宁http://suning.com IP
C:\Users\jack>nslookup http://suning.com
服务器: localhost
Address: 10.11.0.1
非权威应答:
名称: http://suning.xdwscache.ourwebcdn.com
Addresses: 203.130.60.48 //对应ip
203.130.60.49 //对应ip
203.130.60.50 //对应ip
Aliases: http://suning.com
http://Suning.com.wscdns.com //别名
在线二级域名爆破网站
https://dnsdumpster.com/
Netcraft - Search Web by Domain
工具获取二级域名
subDomainsBrute
wydomain
theHarvester.py
Fierce
Dig
knock
dnsspider
SubDomainscollect
SubBrute
dirfuzz
使用格式:
fierce -dns http://baidu.com -threads 3
subDomainsBrute.py http://suning.com
python theHarvester.py -d http://suning.com -l 500 -b baidu -v 国内百度找的多
python theHarvester.py -d 公司名 -l 500 -b baidu -v
python theHarvester.py -d http://suning.com -l 500 -b google -v国外站google多
python theHarvester.py -d school -l 1000 -b all all使用所有的搜索引擎进行搜索
subDomainsBrute使用需要安装依赖支持
报错信息:ImportError: No module named dns.resolver
需要安装的库是 dnspython pip install dnspython 没有pip的话, 可以用
到 https://github.com/rthalley/dnspython.git 下载 cd dnspython python setup.py install
搜索引擎 Google新经验:
+ 把google可能忽略的字列如查询范围 - 把某个字忽略 ~ 同意词 . 单一的通配符 * 通配符,可代表多个字母 "" 精确查询
代码托管泄漏信息搜索
Google:
http://andy-game.googlecode.com/svn-history/
Gitbub: https://github.com/search?utf8=%E2%9C%93&q=%E5%A4%96%E7%BD%91+%E8%B1%86%E7%93%A3&type=Code&ref=searchresults
邮箱搜集
Metasploit邮箱搜集链接
http://xiao106347.blog.163.com/blog/static/215992078201311300162776/
n ip反查域名
http://dns.aizhan.com/58.240.86.229/
二级兄弟域名搜集
查询邮件服务器信息
目标IP地址范围搜集
利用代码托管网站搜集目标信息
确定ip 地址范围
扫描c段
获取cdn真实ip地址
社会工程学