目录介绍:
- 1、Apache/PHP环境,怎么防止WebShell啊,头疼
- 2、SpringMVC如何有效的防止XSS注入?
- 3、对自己电脑上的Apache服务器进行XSS攻击,能不能在报文里看出问题
- 4、如何验证apache httponly cookie漏洞
- 5、Apache TomcatHTTP响应消息头泄露信息的处理
Apache/PHP环境,怎么防止WebShell啊,头疼
etc/passwd,/etc/init.d目录本来就是所有用户都可以访问的。
与其设置webshell的权限,不如做好web的安全开发,关闭不安全方法;;做好输入校验,输出编码,防止SQL注入,跨站脚本,XSS;以及安全配置,关闭web容器控制台……
另外就是要做好操作系统的安全防护,用户名密码不能太简单,增加防火墙
只要你的webshell不被非法获取,不额外设置webshell有什么关系。
SpringMVC如何有效的防止XSS注入?
在数据进入数据库之前对非法字符进行转义,在更新和显示的时候将非法字符还原
在显示的时候对非法字符进行转义
如果项目还处在起步阶段,建议使用第二种,直接使用jstl的c:out标签即可解决非法字符的问题。当然,对于Javascript还需要自己处理一下,写一个方法,在解析从服务器端获取的数据时执行以下escapeHTML()即可。
附:Javascript方法:
String.prototype.escapeHTML = function () {
return this.replace(//g, ‘’).replace(//g, ‘’).replace(//g, ‘’).replace(/”/g, ‘"’);}
如果项目已经开发完成了,又不想大批量改动页面的话,可以采用第一种方法,此时需要借助Spring MVC的@InitBinder以及org.apache.commons.lang.PropertyEditorSupport、org.apache.commons.lang.StringEscapeUtils
public class StringEscapeEditor extends PropertyEditorSupport {
private boolean escapeHTML;
private boolean escapeJavaScript;
private boolean escapeSQL;
public StringEscapeEditor() { super(); }
public StringEscapeEditor(boolean escapeHTML, boolean escapeJavaScript, boolean escapeSQL) {super();this.escapeHTML = escapeHTML;
this.escapeJavaScript = escapeJavaScript;
this.escapeSQL = escapeSQL;}@Overridepublic void setAsText(String text) {
if (text == null) {
setValue(null);} else {String value = text;
if (escapeHTML) { value = StringEscapeUtils.escapeHtml(value); }
if (escapeJavaScript) { value = StringEscapeUtils.escapeJavaScript(value); }
if (escapeSQL) { value = StringEscapeUtils.escapeSql(value); } setValue(value); }}@Overridepublic String getAsText() { Object value = getValue(); return value != null ? value.toString() : “”; }}
在上面我们做了一个EscapeEditor,下面还要将这个Editor和Spring的Controller绑定,使服务器端接收到数据之后能够自动转移特殊字符。
下面我们在@Controller中注册@InitBinder
@InitBinder
public void initBinder(WebDataBinder binder) {
这个方法可以直接放到abstract Controller类中,这样子每个Controller实例都能够拥有该方法。
对自己电脑上的Apache服务器进行XSS攻击,能不能在报文里看出问题
解决方案:
在httpd.conf的尾部添加:
TraceEnable off
备注:UPUPW Apache版已经修复此漏洞
如何验证apache httponly cookie漏洞
insightlabs里看到
漏洞原理分析就不多说了,文章里都有
但并未提到漏洞修补方法,正好在这做个补充。
漏洞原理和过程:
1.受害者中了跨站,浏览器发出携带超大cookies的包
2.服务器返回400错误,并会在response包里返回cookies内容
其中也包括httponly的。如图,xss0被设置为httpony依然显示出来
解决方案:
于是可以通过错误处理来屏蔽。
Apache官方提供4种错误处理方式 如下
In the event of a problem or error, Apachecan be configured to do one of four things,
1.output asimple hardcoded error message输出一个简单生硬的错误代码信息
2.output acustomized message输出一段信息
3.redirect to alocalURL-pathto handle the problem/error转向一个本地的自定义页面
4.redirect to an externalURLto handle theproblem/error转向一个外部URL
经测试,对于400错误只有方法2有效,返回包不会再包含cookie内容
Apache配置:
ErrorDocument400 " security test"
当然,升级apache到最新也可:)。
Apache TomcatHTTP响应消息头泄露信息的处理
一、如何查看HTTP响应消息头
Windows/Linux下使用curl小工具可获取响应头信息。Linux发行版光盘中一般都自带curl包,只要安装即可;Windows可从网站下载应版本,无需安装即可直接运行。
当然,也可用telnet命令HEAD方法直接获取响应头信息,如
$ telnet 80
输入以下命令(其中,“HEAD”必须大写)并按两次回车即能获取响应头信息。
HEAD / HTTP/1.0
在浏览器中也可以查看响应消息头,例如IE通过打开“开发人员工具”功能进行分类查看,Google
Chrome可通过打开“审查元素”功能来查看,firefox里需要安装上firebug这个插件。当然,众多的HTTP抓包分析工具(如HttpWatch、Fiddler2)也具备这个功能。
这里以curl小工具为例。
示例:360搜索网站
$ curl -I
HTTP/1.1 302 Moved Temporarily
Date: Sun, 05 Apr 2015 08:10:37 GMT
Content-Type: text/html
Content-Length: 154
Connection: keep-alive
Location:
该网站重定向至,继续跟踪
$ curl -I
HTTP/1.1 200 OK
Date: Sun, 05 Apr 2015 08:11:12 GMT
Content-Type: text/html
Connection: close
Vary: Accept-Encoding
Set-Cookie:
GUID=DazCGzqNk4eim3qSM6w7RMLQeTaQ6WbBYM0SxmC0+lVAiVnzCpxKhihMu6boXYSBZAYymholrHXSVpYClYE=|a|1428221472.4039;expires=Tue,
04-Apr-17 08:11:12 GMT;path=/
Set-Cookie: _S=6ooi1qd05hbnhp59r64v0dohb6; expires=Sun, 05-Apr-2015 08:21:12 GMT; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: QiHooGUID=A64C6CE468ACF3992B3A429E5E92EE6D.1428221472406; expires=Tue, 04-Apr-2017 08:11:12 GMT; path=/
Set-Cookie: QiHooGUID=D441EB2BD049F9D4AD196BA8977E9217.1428221472406; expires=Tue, 04-Apr-2017 08:11:12 GMT; path=/
Set-Cookie: so_paper_xmon=0; expires=Sat, 04-Apr-2015 08:11:12 GMT; path=/
可以看到,已经隐藏了Server头,Set-Cookie头中有用的信息是QiHooGUID,显然进行过修改。已经无法从头信息中分析猜测服务器软件部署情况。
$ curl -k -I
HTTP/1.1 200 OK
Cache-Control: private, max-age=604800
Expires: Sat, 28 Mar 2015 05:05:05 GMT
Date: Sat, 28 Mar 2015 05:05:05 GMT
Refresh: 0;URL=
Content-Type: text/html; charset=ISO-8859-1
Content-Length: 234
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Alternate-Protocol: 443:quic,p=0.5
利用Tomcat建立的网站就显示了一些信息:
Server: Apache-Coyote/1.1
如果是IIS服务器,还可能会有X-Powered-By, X-AspNet-Version, and X-AspNetMvc-Version等信息。
Server: Microsoft-IIS/6.0
Server: Microsoft-IIS/7.0
Server Microsoft-IIS/7.5
X-Powered-By: ASP.NET
X-AspNet-Version 4.0.303319
X-AspNet-Version: 2.0.50727
X-AspNet-Version: 1.1.4322
X-AspNetMvc-Version: 1.0
X-AspNetMvc-Version 3.0
网友评论
最新评论
d error message输出一个简单生硬的错误代码信息 2.output acustomized message输出一段信息 3.redirect to alocalURL-pathto handle the problem/error转向一个本地