shell基础与web安全
文章目录
shell是什么?
Linux和unix有什么区别?
references:
UNIX 与 Linux 之间的关系是一个很有意思的话题。在目前主流的服务器端操作系统中,UNIX 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞生于 20 世纪 90 年代初,++可以说 UNIX 是操作系统中的"老大哥",后来的 Windows 和 Linux 都参考了 UNIX++。
那么具体而言是什么样的关系呢?
共通之处:
Linux 是一个类似 Unix 的操作系统,Unix 要早于 Linux,Linux 的初衷就是要替代 UNIX,并在功能和用户体验上进行优化,所以 Linux 模仿了 UNIX(但并没有抄袭 UNIX 的源码),使得 Linux 在外观和交互上与 UNIX 非常类似。“UNIX 是 Linux 的父亲”。
区别之处:
- UNIX 系统大多是与硬件配套的,也就是说,大多数 UNIX 系统如 AIX、HP-UX 等是无法安装在 x86 服务器和个人计算机上的,而 Linux 则可以运行在多种硬件平台上;
- UNIX 是商业软件,而 Linux 是开源软件,是免费、公开源代码的。
unix/Linux系统架构
UNIX/Linux 系统可以粗糙地抽象为 3 个层次(所谓粗糙,就是不够细致、精准,但是便于初学者抓住重点理解),如图所示。底层是 UNIX/Linux 操作系统,即系统内核(Kernel);中间层是 Shell 层,即命令解释层;高层则是应用层。
- 内核层
内核层是 UNIX/Linux 系统的核心和基础,它直接附着在硬件平台之上,控制和管理系统内各种资源(硬件资源和软件资源),有效地组织进程的运行,从而扩展硬件的功能,提高资源的利用效率,为用户提供方便、高效、安全、可靠的应用环境。
2) Shell层
Shell 层是与用户直接交互的界面。用户可以在提示符下输入命令行,由 Shell 解释执行并输出相应结果或者有关信息,所以我们也把 Shell 称作命令解释器,利用系统提供的丰富命令可以快捷而简便地完成许多工作。
3) 应用层
应用层提供基于 X Window 协议的图形环境。X Window 协议定义了一个系统所必须具备的功能(就如同 TCP/IP 是一个协议,定义软件所应具备的功能),可系统能满足此协议及符合 X 协会其他的规范,便可称为 X Window。
现在大多数的 UNIX 系统上(包括 Solaris、HP-UX、AIX 等)都可以运行 CDE (Common Desktop Environment,通用桌面环境,是运行于 UNIX 的商业桌面环境)的用户界面;而在 Linux 上广泛应用的有 Gnome、KDE 等。
shell 是什么?
从前文我们已经知道不管是unix系统还是Linux系统Shell 层是与用户直接交互的界面。用户可以在提示符下输入命令行,由 Shell 解释执行并输出相应结果或者有关信息,所以我们也把 Shell 称作命令解释器,利用系统提供的丰富命令可以快捷而简便地完成许多工作。
Shell 是 Linux 的命令解释器,简单来说,可以理解为 Linux 系统提供给用户的使用界面,而 Linux 的 Shell 是 Bash。
Bash 的内容非常之多,包括 Bash 操作环境的构建、输入/输出重定向、管道符、变量的设置和使用,当然还包括 Shell 编程。
web安全与shell
references:
《白帽子讲web安全》吴翰清著 第八章 文件上传漏洞
概念
WebShell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将这些asp或php后门文件与网站服务器
WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问这些asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的(可以上传下载文件,查看数据库,执行任意程序命令等)
现象
运行中的网站遭到攻击后,++系统cpu一直保持在100%,有进程也干不掉,然后客户就进行杀毒了,然后就把所有的exe文件都杀了,然后系统也就很多功能不正常了,数据库的服务也干掉了++,经检查后发现,发现网站目录下面被上传了大量的asp、php,htm的页面,里面的目录也有黑客上传了自己的目录,
如何实现的?
- 利用系统前台的上传业务,上传WebShell脚本,上传的目录往往具有可执行的权限。在web中有上传图像、上传资料文件的地方,上传完后通常会向客户端返回上传的文件的完整URL信息,有时候不反馈,我们也可以猜到常见的image、upload等目录下面,如果Web对网站存取权限或者文件夹目录权限控制不严,就可能被利用进行webshell攻击,攻击者可以利用上传功能上传一个脚本文件,然后在通过url访问这个脚本,脚本就被执行。然后就会导致黑客可以上传webshell到网站的任意目录中,从而拿到网站的管理员控制权限。同时文件上传后所在的目录是web容器所覆盖到的路径。
- 如像FCKEditor这样的富文本编辑器(它带有文件上传功能呢),当其一般作为第三方应用集成到网站中时会因为文件上传的目录一般默认会被web容器所解析,很容易形成文件上传漏洞。(解决方式是删除文件上传代码)
- 00截断绕过文件上传检查功能。一般通过检查文件的后缀名核查文件安全,如
xxx.php[\0].jpg
会因为[\0]
是16进制的0x00字符截断后绕过了文件类型判断 - 有时是通过检查文件头来验证文件类型的,此时攻击者也会用伪造文件头的方式达到攻击的效果。
- 客户获取管理员的后台密码,登陆到后台系统,利用后台的管理工具向配置文件写入WebShell木马,或者黑客私自添加上传类型,允许脚本程序类似asp、php的格式的文件上传。
- 利用数据库备份与恢复功能获取webshell。如备份时候把备份文件的后缀改成asp。或者后台有mysql数据查询功能,黑客可以通过执行select…in
To outfile 查询输出php文件,然后通过把代码插入到mysql,从而导致生成了webshell的木马。 - 系统其他站点被攻击,或者服务器上还搭载了ftp服务器,ftp服务器被攻击了,然后被注入了webshell的木马,然后网站系统也被感染了。
- 黑客直接攻击Web服务器系统,Web服务器在系统层面也可能存在漏洞,如果黑客利用其漏洞攻击了服务器系统,那么黑客获取了其权限,则可以在web服务器目录里上传webshell文件。
出现webshell的根本原因
- web server本身特性相关的功能造成的。
- apache文件解析问题:apache 1.x 2.x中对文件名的解析:从后向前解析,一直遇到一个apache认识的文件类型为止。
- WebShell能够被注入很大程度是由于win2003
IIS6.0的环境下造成的。在IIS6.0环境下,我们上传一个test.asp;.jpg的shell文件,发现在上传的时候,能够成功上传,因为监测为jpg的图片文件,但是在iis6.0解析的时候却当成了asp的动态网页文件被执行(因为IIS6.0环境下截断字符变成了;)。因此我们知道webshell木马常见的特征:x.asp;.png,x.php;.txt… - PHP CGI路径解析问题
- WebShell的恶意脚本是和正常的网页文件混在一起的,同时被黑客控制的服务器和远处主机都是通过80端口来传递数据的,不会被防火墙拦截,一般也不会在系统日志中留下记录,具有极强的隐蔽性,一般不容易被查杀。(和正常网页文件混在一起不会被防火墙拦截)
防范被植入webshell
- 加强权限管理,对敏感目录进行权限设置,限制上传目录的脚本执行权限,不允许执行脚本。建议用IIS6.0以上版本,同时不要用默认80端口。
- 文件上传后做静态文件处理一方面方便使用缓存加速,降低性能损耗,另一方面杜绝脚本执行可能。
- 判断文件类型:通过MIME type(MIME(多用途网际邮件扩充协议)),后缀检查结合白名单的方式进行判断文件类型并加以控制。
- 即使能够上传了文件,也让攻击者访问这个文件变得困难。
- 随机数改写文件名和文件路径。
- 单独设置文件服务器的域名。
- 程序修补漏洞,程序要优化上传x.asp;.png这样类似的文件。
- 加强管理员的安全意识,在服务器上不浏览不安全网站,定期修改密码,同时对服务器上的ftp类似的也要加强安全管理,防止被系统的木马感染。
- web服务器方面,开启防火墙,杀毒软件等,关闭远程桌面这些功能,定期更新服务器补丁和杀毒软件。