安全入门的一点思考

简介: “小白如何成为挖洞大神?”,很多刚开始接触网络安全的同学都可能会遇到这个问题,思考过这类问题。

“小白如何成为挖洞大神?”,很多刚开始接触网络安全的同学都可能会遇到这个问题,思考过这类问题。

如何成为大神这个问题太难了,我很难回答。不过,我觉得不论学习什么,都是一个过程:

1.首先最重要的就是知识!知识!知识!
知识面不够、深度不深,就想着挖洞,这是非常不合理的,不想多解释。正所谓:
当我们穷到连知识都不想积累的时候,我们挖的不是洞,挖的是浮躁。

2.多去实战
小学乃至高中,老师讲完课会留练习题给大家做的,这是小孩子都懂得道理。那么,我们在学习了一些安全知识、攻击技巧、工具使用之后,我们就完事大吉了?这样不仅无法深入理解这些知识,更容易随着时间推移快速忘却,安全之路原地踏步。
最好的状态是,学习任何一个知识、或者比如在i春秋看到一篇比较好的技术文章,都能快速的构建自己的实战场景,实战要做到“快”。之前加过一个好友,最开始学的是sql注入,打算用sqlmap,结果搞了两天,sqlmap没有装上。学习受阻,会极大降低结果产出,甚至不了了之。当我们实战还无法快的时候,需要反思问题在哪,快速构建好一个实战场景,是提升能力的关键。不过,不要为了快感而不停的去实战。某个漏洞已经掌握了,却还在用这个漏洞不停地刷,这就不对了,去做其他更有意义的事情、学习更多的知识去。
有些人会了几个漏洞,天天靠着这点经验去各种小网站挖,他们挖的不是洞,是寂寞。

3.积累经验
多积累自己的经验,整理自己的心得,这样才能对得起自己,不是么?以前乌云在的时候经常有人说,多去乌云看看人家怎么攻击的,学学人家思路。别人的经验,是用来学习的;自己的经验,是用来沉淀的。自己多总结,比如多写blog,写多了视野也就宽了,会发现又学会了很多更深入的知识,或者理解的更透彻、更充实。
当你不愿积累,只想一路狂奔,你挖的不是洞,是空虚。

1.png

我喜欢把事情梳理成环状,不喜欢做非持久的事情。就像上图,是我自己总结的,图也是自己画的,我的想法是:
安全知识掌握的越多,我们才有能力去实战更多,实战越多,经验就会越丰富,而丰富的经验有助于我们去接受更全面、更深入的知识,最终形成良性闭环。

好了,不吹牛逼了,接下来说点务实的例子。以下内容均为主观想法,若有异议,欢迎喷,也欢迎讨论。

  • 哪些知识重要?

linux操作系统、网络原理、数据库,没了。
我就想研究web安全,不需要上面知识吧?其实不然,很多XSS的检测程序都是linux上运行的,你要是想写一个xss自动检测脚本,可能也会在linux平台运行。有些xss,为了快速试水进行测试,可能需要抓包、改包,对网络不了解,总归有时候会不顺畅。还有这种案例,通过sql注入篡改页面,最终xss劫持所有用户。

我觉得,linux是安全测试的较好平台;我们的任何攻击,离不开网络;企业的存储,离不开数据库。
linux:鸟哥的linux私房菜——基础学习篇
网络:HTTP权威指南
数据库:sqlmap源码通读,集成了所有sql攻击精髓

  • 工具的使用

工具很重要,工具可以让我们快速、容易地尝试攻击,并通过攻击,来学习原理。一个好的安全测试人员,手头会有大量的工具。
常见工具都有哪些?i春秋的实验室,里面涵盖了大量的工具,对于新人有很好的参考价值,如图。

2.jpg

但是,我不建议搞太多工具,有些工具就不要再花时间和经历深入研究了,做个简单了解就好了。

就拿sql注入来说,有明小子、啊D注入等等,我建议不要再研究这些有时代回忆的工具了,这些工具不是不好,而是有些过时了。我觉得更应该花时间研究sqlmap,深入sqlmap,甚至针对特定场景给sqlmap写插件,以及尝试用brupsuit和sqlmap进行组合使用,这样才有意义。和同类其它工具相比sqlmap更具有:
功能强大,基本覆盖了啊D注入等工具的功能
社区支持,定期更新
扩展性强,支持开发者自行编写插件
平台移植,多平台通用,适用群体广

