**AppCMS**
**官网:http://www.appcms.cc/**
**审计版本:2.0.101**
**下载连接:http://www.appcms.cc/download/appcms_2.0.101.zip**
### AppCMS comment.php SQL Injection
### 0x00 前言
一开始是在cnvd()上看到有人提交这个漏洞没有详情,去官网下载源码本地审计没有审计出来;一次偶然的机会看到@Thinking分享的文章,才知道服务器端获取的“HTTP_CLIENT_IP”值是http头中“CLIENT-IP”字段的值是可伪造的!看到这个就恍然大悟了~
### 0x01 分析
本地搭建好环境后,点击任一app拉至最下方进行评论此时用burpsuite抓包如下
![](https://images.seebug.org/contribute/56f070e0-bd00-43ff-b67f-6f56d889c33b-w331s)
看漏洞文件commet.php关键代码27-37行,实例化common类并赋值给变量$c,以$_GET[‘m’]的形式获取传入的值进行函数调用。
![](https://images.seebug.org/contribute/95443749-fd29-4c1b-b203-4bfb763fa8c2-w331s)
而当前进行评论调用的函数是m__add(),在comment.php第56-86行定义
![](https://images.seebug.org/contribute/2bc0045d-0aed-47ed-9933-6dcd224c7b93-w331s)
m__add()函数的大意是评论内容不能为空即存在$_POST[‘comment’],正确输入验证码之后将需要的内容存入$fields数组中;在第79行静态调用了helper :: getip()函数跟进下,在core/helper.class.php文件第44-57行定义,通过HTTP_CLIENT_IP来获取客户端的ip即HTTP头中的CLIENT-IP字段。
![](https://images.seebug.org/contribute/e7344d0a-cf07-4324-a9b8-9c30c9d0836a-w331s)
回到m__add()函数第83行数组$fields的值传入single_insert方法,跟进在core/database.class.php文件第102行至120行定义,将数组$fields的值通过foreach遍历拼接之后带入query_insert方法
![](https://images.seebug.org/contribute/81d78ea4-0e5a-423b-b399-c177449ef975-w331s)
继续跟进core/database.class.php文件第73-83行,进行了SQL查询;$fields[‘ip’]未经过滤导致SQL注入
![](https://images.seebug.org/contribute/f6c99f9d-a07e-44c4-bbb8-6f8b6ee18951-w331s)
### 0x02 利用
通过CLIENT-IP引入单引号提交发现并没有报错,如下
![](https://images.seebug.org/contribute/5f1b6d8b-5cbe-4b73-a02d-69691b53df52-w331s)
看看SQL查询流程,query_insert方法中将mysql错误信息写入$querys[‘error’]中,一路return
![](https://images.seebug.org/contribute/d32c77a1-e06f-4945-84d8-fbe49cde983d-w331s)
在m__add()函数第84行,如果存在$ress['error']且不为空就输出”发表失败”并输出mysql报错信息
![](https://images.seebug.org/contribute/e6255681-f398-4977-ad1e-3cee8cad0c6a-w331s)
不知道为什么这个点不会mysql报错,那么换一种方式回显方式伪造CLIENT-IP:
CLIENT-IP: 1.1.1.1'),('2','0','0',(select user()),'kzaopa','1512573725','2.2.2.2')#
提交后回到浏览器刷新
![](https://images.seebug.org/contribute/c6349d9f-e009-4d4b-ad2b-94803eb6b60b-w331s)
这里有点需要注意('2','0','0', 这里的“2“要与浏览器中id=x的x相等,不然找不到回显的内容。
![](https://images.seebug.org/contribute/5c6af0c6-64d7-4384-83e8-f0006512fb45-w331s)
暂无评论