一, 错误的配置
错误的配置有系统环境的配置不当和系统应用的配置不当,例如普通用户具有管理员权限、使用应用程序的默认配置等等,通过google或者baidu都可以使用搜索语法直接搜索到有配置漏洞的网站和服务器,例如phpmyadmin,MySQL默认配置,sqlserver sa空口令,以及任意文件读取,黑客可以通过这些轻而易举地入侵存在这些漏洞的服务器
二, 主机开放的端口
主机上的端口一直都是风险评估的重点工作,而正是这些端口存在各种各样的漏洞导致黑客可以利用漏洞直接入侵主机。常见的有过漏洞的端口:
21端口 ftp服务
22端口 openssh服务
23端口 telnet服务
25端口 邮件服务
53端口 DNS服务
80端口 http服务
88端口 kerbos sec服务
110端口 pop3服务
111端口 sunrpc/rpcbind
135端口 DCOM服务
137/138/139 netbios服务
443端口 https服务
445端口 smb服务
1433端口 sqlserver服务
1521端口 oracle服务
3264端口 IBM Lotus Notes服务
3306端口 mysql服务
3389端口 rdp服务
8080端口 tomcat服务/http proxy
9000端口 php-fpm服务
三, 暴力破解
暴力破解也是当今入侵的主流手段之一,它的利用原理就是使用相关的工具+事先准备好的字典进行强行猜解用户名和密码,这种入侵手法直截了当,但是也需要依靠运气,更依赖于一个强大的字典,有的人跑一天都没能跑出用户密码,有的人几个小时甚至几分钟就能爆出用户名密码,这种方式受客观条件限制。例如用户设置的密码超级复杂,那么对应得字典中如果没有收录的话一样是扯淡。所以使用暴力破解字典很重要。
四, 脆弱性应用程序
这里的脆弱性应用程序是指那些存在漏洞的应用程序,例如struts2漏洞,dedcms漏洞,wordpress漏洞,IIS漏洞,thinkphp漏洞,tomcat漏洞,zabbix漏洞,mysql漏洞,oracle漏洞,redis漏洞等等,举不胜举。
这些都是运行在服务器上的应用程序。凡事都有2面性,没有100%完美的东西,所以存在漏洞的应用也多,随之而来的安全问题也不可忽视,稍不注意你的服务器可能就已经处在被人的掌控之中了。
五, SQL注入
Sql注入堪称经典,用户登录某个网站时输入用户名和密码,这是会在浏览器产生一个http请求,这个请求会到达用户浏览的这个网站所在的服务器上的数据库,到达数据库后,会去数据库里头查询用户输入的用户是否存在,密码是否正确,如果存在则验证通过,如果不存在则提示用户名密码错误,这是我们日常网上冲浪经常要做的事情。假设现在我们浏览某个页面时当通过抓包工具分析我们浏览器产生的这个http请求,这时会发现请求的url类似下面这样:
http://xxx.xxx.com/index.jsp?item=7
现在假如这个网站没有一个强有力的sql注入防护层或者过滤层的话,那么我们可以在?id=7后面继续添加语句,例如添加and 1=2 union all select @@global.version_compile_os from mysql.user /*
20%表示空格
这样的请求如果服务器成功处理并且到达数据库的话,那么数据库里的语句则变成了select id from table where id=7 and 1=2 union all select @@global.version_compile_os from mysql.user /*;
此时数据库会成功解析这条语句并且返回结果,这里的构造语句会返回操作系统信息。
当我们可以利用sql语句操作数据库的时候就意味着我们可以利用数据库与主机进行交互,这时候如果权限够大的话我们还可以利用sql语句获取到网站的根目录,并且可以进一步上传木马进行getshell,最后控制主机。
六, 缓冲区溢出
缓冲区溢出攻击的原理其实利用的是c/c++开发人员对代码的不严谨产生的数据越界行为进行利用,例如数组越界读写等等。这里面涉及到计算机底层的知识,具备缓冲区溢出攻击能力的黑客不在少数,虽然现在的操作系统越来越多的加强了对堆栈数据的保护,但是那也是新版的操作系统,一些老版本的操作系统依然处在危险之中。有人可能觉得那好啊,我升级我的操作系统呗,这样不就高枕无忧了吗,很不幸,操作系统升级了,但是操作系统上的一些应用也是存在这些漏洞。黑客可以利用这些应用的数据越界读写执行shellcode并控制主机。网上的相关案例不少,以及各大安全服务平台的报告也不少。