好的工具,不一定要具备上面的特点,但是我们要学会区分,尽量选择专业的工具,做专业的安全测试。

当然,有些经典,不会被时间的潮水所冲退,永远值得致敬:中国菜刀

  • 工具重要么

我很矛盾,刚说了工具很重要,又来问工具重要么。。。

工具重要,因为工具是利器。但也不是那么重要,因为怎么使用工具、组合工具、自己针对特定场景开发满足需要的工具,更重要。有人问过我一个问题“工具扫描不到网站漏洞,能通过手工注入渗透吗?”,我的回答:

说下我的个人理解,我觉得所有自动安全检测、黑客工具,这些都只能算作工具。
工具是“工作时所需要的器具”,而使用工具的人才是重点,不能只停留在工具层面,大部分成熟网站都不会直接被工具扫描到漏洞的。不然,大公司的安全部门,岂不是打酱油了?
我在安全方面一点都不厉害,甚至比较菜,不过我知道提升安全最重要的是经验。工具的教程到处都有,多学学多练练,“学精”只是时间问题。而重点,其实是提升经验,经验多的人,才会知道如何运用工具,在关键突破点上运用它。
当我们还处于被动使用工具检测时,说明我们经验太少,要学会主动使用工具。

举几个例子

1.对一个网站进行安全测试,直接上wvs跑,没问题,就真的没问题了么?
不见得,注册、找回密码、验证码突破,这些流程肯定都扫不到,这些是需要半人工半自动才能检测出来漏洞的。
在对大网站进行检测时,我每次都会花至少半个小时,详细的整理目标网站完整的账号流程,每一次数据传递、页面或流程的跳转,都要画到流程图中,然后看图,寻找每一个节点是否可能存在漏洞。可能的,就花时间深入分析,分析的时候就会用到各种工具,比如brupsuit、sqlmap、社工库等等。
这方面经验,也有很多可以参考,比如以前乌云库整理的密码找回漏洞挖掘流程:

3.png

除了这个,可能短信验证码也存在问题,也可以花时间测试:
短信平台相关常见问题整理

2.sql注入
我遇到过一些sql注入的点,都不是直接复制url地址传给sqlmap -u参数就能跑的。而普通工具,一般只能检测最简单的get和post。
对于一些数据进行处理过的,特别是js进行数据封装后才传给服务器的,直接跑注入脚本,网站接口肯定报错,格式不正确。
这里就需要有一定的接口调用经验、js经验,摸索出来网站数据传输做了什么特殊处理、是否有加密等等。

比如有的网站,检测提交文章注入点,post参数中是传了unixtime时间戳过去的,而时间戳太久,接口会报错。那么就需要每次提交的时候,更新时间这个参数。
再比如,有的网站登陆,密码是md5加密过才传输的,服务器对密码长度后台做了32位判断,我们进行注入检测时候,就需要每次sql注入都把参数变成32位,不足的用注释方式补全,超过32位的构造语句就要放弃。这个就完全不能直接用sqlmap来跑了。

3.目标网站目录扫描
对于有waf的网站来说,你直接用御剑扫描,可能刚扫了10个url地址他就给你封了。
等御剑扫描完毕,肯定会显示没有敏感目录泄露,没有经验的就会放弃了。
实际上,很可能有敏感目录泄露,而我们没发现。所以,每次扫描不到,我都会手动去目标网站进行尝试,发现网站都不能访问了,肯定说明ip被防火墙封了。
一般这类waf机制,都是异步延迟封锁,也就是你扫描了一定数量请求,才对此ip封锁。
那么解决办法就是,ip代理。
最简单的思路,直接把御剑的字典拿来用,然后用python写个脚本调用url库,每发几个请求就换一个代理,网上免费代理也很多。最终,还是可以成功的。
这个过程,工具没有用么?当然有用啊,御剑的字典起到了关键作用,但是御剑本身就不能直接用。

  • 漏洞场景的制作

我们学会了一个漏洞原理、或者了解到了一个最新的漏洞被公开,这个时候,大家最迫切的就是想测试。

但是,很多新人会有测试瓶颈,因为无法快速构建一个测试环境。比如,某天曝了一个wordpress 某某版本存在sql注入,如果我们的电脑环境没有php,那么还要自己创建环境。就算有php环境,部署特定版本wordpress也可能会遇到各种困难。

试想这个场景:
手握最新漏洞,怎奈测试环境不会弄,无处使用?

怎么办呢:
待到水复山重,将我办法记心中!

有两个网站,非常不错。一个是shodan,一个是zoomeye,类似产品有很多,但我只推这两款。这是什么工具呢?你可以把他们理解成搜索引擎,但是收录的不是常规网页,而是收录的服务器信息,端口信息,网站信息等等。

我觉得,这两个平台,是渗透测试人员非常好的打靶场!

这里主要介绍下zoomeye,谁叫我喜欢余弦呢,最初的zoomeye就是他主导负责建立的。

网址:https://www.zoomeye.org/

直接切入主题,高级搜索:

5.jpg

这里面,可以选择非常多的选项,帮助我们筛选网络空间中满足需求的服务器。

以下测试均为真实操作,不承担法律责任,请大家谨慎使用。

比如discuz的一个古老的漏洞,discuz X1.5版本,存在sql注入,可以利用sql注入上传文件,最终拿下服务器。
我们以这个漏洞为例子,并选择国家为日本(国内服务器、政府、机构尽量别惹):

6.jpg

搜索后,我们得到了大量服务器,注意:
这些服务器中,很大一部分都会存在漏洞!!!明白了吧,靶场怎么找!
7.jpg

挑一个200 ok的网址,然后拿着poc代码跑一下,利用漏洞将“马儿”上传到服务器。

当然,高雅一点的攻击者,会选择一些萌妹子的网站,比如这个(打了马赛克了):

8.jpg

利用sql注入上传文件,再用菜刀连上,以后萌妹子天天看:
9.jpg

另外,对于搜索一些漏洞,shodan做的很强大:
https://exploits.shodan.io/

10.jpg

这里给个建议:
shodan和zoomeye都非常好用,在搜索常见框架版本漏洞时zoomeye更擅长,shodan在漏洞查找等其他方面,感觉做的更好一些,建议两者都用,有时候也可以结合着使用,这样获得的数据更全面。

  • 多积累经验

我们要多去积累经验,推荐新人多去写blog,不要嫌弃自己写的blog技术门槛低,谁又不是从低走向高的呢?

推荐几个blog,值得学习,供参考:
Solo https://blog.medowo.me/

离别歌 https://www.leavesongs.com/

3xp10it http://3xp10it.cc/

lostwolf 's bloghttp://wolvez.club/

王松_Striker 安全盒子创始人http://www.hackersb.cn/

HackBraid http://www.cnbraid.com/

Flanker Sky https://blog.flanker017.me/

还有,推荐大家一款工具:XMIND,这款工具主要是帮助我们构建思维导图。通过思维导图,我们可以非常清晰地梳理所学的知识,包括但不限于漏洞的分类、攻击流程分析、所学知识汇总等等。

具体可参考:
各种安全思维脑图

写在最后,送给那些还在坚持学习安全的人们:

找寻

雾霾遮挡住月色朦胧
让我不去喘息
在这个年底
忧郁着不想去回忆

面对这苍白的显示器
好像看到自己
听到了他们
鼠标的一声声点击

疲倦的目光带着期许
多久给我答复
躁动的心悸
谁在诉说青春美丽

噢,梦想
那不是我的唯一
噢,梦想
那就是我的所有

人们还在努力
我应该像他们那样学习
可是我想要的
相似不曾识
相见不能爱

相关文章
|
6月前
|
编译器 C++
【c++】入门4
【c++】入门4
49 2
|
6月前
|
存储 安全 编译器
【c++】入门3
【c++】入门3
49 1
|
机器人 Java Linux
Webots机器人仿真入门(一)
Webots是一个开源的移动机器人仿真模拟器,内置了许多机器人模型。机器人造价普遍超出新手承受范围,对于新手来说使用仿真软件入门是一个不错的选择。
Webots机器人仿真入门(一)
|
5月前
|
编译器 Linux C语言
1.C++入门(中)
1.C++入门(中)
|
6月前
|
编译器 C语言 C++
【c++】入门1
【c++】入门1
47 2
|
6月前
|
存储 安全 编译器
C++入门(2)
C++入门(2)
43 0
|
存储 安全 小程序
c++入门(下)
c++入门(下)
|
编译器 Linux C语言
【C++】入门(上)
【C++】入门(上)
194 0
【C++】入门(上)
|
编译器 C语言 C++
【C++】C++入门(上)
【C++】C++入门(上)
62 0
|
存储 安全 编译器
【C++】C++入门(下)
【C++】C++入门(下)
【C++】C++入门(下)