真传一句话系列之任意文件上传下载

#仅供学习交流,切勿用于非法用途!!!

文件上传

原理

文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件

如何绕过:

客户端:
绕js检测 在bp抓包 把文件名后缀改为脚本形式 如asp、php、jsp即可
服务端:
黑名单:上传特殊可解析后缀、上传.htaccess文件(这个文件会把当前目录下的所有文件当脚本解析)、
后缀大小写绕过、点绕过、空格绕过、::$DATA绕过、配合解析漏洞、双后缀名绕过
白名单:MIME绕过、%00截断、0x00截断、0x0a截断
检查内容:文件头检查、突破getimagesize()、突破exif_imagetype()、二次渲染

绕过waf:

老套方法:
方法一:等号绕过
在filename后多添加两个等号
方法二:换行绕过
在文件后缀名处换行
方法三:填充垃圾字符
在Content-Disposition字段后添加垃圾数据,来绕过对文件名的校验
方法四:突破0,文件名前缀加[0x09]绕过
方法五:文件名去掉双引号绕过

新方法:(亲测好用)
1.参数污染+双引号
2.垃圾字符+参数污染

防范

文件上传的目录设置为不可执行。(权限)
判断文件类型。
件类型检查中,强烈推荐白名单方式,黑名单的方式已经无数次被证明是不可靠的。
使用随机数改写文件名和文件路径。
单独设置文件服务器的域名。
使用安全设备防御。

常见的问题

1.拿到一个 webshell 发现网站根目录下有.htaccess 文件,我们能做什么?

能做的事情很多,用隐藏网马来举例子: 插入SetHandler application/x-httpd-php.jpg文件会被解析成.php文件

2.在某后台新闻编辑界面看到编辑器,应该先做什么

查看编辑器的名称版本,然后搜索公开的漏洞

3.access 扫出后缀为 asp 的数据库文件,访问乱码,如何实现到本地利用?

直接迅雷下载,下载后直接改后缀为.mdb

4.上传大马后访问乱码时,有哪些解决办法?

浏览器中改编码

5.审查上传点的元素有什么意义?

有些站点的上传文件类型的限制是在前端实现的,这时只要增加上传类型就能突破限制了。

6.本地包含与远程包含的区别?

本地包含只需找个上传点,把图片木马上传到对方服务器,通过本地包含漏洞直接包
含木马脚本木马就可以运行 webshell,远程包含需要服务器 php 关闭魔术符号与开启远程包
含功能才行

7.目标站发现某 txt 的下载地址为http://www.test.com/down/down.php?file=/upwdown/1.txt,你有什么思路?

直接在 file=后面尝试输入 index.php 下载他的首页文件,然后在首页文件里继续查找其他网站的配置文件,可以找出网站的数据库密码和数据库的地址

8.目标站无防护,上传图片可以正常访问,上传脚本格式访问则 403.什么原因?

原因很多,有可能 web 服务器配置把上传目录写死了不执行相应脚本,尝试改后缀名绕过

任意文件下载

原理:

网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限 制,则恶意用户就能够查看或下载任意敏感文件,

举个例子

 http://192.168.0.15/pikachu/vul/unsafedownload/execdownload.php?
 filename=../../../../../../../../../../../../../../../etc/passwd

利用方式

快速扫描下载漏洞的时候,不管是工具还是手工,我们怎么判断下载漏洞呢?它有几个关键的形式:

一般链接形式:
 download.php?path=
 down.php?file=
 data.php?file=
 download.php?filename=
或者包含参数:
 &Src=
 &Inputfile=
 &Filepath=
 &Path=
 &Data=

利用思路

当遇到一个任意文件下载时,我们的一般利用思路:比如下载哪些文件呢?
(1)下载常规的配置文件,例如: ssh,weblogic,ftp,mysql等相关配置
(2)下载各种.log文件,从中寻找一些后台地址,文件上传点之类的地方,如果运气好的话会获得一些前辈
们的后门。
(3)下载web业务文件进行白盒审计,利用漏洞进一步攻入服务器。
如果是linux系统的话,尝试读取/root/.bash_history看自己是否具有root权限。如果没有的话。我们
只能按部就班的利用../来回跳转读取一些.ssh下的配置信息文件,读取mysql下的.bash_history文件。来
查看是否记录了一些可以利用的相关信息。然后逐个下载我们需要审计的代码文件,但是下载的时候变
得很繁琐,
我们只能尝试去猜解目录,然后下载一些中间件的记录日志进行分析。
一些常见的利用文件
/root/.ssh/authorized_keys
 /root/.ssh/id_rsa
 /root/.ssh/id_ras.keystore
 /root/.ssh/known_hosts //记录每个访问计算机用户的公钥
/etc/passwd  // 存用户名的   ***
 /etc/shadow  // 存密码的   ***
 /etc/my.cnf //mysql配置文件  ***
 /etc/httpd/conf/httpd.conf //apache配置文件  ***
 /root/.bash_history //用户历史命令记录文件 
/root/.mysql_history //mysql历史命令记录文件
/proc/mounts //记录系统挂载设备
/porc/config.gz //内核配置文件
/var/lib/mlocate/mlocate.db //全文件路径
/porc/self/cmdline //当前进程的cmdline参数

怎么测试

用../或者./  去测试

防范

1:过滤".",使用户在url中不能回溯上级目录
2:采用白名单过滤
3:严格限定用户访问文件的范围(php.ini置open_basedir+路径
4:设置白名单,即只能下载/访问某个目录下的文件,权限给到最低
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值