【安全漏洞】Easy代码审计
环境说明:
系统:Windows 10
集成环境:phpstudy
php版本:7.3.4
mysql版本:5.7.25
cms版本:7.7.4
【查看资料】
前言
现在cms一般都是基于MVC思想去开发,所以在审计这个cms时我是直接从控制器开始看的,thinkphp与laravel等开发框架会把控制器放在controller目录,这个cms的控制器是在lib目录。
目录结构
cmseasy/
|-- admin
|-- api
|-- apps
|-- cache
|-- cn
|-- common
|-- config
|-- data
|-- en
|-- html
|-- images
|-- install
|-- jp
|-- lang
|-- lib
|-- license
|-- readme
|-- sitemap
|-- sk
|-- template
|-- template_admin
|-- ueditor
|-- wap
`-- webscan360
开始审计
1.SQL注入
1.在文件lib/admin/database_admin.php的dorestore_action()方法接收到GET参数db_dir后会使用front::scan($dir)函数获取该目录下的文件名,然后将目录名与文件名传递给 tdatabase::getInstance()->restoreTables()函数,跟进该函数。
2.在文件lib/table/tdatabase.php的restoreTables函数可以看到,file_get_contents()函数读取文件内容后进行了字符替换与字符分割,文件内容被赋值给变量sqls,然后赋值给q,最终传递到$this->query()函数执行,继续跟进该函数。
3.在文件lib/inc/table.php的query函数,sql语句被传递给了this->db->query() 函数。
4.在文件lib/inc/dbmysqli.php的query函数,sql被传递给this->mysqli->query() 函数执行了,而在这个文件中可以看到 $this->mysqli 是mysqli 类实例化的对象。一路跟下来从文件读取内容到被执行SQL语句没有做任何安全处理。
5.从以上代码分析可知该SQL注入需要配合文件上传。
6.首先上传一个文件,该文件写入 sql 语句,注意这个文件需要是目录下的第一个文件,否则sql语句可能会查询失败。
将静态文件目录设置为 /,点击保存。这样可以保证目录下的第一个文件就是我们上传的。
上传文件使用 burpsuite 抓包将内容修改为sql注入语句。
7.触发SQL注入漏洞,这里其实也存在文件读取漏洞。
2.任意文件写入getshell
1.在文件lib/admin/table_admin.php的edit_action() 函数下,存在 file_put_contents 函数进行写入操作,文件名后缀默认为 php,POST的所有内容会在序列化之后放到 tagconfig变量,最后执行fileputcontents将tag_config 变量内容写入 php 文件。虽然 POST 的内容有被过滤,但是 POST 的参数名没被过滤,也就是说我们可以通过参数名写入 webshell。
2.发送构造好的请求包写入 webshell,没有回显但是没有关系文件名是可预判的。
3.访问webshell
总结
SQL注入:从文件中获取SQL语句,如果文件名与内容可控那么就可能存在SQL注入。
任意文件写入getshell:虽然POST参数的值有被过滤,但是由于使用了序列化函数导致仍然可以通过参数名写入恶意代码。
最后
关注我-持续更新······
私我获取【网络安全学习资料·攻略】
【安全漏洞】Easy代码审计相关推荐
- php弱类型漏洞,php代码审计之弱类型引发的灾难
天融信阿尔法实验室 李喆 有人说php是世界上最好的语言,这可能是对开发人员来说,确实有这方面的特点,因为它开发起来不像其他语言那样麻烦,就比如:弱类型,它不需要像java等语言那样明确定义数据类型. ...
- 老漏洞easy击:CVE-2012 0158占顶!
APT攻击富有潜伏性和持续性.依据2013年下半年所进行的分析结果显示,那段时间内最常被攻击的漏洞是CVE-2012 0158,这是微软Office在2012年4月就已经被修补的漏洞,这说明修补程序和 ...
- java代码审计常见漏洞_java代码审计基础教程之V2会议系统多个漏洞集合/无需登录...
因为学习java并不是很长时间,也没有做深入的研究.但是在学习之后,发现可以审计出一些简单的javaweb漏洞,所以想这这里和大家分享一下.0x01审计之初首先,我拿到了源码之后,大概看了一下这个系统 ...
- ssrf漏洞php代码审计1
(1)原理 web服务器经常需要从别的服务器获取数据,比如文件载入.图片拉取.图片识别等功能,如果获取数据的服务器地址可控,攻击者就可以通过web服务器自定义向别的服务器发出请求.因为web服务器常搭 ...
- dedecms 漏洞_代码审计之二次漏洞审计
什么是二次漏洞 需要先构造好利用代码写入网站保存,在第二次或多次请求后调用攻击代码触发或者修改配置触发的漏洞叫做二次漏洞.二次漏洞有点像存储型XSS的味道,就算payload插进去了,能不能利用还得看 ...
- php代码审计逻辑漏洞,PHP代码审计之WEB逻辑漏洞 - 安全牛课堂 - 领先的信息安全在线教育平台...
{ "i18nChapterName": "章", "i18nUnitName": "节", "i18nLes ...
- sql 找到上一次_记一次对XXCMS的代码审计
前言 之前一直在做PHP.JAVA的代码审计,从来没接触过ASP.NET编写的系统,前段时间在挖漏洞的过程中遇到了一个CMS是用.NET编写的,正好拿来练练手,本篇文章是我第一次写有关ASP.NET的 ...
- 栈溢出脚本_漏洞练习之网络编程与堆栈溢出技术
0x00 公众号之前发过Exploit-Exercise之Nebula实践指南,Exploit-Exercise一共有5个镜像可供练习,如下所示 本系列文章将会介绍第二个镜像Protostar的通关经 ...
- [6] 支付漏洞( 0 元购 )
<目录> 原理:支付 ...
最新文章
- Android Studio2.2.3 通过JNI引用ffmpeg库小结
- java location_JAVA setlocation()方法并不能定义组件的位置,setBounds()方法无法改变组件的大小。小白一枚...
- 计算机网络信息安全的含义,计算机网络信息安全内涵及其重要性
- XScuGic_Connect分析
- 面型对象 (包package)
- SQL Server中的报表–如何使用数据透视表和日期计算来获取有价值的报表
- Zookeeper原理分析之存储结构ZkDatabase
- Linux性能调优集合
- Javascript:利用闭包实现高级排他
- 用Java实现Md5加密工具类
- 关于微信公众号音频批量爬虫
- 1.8.9适用的java,Java 7、8、9+版本的一些新特性
- 【日常踩坑】使用空字符串ciphertext[i]来赋值报错
- 2021年浙江省跨境电商行业发展概况及发展趋势分析[图]
- httpd服务及配置文件详解
- 马云对话创业者:我不喜欢人工智能,机器应做人类做不到的事
- Android Hanlder的理解
- 2021年4月7日 星期三 霾 永醉不醒
- Xilinx 7系列原语使用(时钟相关)——(一)
- Redhat linux常用命令(全)
热门文章
- 成功解决AttributeError: 'list' object has no attribute 'ndim'
- DL之HNN:基于HNN(subplot)将凌乱数字矩阵图像(模拟手写数字图片)实现转为最相近的阿拉伯数字
- 从零开始的自学之路——css选择器
- 关于在pycharm下提示ModuleNotFoundError: No module named 'XXX' 的一种可能
- PyQt4布局管理——绝对定位方式
- android除去标题栏或全屏
- 【网络流】 HDU 4183 Pahom on Water 拆点
- 围观窗体与组件03 - 零基础入门学习Delphi25
- 关于C#调用API的理解(汇多考勤机HD4K)
- ASP.NET缓存之 没有为 SQL 缓存通知启用数据库“ReplaceShop”。