某Easy代码审计-PHP

环境说明:

系统: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()函数,跟进该函数。

20211029203408-82da3b0a-38b4-1


2.在文件lib/table/tdatabase.php的restoreTables函数可以看到,file_get_contents()函数读取文件内容后进行了字符替换与字符分割,文件内容被赋值给变量$sqls,然后赋值给$q,最终传递到$this->query()函数执行,继续跟进该函数。

20211029204019-604a80e4-38b5-1

3.在文件lib/inc/table.php的query函数,$sql语句被传递给了 $this->db->query() 函数。

20211029204249-b9d1a1b0-38b5-1


4.在文件lib/inc/dbmysqli.php的query函数,$sql 被传递给 $this->mysqli->query() 函数执行了,而在这个文件中可以看到 $this->mysqli 是mysqli 类实例化的对象。一路跟下来从文件读取内容到被执行SQL语句没有做任何安全处理。

20211029204728-5fe5e066-38b6-1


20211029204808-7796ddbe-38b6-1

5.从以上代码分析可知该SQL注入需要配合文件上传。

6.首先上传一个文件,该文件写入 sql 语句,注意这个文件需要是目录下的第一个文件,否则sql语句可能会查询失败。
将静态文件目录设置为 /,点击保存。这样可以保证目录下的第一个文件就是我们上传的。

20211029205736-ca53845c-38b7-1


上传文件使用 burpsuite 抓包将内容修改为sql注入语句。

20211029210914-6a367d7a-38b9-1


20211029210752-392f29b6-38b9-1


7.触发SQL注入漏洞,这里其实也存在文件读取漏洞。

20211029211529-49d7265a-38ba-1
2.任意文件写入getshell

1.在文件lib/admin/table_admin.php的edit_action() 函数下,存在 file_put_contents 函数进行写入操作,文件名后缀默认为 php,POST的所有内容会在序列化之后放到 $tag_config 变量,最后执行 file_put_contents 将$tag_config 变量内容写入 php 文件。虽然 POST 的内容有被过滤,但是 POST 的参数名没被过滤,也就是说我们可以通过参数名写入 webshell。

20211029214625-9bd47170-38be-1

2.发送构造好的请求包写入 webshell,没有回显但是没有关系文件名是可预判的。

20211029214859-f8003f10-38be-1


3.访问webshell

20211029215049-397fe710-38bf-1


总结

SQL注入:从文件中获取SQL语句,如果文件名与内容可控那么就可能存在SQL注入。
任意文件写入getshell:虽然POST参数的值有被过滤,但是由于使用了序列化函数导致仍然可以通过参数名写入恶意代码。


转载自

https://xz.aliyun.com/t/10452

主题测试文章,只做测试使用。发布者:视频运营,转转请注明出处:https://community.anqiangkj.com/archives/8848

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年3月17日 上午7:53
下一篇 2022年3月17日 上午9:40

相关推荐

发表回复

您的电子邮箱地址不会被公开。