6

渗透经验分享之文件操作漏洞拓展

 3 years ago
source link: https://y4er.com/post/pentest-idea-sharing-file/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
1 min read

渗透经验分享之文件操作漏洞拓展

2020-06-23

上文分享了注入相关的东西,注入也可以对文件进行操作,本文是对文件操作漏洞的拓展。

文件操作漏洞

一般java的站点存在文件系列的洞比较多(除了文件包含)。

在哪最容易发现上传点?注册登陆用户头像、发布文章发布产品、js中的文件上传接口、一些编辑器,甚至还有扫目录扫出来的/uploader路径,访问出现这种405的uploader一般就是上传。比如: image.png

这个时候本地构造POST表单就行了,file参数靠猜,有的时候任意参数就行,有的时候post提交过去会报错缺失什么参数,随机应变。 image.png

一般上java的站点扫出来这种uploader比较多,都是上传写的servlet接口。

上传其实upload-labs里的绕过姿势已经非常全面了。拿到一个上传点,首先应该判断能不能正常上传、白名单还是黑名单、怎么校验的在哪校验的,这些没什么好讲的。聊一些比较恶心的文件上传。

  1. 上传不返回路径
  2. 上传不在web目录

上传不返回路径多出现在市长邮箱投诉举报这类功能中,其实这种功能本来就没打算给你返回路径。我的思路一般是找注入点,只要没返回路径的文件上传并且返回给你一个ID给你当作凭据的(此处只是举例,类推),肯定保存路径在数据库中。找到注入就等于找到了文件路径。

如果没有注入呢?找找日志。比如tp的日志是有规律的,你可以传一个非法文件名1.;,在tp的日志中报错,说不定就有路径。这个我自己是真实碰到的,一个laravel的框架,在laravel.log中报错返回了错误文件名的文件路径,猜出来了shell的路径。

如果没有日志呢?猜。形如/Files//uploads/目录,猜要有根据的猜,观察网站的图片和文件地址,以此拼接你的shell文件名,多数以时间戳命名,bp爆破下就行了。

再来说不在web目录的,上传的时候关注下请求包的几个参数,有没有pathfilepathfilenamefile_prefix,甚至测一下../../1.jpg文件名。如果上传不能跨目录其实你就应该转移关注点了。找文件包含、文件读取。

上传不在web目录的站,有这种功能的很多都有文件读取的洞,因为传上去的文件总归是要下回来的,找找形如download?path=1.jpg这种。拓展思路,举一反三。

另外就是文件包含了,没啥可说的。

限制条件有两个

不限制前缀的时候可以通过file协议读文件,php可以通过伪协议读文件,当限制前缀的时候Linux其实还好,可以通过../跳目录,但是windows没办法通过../跳盘符。

限制后缀就比较恶心了,php好像可以用#?符号去绕过。具体看 chybeta师傅的文章 吧。

确定是文件读取之后,如何进一步拿权限?个人习惯先读/etc/passwd,权限够大直接读/etc/shadow,然后根据/etc/passwd读每个用户的.bash_history,读中间件的配置文件,以此判断web的绝对路径。然后逐个读源码,java的话可以读一下war包,搞到代码之后就变得so easy了。

举个例子:文件读取读到了旁站的war包,旁站是一个监控,就一个登陆框,而war包中配置文件里写死了密码,刚好登陆进去直接可以执行命令rce。

weblogic的话可以直接读console账号密码,登陆console部署war包getshell。

反正就是文件读取=60%中间件特性+10%猜+30%运气。

文件写入拿shell很简单,直接指定web目录和内容就行了。但是这个一般上会有限制,比如内容检测(不能写php标签之类),文件名检测(不能写.php)。

  1. 写计划任务或许为一个好的选择
  2. 覆盖原有配置文件(比如覆盖安装锁)

文件写入好像没什么好说的,先就这样,想到什么补充什么。

实战没怎么遇到过这个洞

  1. 删除配置文件
  2. 删除安装锁(造成重装)
  3. 删除waf文件include waf.php

文件包含多为php站点,所以伪协议读文件这些都是基本操作。不过有一说一,除了ctf中碰到过文件包含,实战中没遇到过。

具体看 chybeta师傅的文章-php文件包含漏洞

需要提一嘴的是phar可以伪装为图片,你可以传一个1.jpg,绕过内容检测,然后用phar://协议包含。还有就是smb包含,php缓存文件包含。


或许渗透变化万千的思路才是我真正喜欢他的原因。

文笔垃圾,措辞轻浮,内容浅显,操作生疏。不足之处欢迎大师傅们指点和纠正,感激不尽。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK