记一次blue代码审计-学习篇 – 作者:掌控安全帆先生

0x00 BlueCms代码审计

第一次学习做代码审计,为此记录一下学习经验。从网上下载bluecms 1.6源码,本地搭建

0x01 SQL注入漏洞

位置:ad_js.php文件

  1. 首先看到这里,很明显的一条数据库查询语句,选择这条右键打开文件,来查看源码

1608271045_5fdc44c552931698e5d4d.png!small?1608271045418

  1. 可以看到这条语句使用了getone方法执行了sql语句,然$ad_id的获取只是判断了是否为空,如果有值,获取id首尾去空,否则给一个空值,下面if判断如果为空,给出一个error,并退出运行。看到这里他是没有做过滤的,接下来看getone方法

1608271078_5fdc44e6322a55bd8d0c0.png!small?1608271078488

  1. 双击选中getone右键定位函数来到函数存在的文件。getone方法获取$sql的传参,直接调用对象执行了语句,并返回。没有做任何的过滤,那么此处就存在了一个sql注入。然后去ad_js.php去传参

1608271088_5fdc44f03ba375e2a1511.png!small?1608271088324

  1. 访问到ad_js文件不传参会给出一个error。直接给ad_id一个传参,这里我没有访问新闻,所以是空的。那么我们就可以直接在这里构造payload来进行sql语句的执行

1608271115_5fdc450bc3b4059fbf1ac.png!small?1608271115868

1608271126_5fdc451670b258cc0ab99.png!small?1608271126460

  1. 传递一个’参数,抛出异常,很明显的一个sql注入。通过sqlmap也可以看到存在sql注入漏洞

1608271136_5fdc452011ceb5e2ecb78.png!small?1608271136150

1608271143_5fdc45276d0429867d480.png!small?1608271143541

0x02 存储型xss

位置:user.php

  1. 首先来到注册页面,查看源代码。这里两段代码只是判断了用户的操作问题,后台设置了用户名的长度不能大于16,所以用户名这里不好操作,并且没有判断邮箱的操作,我们就可以在邮箱传入恶意的xss代码

1608271160_5fdc4538babf850d0abbb.png!small?1608271160935

1608271167_5fdc453f1baae4e7b4128.png!small?1608271167170

1608271171_5fdc45436263f1c6dfd94.png!small?1608271171488

  1. 在前端处,存在了验证邮箱的操作,所以需要抓包修改参数

1608271331_5fdc45e306361e9e1deb0.png!small?1608271331413

1608271333_5fdc45e5cc092dca9a90f.png!small?1608271333806

  1. 注册成功之后,会在页面弹出xss,然后去后台查看,在会员管理,会员列表处,成功触发xss脚本,可窃取管理员cookie

1608271343_5fdc45ef83e570a64ee80.png!small?1608271343542

1608271352_5fdc45f869ee522fec398.png!small?1608271352417

  1. 修改个人资料处同样存在存储型xss,编辑数据的地方,获取用户的传参,没有过滤函数。直接执行

1608271366_5fdc46068f28fe0c65693.png!small?1608271366752

1608271370_5fdc460ad20a09a1ccbf4.png!small?1608271370999

  1. 然后去看一下数据库里面的用户表,设定长度小的没法去执行xss,所以这里可以选择邮箱和msn,msn在页面不显示,选择邮箱处,后台一样可以触发xss

1608271397_5fdc4625a861a5c5009bb.png!small?1608271397778

0x03 文件包含漏洞

  1. 通过自动审计,可以查到该函数可能存在任意文件读取,打开文件源代码

1608271411_5fdc4633b00eddc51f47d.png!small?1608271411724

  1. 当act变量等于edit的之后,会获取一个tpl_name的get变量,然后去读取,这里也没有经过过滤

1608271436_5fdc464cd0a3e7d63eafd.png!small?1608271436891

  1. 直接构造payload即可

1608271444_5fdc46541317a32e3b4ef.png!small?1608271444102

0x04 任意文件删除

  1. 通过seay的自动审计可以看到可能存在任意文件读取,删除。然后追踪这个文件

1608271457_5fdc46616277ebfba8bc2.png!small?1608271457385

  1. 看到如下源码,当act等于del_pic之后,会获取id传参,然后调用方法直接执行,此处没有任何过滤

1608271461_5fdc46655d99621085998.png!small?1608271461454

  1. 构造payload:?act=del_pic&id=123.txt即可

1608271471_5fdc466fc9954607bbb0b.png!small?16082714718511608271476_5fdc467453cd6fb3125d6.png!small?1608271476352

来源:freebuf.com 2020-12-18 14:11:43 by: 掌控安全帆先生

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论