PHPMYWIND 注入漏洞 & 后台getshell

v4.6.6  11月28日 phpmywind发布的版本 不知道现在发布新版本了没。

用这渣渣洞 帮XX机油拿了个证书。  机油我爱你。 证书到手了, 也就准备写出来了。

Phpmywind/member.php

 PHPMYWIND 注入漏洞 & 后台getshell

 PHPMYWIND 注入漏洞 & 后台getshell

这个xss略显鸡肋。 没多研究。。 要在会员列表里面点详细才可以。

然后看了下get_ip 函数  但是最后对ip的合法性做了验证。

继续看看member.php

 PHPMYWIND 注入漏洞 & 后台getshell

$link 就是referer 可伪造。

并且带入了查询当中$dosql->ExecNoneQuery(“INSERT INTO `#@__userfavorite` (aid,molds,uid,uname,link,time,ip,isshow) VALUES
(‘$aid’,'$molds’,'$uid’,'$uname’,'$link’,'$time’,'$ip’,’1′)”);
跟进。

 PHPMYWIND 注入漏洞 & 后台getshell

先把语句给了setQuery

 PHPMYWIND 注入漏洞 & 后台getshell

获取表前缀 然后替换语句中的前缀。
然后赋给querystring

关键就是下面的语句检查了。

 PHPMYWIND 注入漏洞 & 后台getshell

这个很明显就是dede里面内置的防注入的
也就是由80sec提供的。
不过这个已经被大牛们绕过了。

 PHPMYWIND 注入漏洞 & 后台getshell

貌似是把单引号里面的内容都替换成$s$?不太懂

引用下大牛的话把: 这里可以设置title为如下代码,一方面绕过ids防注入代码检测,另一方面加一个#注释掉后面的代码,但是还要做一下变形,就是这个 char(@`’`)了。因为#@__feedback的所有字段都被设置为NOT NULL,而@`’`是一个变量,默认为NULL,直接插入@`’`的话会报错,所以需要以char(@`’`)的方法转换一下。

的确加了char(@`’`) 就没被拦截了。。

先构造一下语句
 PHPMYWIND 注入漏洞 & 后台getshell

然后加上char(@`’`)

 PHPMYWIND 注入漏洞 & 后台getshell

注入成功。
无视magic_quotes_gpc

因为 magic_quotes_gpc 只对 Get post cookie的传递过来的特殊字符转义。

______________________________________________

老版本的phpmywind的后台 太好getshell了。
因为模版可以直接编辑php 文件 但是现在不行了。

 PHPMYWIND 注入漏洞 & 后台getshell

这里可以修改 但是黑名单中有php 添加了php还是不能上传
但是还有Cer cdx asa phtml php3   ……&

________________________________________________________________________________________________
另外一种方法是借鉴了raindrop兄弟的那dede的后台另类拿shell的方法。

我用我的理解来说说把。  没怎么学过php,, 不知道说得错误多不多。。

 PHPMYWIND 注入漏洞 & 后台getshell

经常可以看到各种后台配置插马儿。
但是现在一般都用单引号引起了。  也不乏有一些双引号引的。。

如果是双引号引的 就利用双引号的二次解析就更容易拿shell了。
单引号呢 有时候闭合后还是能拿shell  但是受gpc

不过现在有些cms 就像 phpmywind dede 这样的

添加了再多的单引号

 PHPMYWIND 注入漏洞 & 后台getshell

配置文件也依然这样  raindrop思维很活跃啊。巧妙的利用单行注释多行注释 和 转义符。

 PHPMYWIND 注入漏洞 & 后台getshell
不知道为什么 我在phpmywind 后台里面 写一个 或者 写两个 在配置文件里面都是空的
写三个里面才有了一个

 PHPMYWIND 注入漏洞 & 后台getshell

Raindrop 还说要把第一个单引号注释掉 就是 ‘//’
因为不能直接注释掉 所以要先转义。
但是我觉得不需要额, ’ 已经不能用来闭合了。
第一行就是转义第二个单引号,  然后第一单引号和第三单引号闭合了。 然后结束语句。
然后利用多行注释 注释掉4 5 单引号, 然后再单行注释掉phpinfo(); 后面的第6单引号

然后 phpinfo() 就无单引号了。

 PHPMYWIND 注入漏洞 & 后台getshell

因为magic_quotes_gpc 是会对 转义的嘛
可是当magic_quotes_gpc 为on的时候还是可以拿
Lengai兄弟也说得很清楚了。
function ReWriteConfig()

{

global $dsql,$configfile;

if(!is_writeable($configfile))

{

echo “配置文件’{$configfile}’不支持写入,无法修改系统配置参数!”;

exit();

}

/*

以写的方式打开一个文件。接着从数据库里面查找配置,在写到文件里面。
*/

$fp = fopen($configfile,’w');

flock($fp,3);

fwrite($fp,”<”.”?phprn”);

$dsql->SetQuery(“SELECT `varname`,`type`,`value`,`groupid` FROM `#@__sysconfig` ORDER BY aid ASC “);

$dsql->Execute();

while($row = $dsql->GetArray())

 

{

if($row['type']==’number’)

{

/*

如果为数字的情况下,就直接写到文件里面。
我本以为找到数字类型的,直接写入代码(类似’;phpinfo();//),可惜找了几个都没找到。
本以为放弃了,结果后面无意间发现了一个可以利用的地方。

*/

if($row['value']==”) $row['value'] = 0;

fwrite($fp,”${$row['varname']} = “.$row['value'].”;rn”);

 

}

else

{

/*

如果类型为文本的话 他会自动去掉单引号,在自动加上单引号。
其实这样的思路是没啥错的,可惜现在人们越来月淫荡了。所以他还是有个地方错误,他忽略了转义符()

*/

fwrite($fp,”${$row['varname']} = ‘”.str_replace(“‘”,”,$row['value']).”‘;rn”);

 

}

}

fwrite($fp,”?”.”>”);

fclose($fp);

}

 

这个phpmywind跟dede还是挺像的   这里要fputs个马儿才行。 不能直接连接配置文件。

标签: 无
返回文章列表 文章二维码
本页链接的二维码
打赏二维码