(2)服务器把本应私有的数据放到了可公开访问的区域。用户Web应用需要保存一些私有的、不能从Web访问的数据,则根本无法找到满足要求的位置。
(3)服务器信赖了来自不可信赖数据源的数据。常见的安全问题是CGI程序或PHP脚本的质量低下,它们信任了来源不可靠的参数,未经严格的检查就立即使用CGI参数。
防范措施:
(1)提供不应该提供的服务的防范措施:只开放必需的端口,关闭其余的端口,关闭在自己的系统上运行那么多的服务,而这些服务原本无需在正式提供Web服务的机器上运行,或者这些服务原本无需面向公众开放。对于所有向公众开放的服务,应该密切关注其程序的最新版本和安全信息,应该做好一旦发现与这些程序有关的安全问题就立即升级软件的准备。
(2)服务器公用目录下的私有数据安全性的防范措施:设置Web服务器,使它既提供私有数据存储又提供公用页面目录。
(3)数据源的可靠性防范措施:通常,来自外面的数据(比如表单变量的数据)应该先传入检验其合法性的函数。只有当检验函数表示表单提供的数据是安全的,才可以把表单数据复制到会话变量。Web应用应该把这种检查集中到一起进行,应用的所有其余部分永远不应该直接接触表单变量,而是应该使用经过检查且确认安全的会话数据。
一、SQL注入漏洞
SQL 注入攻击( SQL Injection ),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。
通常情况下, SQL 注入的位置包括:
(1)表单提交,主要是POST 请求,也包括GET 请求;
(2)URL 参数提交,主要为GET 请求参数;
(3)Cookie 参数提交;
(4)HTTP 请求头部的一些可修改的值,比如Referer 、User_Agent 等;
(5)一些边缘的输入点,比如.mp3 文件的一些文件信息等。
SQL注入的危害不仅体现在数据库层面上, 还有可能危及承载数据库的操作系统;如果SQL 注入被用来挂马,还可能用来传播恶意软件等,这些危害包括但不局限于:
(1)数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。作为数据的存储中心,数据库里往往保存着各类的隐私信息, SQL 注入攻击能导致这些隐私信息透明于攻击者。
(2)网页篡改:通过操作数据库对特定网页进行篡改。
(3)网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
(4)数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被篡改。
(5)服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
(6)破坏硬盘数据,瘫痪全系统。
二、跨站脚本漏洞
跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、窃取密码、传播恶意代码等攻击。
XSS攻击使用到的技术主要为HTML和Javascript,也包括VBScript和ActionScript等。XSS攻击对WEB服务器虽无直接危害,但是它借助网站进行传播,使网站的使用用户受到攻击,导致网站用户帐号被窃取,从而对网站也产生了较严重的危害。
XSS类型包括:
(1)非持久型跨站:即反射型跨站脚本漏洞,是目前最普遍的跨站类型。跨站代码一般存在于链接中,请求这样的链接时,跨站代码经过服务端反射回来,这类跨站的代码不存储到服务端(比如数据库中)。上面章节所举的例子就是这类情况。 (2)持久型跨站:这是危害最直接的跨站类型,跨站代码存储于服务端(比如数据库中)。常见情况是某用户在论坛发贴,如果论坛没有过滤用户输入的Javascript代码数据,就会导致其他浏览此贴的用户的浏览器会执行发贴人所嵌入的Javascript代码。 (3)DOM跨站(DOM XSS):是一种发生在客户端DOM(Document Object Model文档对象模型)中的跨站漏洞,很大原因是因为客户端脚本处理逻辑导致的安全问题。
三、弱口令漏洞
弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。设置密码通常遵循以下原则:
(1)不使用空口令或系统缺省的口令,这些口令众所周知,为典型的弱口令。
(2)口令长度不小于8个字符。
(3)口令不应该为连续的某个字符(例如:AAAAAAAA)或重复某些字符的组合(例如:tzf.tzf.)。
(4)口令应该为以下四类字符的组合,大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符。每类字符至少包含一个。如果某类字符只包含一个,那么该字符不应为首字符或尾字符。
(5)口令中不应包含本人、父母、子女和配偶的姓名和出生日期、纪念日期、登录名、E-mail地址等等与本人有关的信息,以及字典中的单词。
(6)口令不应该为用数字或符号代替某些字母的单词。
(7)口令应该易记且可以快速输入,防止他人从你身后很容易看到你的输入。
(8)至少90天内更换一次口令,防止未被发现的入侵者继续使用该口令。
四、HTTP报头追踪漏洞
HTTP/1.1(RFC2616)规范定义了HTTP TRACE方法,主要是用于客户端通过向Web服务器提交TRACE请求来进行测试或获得诊断信息。当Web服务器启用TRACE时,提交的请求头会在服务器响应的内容(Body)中完整的返回,其中HTTP头很可能包括Session Token、Cookies或其它认证信息。
攻击者可以利用此漏洞来欺骗合法用户并得到他们的私人信息。该漏洞往往与其它方式配合来进行有效攻击,由于HTTP TRACE请求可以通过客户浏览器脚本发起(如XMLHttpRequest),并可以通过DOM接口来访问,因此很容易被攻击者利用。
五、Struts2远程命令执行漏洞
ApacheStruts是一款建立Java web应用程序的开放源代码架构。Apache Struts存在一个输入过滤错误,如果遇到转换错误可被利用注入和执行任意Java代码。 网站存在远程代码执行漏洞的大部分原因是由于网站采用了Apache Struts Xwork作为网站应用框架,由于该软件存在远程代码执高危漏洞,导致网站面临安全风险。
六、文件上传漏洞
文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过Web访问的目录上传任意文件,包括网站后门文件( webshell ),进而远程控制网站服务器。因此,在开发网站及应用程序过程中,需严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关目录的执行权限,防范webshell攻击。
七、私有IP地址泄露漏洞
IP地址是网络用户的重要标示,是攻击者进行攻击前需要了解的。获取的方法较多,攻击者也会因不同的网络情况采取不同的方法,如:在局域网内使用Ping指令, Ping对方在网络中的名称而获得IP;在Internet上使用IP版的QQ直接显示。最有效的办法是截获并分析对方的网络数据包。攻击者可以找到并直接通过软件解析截获后的数据包的IP 包头信息,再根据这些信息了解具体的IP。
针对最有效的“数据包分析方法”而言,就可以安装能够自动去掉发送数据包包头IP信息的一些软件。不过使用这些软件有些缺点, 譬如:耗费资源严重,降低计算机性能;访问一些论坛或者网站时会受影响;不适合网吧用户使用等等。
现在的个人用户采用最普及隐藏IP 的方法应该是使用代理,由于使用代理服务器后,“转址服务”会对发送出去的数据包有所修改,致使“数据包分析”的方法失效。一些容易泄漏用户IP 的网络软件(QQ 、MSN 、IE 等)都支持使用代理方式连接Internet ,特别是QQ 使用“ ezProxy ”等代理软件连接后, IP版的QQ都无法显示该IP地址。虽然代理可以有效地隐藏用户IP,但攻击者亦可以绕过代理, 查找到对方的真实IP地址,用户在何种情况下使用何种方法隐藏IP,也要因情况而论。
八、未加密登录请求
由于Web 配置不安全, 登陆请求把诸如用户名和密码等敏感字段未加密进行传输,攻击者可以窃听网络以劫获这些敏感信息。
九、敏感信息泄露漏洞
SQL 注入、XSS、目录遍历、弱口令等均可导致敏感信息泄露,攻击者可以通过漏洞获得敏感信息。
Web应用漏洞原理
Web应用攻击是攻击者通过浏览器或攻击工具,在URL或者其它输入区域(如表单等),向Web服务器发送特殊请求,从中发现Web应用程序存在的漏洞,从而进一步操纵和控制网站,查看、修改未授权的信息。
max_execution_time参数:php最大执行时间(如果某些php执行需要很久,请适量加大此参数的值)。max_input_time参数:php处理提交参数最大时间(一般保持默认,不用修改)。
memory_limit参数:php消耗内存限制
(一般保持默认,不用修改)。[/quote]
[quote]第29步:\>修改PHP配置文件php.ini
register_globals参数:是否打开php全局变量(某些程序需要,可以设置为On)。[/quote]
[quote]第30步:\>修改PHP配置文件php.ini
extension_dir参数:设置php扩展库目录,因为php安装在c:\,所以这了务必设置为
CETagParser
/CETagParser
extension_dir
=
"c:/php/extensions/"
CETagParser
/CETagParser
[/quote]
[quote]第31步:\>修改PHP配置文件php.ini
file_uploads参数:是否允许文件上传(一般设置为On即为允许)。
upload_tmp_dir参数:文件上传临时目录(一般可设置为windows的临时目录)。
upload_max_filesize参数:文件上传容量最大限制
(根据需要修改,注意单位)。[/quote]
[quote]第32步:\>修改PHP配置文件php.ini
打开GD模块:去掉extension=php_gd2.dll前面的即可,如果需要打开其他模块或添加其他模块,也可以在此添加。[/quote]
[quote]第33步:\>修改PHP配置文件php.ini
session.save_path参数:设置php
session文件临时目录(一般可设置为windows的临时目录)。
CETagParser
/CETagParser
session.save_path
=
c:/windows/temp/
CETagParser
/CETagParser
[/quote]
[quote]第34步:\>修改httpd.conf文件使Apache支持PHP
httpd.conf文件路径:C:\Apache\conf\httpd.conf
找到httpd.conf文件末尾,添加如下参数行
CETagParser
/CETagParser
Alias
/php-bin/
"c:/Apache/php-bin/"
ScriptAlias
/php/
"c:/php/"
AddType
application/x-httpd-php
.php
.php3
Action
application/x-httpd-php
"/php/php.exe"
CETagParser
/CETagParser
Alias
/php-bin/
"c:/Apache/php-bin/"参数:对c:\php-bin目录做php-bin的影射。
ScriptAlias
/php/
"c:/php/"参数:对c:\php目录做php脚本影射。
AddType
application/x-httpd-php
.php
.php3参数:添加php/php3的脚本类型。
Action
application/x-httpd-php
"/php/php.exe"参数:设置php/php3的脚本的解析动作。
修改完毕保存httpd.conf,退出即可。[/quote]
[quote]第35步:\>PHP配置完成
Restart系统中的Apache服务,使刚才配置生效。[/quote]
第36步:\>PHP成功运行
将附件中的PHP探针解到C:\Apache\php-bin目录,用IE访问以下URL。
CETagParser
/CETagParser
http://127.0.0.1/php-bin/env.php
CETagParser
/CETagParser
可以看到,php已经可以正常运行了。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)