记一次跨目录上传+任意文件读取rce记录

admin 2023年9月24日16:57:59评论41 views字数 2620阅读8分44秒阅读模式

声明:该公众号大部分文章来自作者日常学习笔记,也有少部分文章是经过原作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。

请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关
跨目录上传+任意文件读取rce记录

跨目录上传 对某系统进行测试时,发现有一处上传附件的功能,常规上传个文件试试 发现返回包返回了重命名后的文件名称和系统的绝对路径 继续看上传的文件..

1.跨目录上传

对某系统进行测试时,发现有一处上传附件的功能,常规上传个文件试试

记一次跨目录上传+任意文件读取rce记录

发现返回包返回了重命名后的文件名称和系统的绝对路径

继续看上传的文件

记一次跨目录上传+任意文件读取rce记录

只有一个预览的功能,访问直接下载该文件,请求链接为

DownloadServlet?type=W***J&filename=QQ%E5%9B%BE%E7%89%8720230414145425.jpg&pyName=9be6c164-d5a9-4a1e-a555-139ec1ce383d.jpg

并没有什么用

回头仔细看上传的数据包,发现上传的参数type的值返回在了系统的绝对路径中,猜测type的值即为上传的文件夹,将type改成1尝试,印证了猜想,且是可以直接上传jsp的!

记一次跨目录上传+任意文件读取rce记录

既然上传文件参数可控,尝试使用../看是否可以跨目录上传,发现也是可以的

记一次跨目录上传+任意文件读取rce记录

至此得到一个上传路径可控的有效上传点,且通过上传返回的绝对路径知道了当前的user名称(这个后面很关键)。

那么接下来的思路就是寻找系统的web路径,直接上传脚本getshell。尝试了一些常用的手法例如构造报错等均未找到目标,尬住了一会儿后,想到了之前的跨目录上传,既然上传处可以使用../进行跨目录,那么上传后的预览处呢?

2.任意文件读取

回到刚才的上传预览处

记一次跨目录上传+任意文件读取rce记录

将预览功能处的请求链接

DownloadServlet?type=W***J&filename=QQ%E5%9B%BE%E7%89%8720230414145425.jpg&pyName=9be6c164-d5a9-4a1e-a555-139ec1ce383d.jpg

中的filename与pyname进行构造尝试,果不其然,发现一处任意文件读取

记一次跨目录上传+任意文件读取rce记录

得到任意文件读取后可以通过读取中间件的默认配置文件寻找更多信息,例如
tomcat(其中日志的配置路径)
/usr/local/tomcat(tomcat-1.1.1(具体版本号))/conf/tomcat-users.xml/usr/local/tomcat(tomcat-1.1.1(具体版本号))/bin/catalina.sh
apache
/var/log/apache2/access.log/var/log/apache2/error.log/var/log/httpd/access_log/etc/httpd/logs/access_log/etc/httpd/logs/error_log/etc/httpd/logs/error.log

nginx

/var/log/nginx(nginx-1.1.1(具体版本号))/access.log/var/log/nginx(nginx-1.1.1(具体版本号))/error.log/usr/local/var/log/nginx(nginx-1.1.1(具体版本号))/access.log/usr/local/nginx(nginx-1.1.1(具体版本号))/logs/etc/nginx(nginx-1.1.1(具体版本号))/nginx.conf

通过旁站的其他端口的web指纹,发现使用的是tomcat

记一次跨目录上传+任意文件读取rce记录

直接尝试读取tomcat的默认配置文件,均失败:)

接着尝试读取操作系统的默认路径,linux下常用路径如下

/etc/passwd                     账户信息/etc/shadow                     账户密码文件/etc/my.cnf                     mysql配置文件/root/.ssh/id_rsa               ssh-rsa私钥/etc/redhat-release             系统版本 /root/.bash_history             用户历史命令记录文件/home/user/.bash_history        特定用户的历史命令记录文件/root/.mysql_history            mysql历史命令记录文件/var/lib/mlocate/mlocate.db     全文件路径/proc/net/fib_trie              内网IP/proc/self/environ              环境变量/proc/self/loginuid             当前用户uid

最终通过/home/user/.bash_history中成功找到了tomcat的web路径

记一次跨目录上传+任意文件读取rce记录

3.getshell

万事具备,直接上传至根目录下,访问

记一次跨目录上传+任意文件读取rce记录

根目录下不解析,直接跳转到了登录页面,但是可以看到跳转目录携带了我们访问的jsp。
这种情况下,有账号的话(本系统提供了注册功能),直接登录后访问即可

记一次跨目录上传+任意文件读取rce记录

4.一些拓展

上述的情况都是登录后测试的,如果上传点是fuzz出来的,没有目标系统的账号,也可以采取如下几种方案。

1.尝试直接上传至系统的静态目录,例如系统自动加载的js文件的目录。

2.尝试绕过fillter的鉴权,一般从fillter对目录的白名单或是文件后缀的白名单两个角度绕过入手。

附一些实战的案例。

目录白名单绕过

记一次跨目录上传+任意文件读取rce记录

记一次跨目录上传+任意文件读取rce记录

文件后缀白名单绕过

记一次跨目录上传+任意文件读取rce记录

记一次跨目录上传+任意文件读取rce记录

其他情况绕过

记一次跨目录上传+任意文件读取rce记录

记一次跨目录上传+任意文件读取rce记录

3.寻找其他的web可以直接访问且知道路径的目录

例如本案例中的

记一次跨目录上传+任意文件读取rce记录

记一次跨目录上传+任意文件读取rce记录

直接构造上传

记一次跨目录上传+任意文件读取rce记录

浏览器访问,成功rce

记一次跨目录上传+任意文件读取rce记录

原文链接

https://forum.butian.net/share/2350

| 知识星球的介绍

不好意思,兄弟们,这里给湘安无事星球打个广告,不喜欢的可以直接滑走哦。

1.群主为什么要建知识星球?

很简单为了恰饭哈哈哈,然后也是为了建立一个圈子进行交流学习和共享资源嘛相应的也收取费用嘛,毕竟维持星球也需要精力

2.知识星球有哪些资源?

群里面联系群主是可以要一些免费的学习资料的,因为群里面大部分是大学生嘛大学生不就是喜欢白嫖,所以大家会共享一些资料没有的群主wk也有,wk除了不会pc,其他都能嫖hhh

一些实战报告,截的部分

记一次跨目录上传+任意文件读取rce记录

记一次跨目录上传+任意文件读取rce记录

记一次跨目录上传+任意文件读取rce记录


一些1day的poc,这些也就是信息差,不想找可以让wk帮你们嫖,群主也会经常发

记一次跨目录上传+任意文件读取rce记录

记一次跨目录上传+任意文件读取rce记录

记一次跨目录上传+任意文件读取rce记录

一些共享的资源

1.刀客源码的会员2.fofa 360高级会员3.专属漏洞库5.专属内部it免费课程6.不定期直播分享(星球有录屏)

技术交流可加下方wx

记一次跨目录上传+任意文件读取rce记录

记一次跨目录上传+任意文件读取rce记录


记一次跨目录上传+任意文件读取rce记录

记一次跨目录上传+任意文件读取rce记录



原文始发于微信公众号(湘安无事):记一次跨目录上传+任意文件读取rce记录

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年9月24日16:57:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次跨目录上传+任意文件读取rce记录https://cn-sec.com/archives/2063563.html

发表评论

匿名网友 填写信息