怎样从零学起成为一名黑客?
怎样从零学起成为一名黑客?黑客,对于很多人来说,是一个神秘的代名词,加之影视作品夸张的艺术表现,使得黑客这个本来只专注于技术的群体,散发出亦正亦邪的神秘色彩。
黑客源自英文hacker一词,最初曾指热心于计算机技术、水平高超的电脑高手,尤其是程序设计人员,逐渐区分为白帽、灰帽、黑帽等。
其中,白帽黑客被称为道德黑客。他们不会非法入侵用户网络,而是通过一系列测试检查公司安全系统的效率;黑帽黑客恰好与白帽黑客相反,他们往往为了个人利益去破坏用户网络数据,以此进一步实施网络犯罪;而灰帽黑客,同时拥有白帽和黑帽黑客的属性,围绕利益寻找足够的补偿。
如果是想利用学到的技术非法牟利,奉劝尽早放弃,君子爱财取之有道,想成为一名合格的白帽黑客,要遵守“江湖规矩”。
下面来看一看,如何从零开始成为一名(白帽)黑客。
早期的互联网非常的单调,一般只有静态页面,现在,随着技术的发展,web上大多数站点实际上是web应用程序,在服务器和浏览器之间进行双向的信息传递。他们支持注册登录,金融交易,搜索及用户创作的内容。用户只需要拥有一个浏览器,就能实现各种功能。
Web 是指一个网站的前端页面到后端服务,比如我们常见的 Javascript、PHP、Python、Mysql、jQuery、Docker 等,包括开发、运维这些服务。
所以 Web 安全也就是从安全的角度探索 Web 的一种方式。
为了能够更简单的理解一些常见漏洞,我们首先来看一下这份试卷:试卷
考生姓名:__________考生学号:__________
一、诗歌补写
床前明月光,___________。春眠不觉晓,___________。
二、数学运算(在括号内填入数字)
3500 + 400 * 3 / 2 + 1 =( )4 ( 1 + 2) / 3 * 400 +500 = ( )
考生姓名:__________考生学号:__________首先我们来看这个,名字和学号的填写,这里有“漏洞”吗?
答案是:有。
学生的姓名和学号都写在这儿,没有做任何保护措施,因此,你只要偷看了某人的试卷上的这部分内容,然后把你的试卷的上的姓名和考生学号写成和他一样的即可伪装成他的身份。
漏洞攻击成功。来看下一个:
一、诗歌补写
床前明月光,___________。春眠不觉晓,___________。
这道题有漏洞吗?
答案是:有。
这道题的答案本来应该是“疑是地上霜”和“处处闻啼鸟”
但是,问题中并没有规定答案里不能添加标点符号,所以,我完全可以把“疑是地上霜,举头望明月,低头思故乡”以及“处处闻啼鸟,夜来风雨声,花落知多少”当做答案写进去。
漏洞再次进攻成功。下一个:
二、数学运算(在括号内填入数字)3500 +400 * 3 / 2 + 1 = ( )4 ( 1 + 2) / 3 * 400 +500 = ( )
这道题有漏洞吗?
答案是:有。
出题者规定了只能填入数字,但却没有说是什么数字,也没有规定多少位,那么我的答案可以是 中文数字「壹佰壹拾圆」、罗马数字「MCI」或 二进制「0000000000001101」。
漏洞第三次进攻成功。
这份试卷简单的模拟了Web漏洞的攻击思想,在实际中,我们打开一个网页提交登录或者是搜索都会经过服务器做的一系列处理又回到浏览器,在这个过程中我们提交的数据会被带入到一系列的填空题中,有的是我们能猜到的,有的则是意想不到的,有的会经过SQL查询进行填空,有的会被带入到命令行中进行执行,最后又把结果返回给浏览器进行填空,也就是最后我们看到的结果。
在数据的传输中,我们可以把 web 简单的分为几个层次:
- 浏览器:浏览器即客户端,提供客户端和服务器端的数据信息交互。
- http:客户端与web服务器进行交互时就存在web请求,这种请求都基于统一的应用层协议——HTTP协议来交互数据。http属于轻量级协议,无需连接,提供了对通信错误的容错性。
- 中间件:中间件是位于平台(硬件和操作系统)和应用之间的通用服务。
- Server容器:Server容器负责解析用户请求和脚本语言,类似的有Tomcat,JBoss等。我们访问网页看到是web容器处理后的内容。
- 数据库:动态页面可提供交互式的信息查询服务,主要依赖于web数据库的实现,对外提供包含 表单的Web页面作为访问接口,查询结果也以包含数据列表的Web页面形式返回给用户。
当然除了这些数据也有可能流向不些不可见的第三方服务商。
下图就展示了数据的传输流程,以及不同阶段经常出现的漏洞及其原因:
我们常见的Web漏洞类型主要有SQL注入、XSS、远程命令执行以及越权等。以下我们分别用举例的形式为大家介绍这几种漏洞。
(SQL注入)
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
- select * from username = ____ and password=_____
- select * from username "test" or ""="" and password="123456"
(XSS)
XSS则是攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
- <p style='color:red'>你好啊,尊敬的______<p>
- <p style='color:red'>你好啊,尊敬的 xxx<script>alert(1)</script><p>
(远程命令执行)
而远程命令执行,是用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致执行命令。
- ping _______
- ping baidu.com & wget xxxxxxxxxxx
(越权)
越权漏洞是比较常见的漏洞类型,越权漏洞可以理解为,一个正常的用户A通常只能够对自己的一些信息进行增删改查,但是由于程序员的一时疏忽 ,对信息进行增删改查的时候没有进行一个判断,判断所需要操作的信息是否属于对应的用户,可以导致用户A可以操作其他人的信息。
- Cookie: uid=11426;
- Cookie: uid=1;
关于越权,就像我们刚刚试卷体中的姓名部分。
再展示一个数据的传输流程图,以便直观清晰的看到,数据在各层中是怎样运作的,以及可能发生的漏洞:
了解了这几个漏洞之后我们可以看到原理都有些类似,也很简单,当然我们只要不再局限于概念名词就会发现 web 安全的大部分漏洞都很简单。更多时候,发现一个复杂的漏洞需要是只是耐心。 概念,不是一个神圣的东西,概念很多时候只是bullshit。很多概念的产生是因为需要认识和概括某种存在着的现象而不得已产生的,概念也许是必须的但并不是必然如此的。
换句话说,概念仅可以被看做是一种努力尝试描述后的结果之一。或者也可以说概念是提出这个概念的人自嗨的产物,跟其他人关系不大。甚至,有些概念是‘别有用心’的发明来合理化某种其实不必合理化但是存在的现象。
所以不要把自己拘泥于一个这样的概念中来思考所面临问题的实质。把概念忘了,你才可能看清楚你和事物本身的关系。
完全没有基础该从哪下手? 完全没有基础学习 Web 安全是件比较难的事情,所以建议如下:
1、工具
2、先用 AWVS 扫几个测试网站大体了解一下 testphp.vulnweb.com/htttestasp.vulnweb.comhttp://testaspnet.vulnweb.com
3、把扫到的漏洞复现,了解怎么利用,主要了解:XSS、SQL 注入、远程代码执行
4、书籍《细说 PHP》
5、使用 PHP 写一个列目录的脚本,可以通过参数列出任意目录的列表
6、使用 PHP 抓取一个网页的内容并输出
7、使用 PHP 抓取一个网页的内容并写入到Mysql数据库再输出
8、手工找 http://testphp.vulnweb.com/ 的漏洞,对比 AWVS 的结果
9、书籍《黑客攻防---web安全实战详解》和《安全之路:Web渗透技术及实战案例解析(第2版)》
10、还是看不懂就找自己能看得进的 Web 安全的书。
此外,这是一条坚持的道路,三分钟的热情劝君尽早放弃;多练多想,不要离开了教程什么都不会了,最好看完教程自己独立完成技术方面的开发。
文章整理:https://www.zhihu.com/question/276408308/answer/1083103316,侵删!