web安全-1.1 服务器是如何被入侵的(背书连载)

在介绍web安全的内筒之前,我们先了解一下一台在互联网中的服务是如何被攻击者入侵的。

攻击者想要对一台计算机进行渗透,有一个条件是必须的:就是攻击者的计算机与服务器必须能够正常通信。服务器提供各种服务供客户使用,那么此时服务器是如何与客户端通信的呢?依靠的就是端口。攻击者入侵也是靠端口,或者说是计算机提供的服务。当然不排除一些“物理黑客”,直接进入服务器所在的机房对服务器动手。

过去的黑客攻击都是直接针对目标进行攻击,比如端口扫描、一些服务的密码爆破(如:FTP、数据库)、缓冲区溢出攻击等方式直接获取目标权限。而现在,这种直接对服务器进行溢出攻击的方式越来越少,因为系统的溢出漏洞太难挖掘了,新的战场已转移到web之上。

早期的互联网是非常单调的,一般只有静态的文档,随着技术的发展,互联网慢慢变得越来越有意思了。

是什么让web变得如此强大?它离不开四个主要特点:数据库、编程语言、web容器和优秀的web应用程序设计者,这四个缺一不可。

优秀的程序员设计给兴华的程序,编程语言将这些设计变为真实存在的,且悄悄地与数据库连接,让数据库存储好这些数据,而web容器负责的则是作为终端解析用户的请求和脚本语言等。当用户通过统一资源定位符(url)访问web时,最终看到的是web容器处理后的内容,即HTML文档。

Web 默认运行在服务器的80(http)端口和443(HTTPS)端口。

当然了不要以为现在的web已经很安全,大部分的web开发者没有安全意思,总以为黑客的存在很神秘,自己接触不到;其次,开发者并不知道哪里的代码存在“bug”,这时的bug并不是代码的某些功能不完善,而是代码出现的漏洞。

说了那么多,那么到底攻击者是如何攻陷服务器的呢?到底有哪些方面的漏洞呢?请看下图:

攻击者渗透时,直接对目标下手一般都是有三种手段,我知道了攻击才能防御。

C段渗透:攻击者通过渗透同一网段内的一台主机对目标主机进行ARP等手段的渗透。

社会工程学:社会工程学是高端攻击者必须掌握的一个技能,渗透服务器有时不仅仅只靠技术。(后续再详细讲解社工)

Services:很多传统的攻击方式是直接针对服务进行溢出,至今一些软件可能仍然存在这种溢出漏洞。像之前的MySQL就出现过。(这也是我们以后的重点介绍部分)

如何学好web安全:我们是白帽子(必须要找到所有的程序漏洞,才能保证系统的安全),并不是黑客(只需要找到程序的一个突破口,拿到权限即可)。所以懂编程很重要也是必不可少的。

C/C++:永不衰败的语言,适合偏底层。比如,windows操作系统80%以上都是C/C++完成的。同样适合写应用层C/S架构的软件。漏洞:NC、LCX、DNSSniffer、Hydra、溢出、远程控制等必备知识点。

Java:真正的跨平台语言,“一次编译,处处运行”。无论是C/S、B/S都用到到java,一般大型企业都是java开发的web。例如:burpsuite、reDuh、Paros proxy、webscarab、owasp zap等。

C#:与Java有70%的雷同,同样适用于开发应用层程序C/S、B/S等,拥有强大的.NET Framework 支持,但不能跨平台。例如:pangolin、jsky、微软官网等

PHP:跨平台最有争议的语言,脚本语言,无需编译,但PHP的能力仅限于web,速度较慢,也是大多数web开发者必熟悉的语言。

Python:跨平台,无需编译,适合一些shell操作,在web领域开发较快、运行较慢(相对于C/C++来说),不过高安全的都会学习,目前最火的AI,大数据也是Python之下的。多数的安全工具都是用Python写的,例如:sqlmap、w3af、backtrack等

HTML:前端语言,必备语言。

JavaScript:熟悉,XSS用的到。

​数据库:数据库很多种:Oracle、MySQL、SQLserver、DB2、postgresql等,SQL语言语句必须掌握。

以上技能get的差不多了,才可以开始学习后面章节。