代码审计

通达oa前台注入+后台getshell

字号+ 作者:0day5 来源:转载 2017-01-12 21:18 我要评论( )

注入分析 \inc\common.inc.php ?phpfunction SecureRequest($var){ if (is_array($var)) { foreach ($var as $_k = $_v ) { $var[$_k] = securerequest($_v); } } ......

注入分析
\inc\common.inc.php

逻辑分析一下,
CheckRequest函数去检查$_REQUEST,通达oa是环境程序一体安装等,php版本是5.3.29,这个时候的$_REQUEST不包含$_COOKIE的,所以可以通过cookie来覆盖变量。

但是有一个很蛋疼的东西就是

strip_tags是没办法处理数组的,所以会返回null,故想覆盖比如_SESSION['a']的话,是没办法的。

接下来看后面的$_COOKIE->$_POST->$_GET,这些都是用SecureRequest函数去检查。然而这个函数只检查了数组键值,=。=,然后还不允许这样以_GET、_POST等开头变量覆盖

看到这段对$_post的处理

=。=,如果传过去一个TD_HTML_EDITOR__SESSION[a]=1,最后不就成了_SESSION[a]=1,还顺便绕过了上面的正则检查。

注入很多,用的是80sec的waf,比如

http://lemon.love:8081/general/document/index.php/send/approve/finish

bypass出数据:

这样就可以跑出管理员密码,这个是用unix加密的,放cmd5解密一下就好了。

上传+包含=>getshell

general\reportshop\utils\upload.php

上传没验证,然后又可以变量覆盖。所以可以直接上传一个php。

exp.html

上传的地址是:xxx/attachment/reportshop/templates/upload.php

但是因为环境是一体的,所以这些上传的目录并没有执行权限。

看到这段运行的。

所以是这样的一个情况,

这样的包含,可以利用zip、phar协议,但是后面还有?&=等符号,一个文件也没发这样创建。

先创建一个upload…..(很多.).php,然后在winhex里面修改它为

 

这样zip协议包含的时候就可以包含到这个文件了。

整理一下利用过程:

  1. 先上传zip文件,里面包含payload
  2. 再上传一个1.txt文件(任意内容都可以,主要是为了进入include包含里面的条件)
  3. 进行包含

链接: http://pan.baidu.com/s/1sllNrRZ 密码: 63ya 下载zip包

这个zip包含后会生成一个shell,地址是



know it then do it

本文来自: 蜗蜗侠's Blog-关注网络安全 http://blog.icxun.cn/hack/Code/536.html

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评
暂时未开启评论功能~