### 简要描述:
YXcms 最新1.2.0版本 存储式XSS(实站演示)
源码分析请见详细说明,各种躺枪的演示在漏洞证明
### 详细说明:
题外话:之所以发这个漏洞,是因为
1.这个CMS的过滤比较强,不像之前某些CMS一丁点儿过滤都没有 完全没有挑战的价值
2.Stored-XSS 是跨站中危害比较大的漏洞,之前一直没找机会玩一玩跨站,再不发跨站的漏洞可能会被人认为不会挖XSS的洞洞
看代码
/protected/apps/default/controller/extendController.php line:40
```
session_starts(); //接收表单的地方
if($_POST['checkcode']!=$_SESSION['verify'] || empty($_SESSION['verify'])) $this->error('验证码错误,请重新输入');
//验证码无缺陷,扫描器不可能发现这个漏洞,继续看代码
for($i=1;$i<count($tableinfo);$i++){
//动态的表单支持
if(is_array($_POST[$tableinfo[$i]['tableinfo']]))
//先看后面的else
$data[$tableinfo[$i]['tableinfo']]=implode(',',$_POST[$tableinfo[$i]['tableinfo']]);
else
//正常提交表单会到这里,使用in函数来过滤参数,grep一下
$data[$tableinfo[$i]['tableinfo']]=in($_POST[$tableinfo[$i]['tableinfo']]);
}
$data['ip']=get_client_ip();
$data['ispass']=0;
$data['addtime']=time();
if(empty($urls[1])) $jump=$_SERVER['HTTP_REFERER'];
else{
$jurl=explode(',',$urls[1]);
if(!empty($jurl[1])){
$arr=explode('/',$jurl[1]);
if(!empty($arr)){
$canshu=array();
foreach ($arr as $vo) {
$val=explode('=',$vo);
$canshu[$val[0]]=$val[1];
}
}
}
$jump=url($jurl[0],$canshu);
}
//下面用的是in函数过滤完的post,看来只能去找in函数了
if(model('extend')->Extin($tableinfo[0]['tableinfo'],$data)) $this->success('提交成功请等待审核~',$jump);
else $this->error('提交失败~');
```
寻找in函数
/protected/include/lib/common.function.php line:8
```
function in($data,$force=false){
//完美的htmlspecialchars+addslashes
//看上去好像没希望了
//没错,我马上要说但是了,看看这个CMS是怎么输出的留言内容吧
if(is_string($data)){
$data=trim(htmlspecialchars($data));//防止被挂马,跨站攻击
if(($force==true)||(!get_magic_quotes_gpc())) {
$data = addslashes($data);//防止sql注入
}
return $data;
} else if(is_array($data)) {
foreach($data as $key=>$value){
$data[$key]=in($value,$force);
}
return $data;
} else {
return $data;
}
}
```
/protected/apps/default/view/default/extend_guestbook.php line:77
怎么感觉这么喜感,在一堆
$vo['tname'] $vo['addtime'] $vo['reply'] 中
出现了一个html_out($vo['content'])
```
<div class="book-list-info">留言者:{$vo['tname']} IP:{$vo['ip']} 留言时间:{date($vo['addtime'],Y-m-d H:m:i)}</div>
<div class="book-list-con">{html_out($vo['content'])}</div>
<div class="book-list-back">{$vo['reply']}</div>
```
/protected/include/lib/common.function.php line:75
```
function html_out($str){
if(function_exists('htmlspecialchars_decode'))
$str=htmlspecialchars_decode($str);
//天哪!好不容易过滤掉的东西又回来了!!!
else
$str=html_entity_decode($str);
$str = stripslashes($str);
return $str;
}
```
留言content引发存储式XSS,证毕
### 漏洞证明:
经测试,那个表单是在留言处接受的
先在本机证明,再去光顾躺枪的网站:
表单位置:
```
http://127.0.0.1/index.php?r=default/extend/index&id=100023
```
[<img src="https://images.seebug.org/upload/201312/20215729f7cf495aaae1e0d53428bc0a7b252276.png" alt="001.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201312/20215729f7cf495aaae1e0d53428bc0a7b252276.png)
然后改content
[<img src="https://images.seebug.org/upload/201312/2021581312577a5a8e95c09518743a7c9df41e25.png" alt="002.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201312/2021581312577a5a8e95c09518743a7c9df41e25.png)
[<img src="https://images.seebug.org/upload/201312/2021585794a9c6538a4eab9b54f256b6729f720b.png" alt="003.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201312/2021585794a9c6538a4eab9b54f256b6729f720b.png)
打cookie了,下面的cookie是躺枪的haohm网站的
[<img src="https://images.seebug.org/upload/201312/20215910740de732a76b3b4f5d14bcf9875d7860.png" alt="004.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201312/20215910740de732a76b3b4f5d14bcf9875d7860.png)
为了方便测试,再发一个alert的图
[<img src="https://images.seebug.org/upload/201312/2022003327c529ba37676b51e368d8e15538b762.png" alt="005.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201312/2022003327c529ba37676b51e368d8e15538b762.png)
[<img src="https://images.seebug.org/upload/201312/20220114a8a5705222add68e4e645b8a6c2b89fc.png" alt="006.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201312/20220114a8a5705222add68e4e645b8a6c2b89fc.png)
[<img src="https://images.seebug.org/upload/201312/20220130b992f8c5ae213e8def88b80d9eeed16f.png" alt="007.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201312/20220130b992f8c5ae213e8def88b80d9eeed16f.png)
躺枪光荣,我只是登了演示一下漏洞,啥都没干
http://www.haohm.net/
[<img src="https://images.seebug.org/upload/201312/2022015649aef0b2e8d81de31c1ef5a42e83f61a.png" alt="008.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201312/2022015649aef0b2e8d81de31c1ef5a42e83f61a.png)
再躺一个,仍然只是验证漏洞,没有任何恶意
[<img src="https://images.seebug.org/upload/201312/2022030733727044402dc7a9305f52a0e276e438.png" alt="009.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201312/2022030733727044402dc7a9305f52a0e276e438.png)
暂无评论