原文作者:舆图易稿 发表地址:格物 原文链接:https://segmentfault.com/a/1190000016086653 http.FileServer 方法属于标准库 net/http, http.ListenAndServe(":8080", http.FileServer(http.Dir("/files/path"))) 访问 http://127.0.0.1:8080,即可看到类似 我们先看 http.Dir(),再看 http.FileServer(),而 http.ListenAndServe() 监听 TCP 端口并提供路由服务,此处不赘述。 () http.FileServer() 方法返回的是 fileHandler 实例,而 fileHandler 结构体实现了 Handler 接口的方法ServeHTTP()。 1// 所属文件: src/net/http/fs.go, 690-716行type fileHandler struct { 2 root FileSystem 3}func FileServer
-O fileserver chmod +x fileserver # 设置文件权限 . /fileserver & # 启动服务 执行启动如下: [root@centos7 go-fastdfs]# ls conf data files fileserver log static /fileserver & [1] 2180 [root@centos7 go-fastdfs]# Listen on :8080 [root@centos7 go-fastdfs]# 这样默认是启动 2019-08-14 11:06:00 [INF] [fileserver.go:3394] [main.init.0] succes init log access 2019-08-14 11:06 :388] [main.ParseConfig] config parse success 2019-08-14 11:09:06 [INF] [fileserver.go:2077] [main.
,其中admin是管理员页面,api是接口,fileserver是储存文件的接口。 admin和api都需要登录后才能访问,fileserver无需登录。 则无需登录即可访问: 物理路径泄漏漏洞 ActiveMQ默认开启PUT请求,当开启PUT时,访问不存在的目录,Response会返回相应的物理路径信息,例如: PUT /fileserver/a../ ActiveMQ在5.12.x~5.13.x版本中,已经默认关闭了fileserver这个应用,但可以在conf/jetty.xml中开启;在5.14.0版本以后,彻底删除了fileserver应用。 ActiveMQ默认开启PUT方法,当fileserver存在时我们可以上传jspwebshell: PUT /fileserver/shell.jsp HTTP/1.1 Host: 192.168.197.25
然后 Client 为了请求 FileServer,会继续将用密码B加密过的 TGT 发送给 TGS(Ticket Granting Server),如下图。 ? 又因为 FileServer 也存有密码C,所以当 Client 将带有 Token 的请求发送给 FileServer,FileServer 会将 token 用密码C加密,再发送给 TGS,最后 TGS 最后 Client 终于可以访问 FileServer 的资源了。 ? 最后再总结下 Kerberos 验证过程中的四个组件三个密码的关系,密码A是 Client 和 AS 共有的,而密码B是 AS 和 TGS 共有的,最后密码C是 TGS 和 FileServer 共有的
二、漏洞描述: 本漏洞出现在fileserver应用中,漏洞原理其实非常简单,就是fileserver支持写入文件(但不解析jsp),同时支持移动文件(MOVE请求)。 ActiveMQ的web控制台分三个应用,admin、api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口;admin和api都需要登录后才能使用 ,fileserver无需登录。 );在5.14.0版本以后,彻底删除了fileserver应用。 PUT方法调用如下函数之后,上传到的目录是在${activemq.home}/webapps/fileserver下,源代码部分如下图: ? ?
-O fileserver chmod +x fileserver # 设置文件权限 . /fileserver & # 启动服务 执行启动如下: [root@centos7 go-fastdfs]# ls conf data files fileserver log static /fileserver & [1] 2180 [root@centos7 go-fastdfs]# Listen on :8080 [root@centos7 go-fastdfs]# 这样默认是启动 2019-08-14 11:06:00 [INF] [fileserver.go:3394] [main.init.0] succes init log access 2019-08-14 11:06 :388] [main.ParseConfig] config parse success 2019-08-14 11:09:06 [INF] [fileserver.go:2077] [main.
private Handler handler=null; 7 //xml文件的网络地址 8 final String path="http://192.168.5.10:8080/FileServer 张三</name> 5 <sex>男</sex> 6 <age>25</age> 7 <path>http://192.168.5.10:8080/FileServer 李斯</name> 11 <sex>男</sex> 12 <age>78</age> 13 <path>http://192.168.5.10:8080/FileServer 王五</name> 17 <sex>男</sex> 18 <age>22</age> 19 <path>http://192.168.5.10:8080/FileServer 庞聪</name> 23 <sex>男</sex> 24 <age>31</age> 25 <path>http://192.168.5.10:8080/FileServer
ActiveMQ的web控制台分三个应用,admin、api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口;admin和api都需要登录后才能使用 ,fileserver无需登录。 ActiveMQ在5.12.x~5.13.x版本中,已经默认关闭了fileserver这个应用(可以在conf/jetty.xml中开启);在5.14.0版本以后,彻底删除了fileserver应用。 /shell.jsp,文件写入成功,但fileserver目录无权限解析执行webshell脚本。 修改配置文件(conf\jetty.xml)禁用 ActiveMQ Fileserver 功能。
[->]172.22.60.42 [->]169.254.241.110 [*] NetBios 172.22.60.42 XIAORANG\FILESERVER -impersonate administrator 导入,而后无密码登录即可 export KRB5CCNAME=administrator@cifs_FILESERVER.xiaorang.lab @XIAORANG.LAB.ccache proxychains python3 smbexec.py -no-pass -k FILESERVER.xiaorang.lab 整体过程也可以借助Impacket -impersonate Administrator -dc-ip 172.22.60.8 信息搜集 获取主机权限后,抓一下FILESERVER的哈希 proxychains secretsdump.py -k -no-pass FILESERVER.xiaorang.lab -dc-ip 172.22.60.8 具体如下 proxychains secretsdump.py -k -no-pass FILESERVER.xiaorang.lab
二、ASP.NET WebAPI如何实现文件的上传实战演练 第一步:设置为ABenNet.WebAPI.FileServer为启动项目后,并运行。 第三步:ABenNet.WebAPI.FileServer.Client来模拟我们的C/S客户端上传文件。 ? 第四步: ABenNet.WebAPI.FileServer.Web打开index.html表单测试文件上传。 ?
exports文件: chkconfig --level 35 nfs on ;开启NFS启机运行 service nfs start ;手动启动服务 vi /etc/exports, 加入: /fileserver * (ro,sync) 然后到192.168.1.200 mkdir /fileserver chmod 777 -R /fileserver mount 192.168.1.100: /fileserver /fileserver 定时任务 crontab -e crontab -l
原理分析 ActiveMQ 中的 FileServer 服务允许用户通过 HTTP PUT 方法上传文件到指定目录,下载 ActiveMQ 5.7.0 源码 ,可以看到后台处理 PUT 的关键代码如下 [--5-2.png-w331s] 由此,我们可以构造PUT请求上传 webshell 到 fileserver 目录,然后通过 Move 方法将其移动到有执行权限的 admin/ 目录。 3. 上传Webshell方式 首先 PUT 一个 Jsp 的 Webshell 到 fileserver 目录 [--6-2.png-w331s] 在 fileserver/ 目录中 Webshell 并没有执行权限 漏洞防护方案 1、ActiveMQ Fileserver 的功能在 5.14.0 及其以后的版本中已被移除。建议用户升级至 5.14.0 及其以后版本。 2、通过移除 conf\jetty.xml 的以下配置来禁用 ActiveMQ Fileserver 功能 [--17-1.png-w331s] 6.
2016年4月14日,国外安全研究人员 Simon Zuckerbraun 曝光 Apache ActiveMQ Fileserver 存在多个安全漏洞,可使远程攻击者用恶意代码替代 Web 应用,在受影响系统上执行远程代码 由此,我们可以构造PUT请求上传 webshell 到 fileserver 目录,然后通过 Move 方法将其移动到有执行权限的 admin/ 目录。 上传 Webshell 方式 首先 PUT 一个 Jsp 的 Webshell 到 fileserver 目录 ? 在 fileserver/ 目录中 Webshell 并没有执行权限 ? 05 漏洞防护方案 1、ActiveMQ Fileserver 的功能在 5.14.0 及其以后的版本中已被移除。建议用户升级至 5.14.0 及其以后版本。 2、通过移除 conf\jetty.xml 的以下配置来禁用 ActiveMQ Fileserver 功能 ?
, connectWSclass FSClient(WebSocketClientProtocol): def onOpen(self): # send request to Fileserver self.sendMessage(OPERATION) def onMessage(self, msg, binary): # get response from Fileserver file_name) # at this place i want to send request to FSClient and this object send request for Fileserver # Client -> Server -> FSClient -> Fileserver # and when fileserver doing somework , he send response by sheme: # Fileserver -> FSclient -> Server -> Client elif typeMsg
上传文件 1.2 启动生成配置文件 [root@localhost ~]# cd /data/packages/go-fdfs/ [root@localhost go-fdfs]# chmod +x fileserver /fileserver Listen on :8080 ... Ctrl+C退出程序,配置文件已经生成 [root@localhost go-fdfs]# ls conf data files fileserver log static 1.3 修改配置文件 /fileserver & 关闭防火墙 systemctl stop firewalld && systemctl disable firewalld 测试访问http://192.168.8.88:8080
return } if ok, _ := regexp.MatchString("/css/", r.URL.String()); ok { http.StripPrefix("/css/", http.FileServer ) } else if ok, _ := regexp.MatchString("/js/", r.URL.String()); ok { http.StripPrefix("/js/", http.FileServer } else if ok, _ := regexp.MatchString("/img/", r.URL.String()); ok { http.StripPrefix("/img/", http.FileServer ServeHTTP(w, r) } func cssFile(w http.ResponseWriter, r *http.Request) { http.StripPrefix("/css/", http.FileServer ServeHTTP(w, r) } func imgFile(w http.ResponseWriter, r *http.Request) { http.StripPrefix("/img/", http.FileServer
= new File(dir, filename); System.out.println("file文件真实路径:" + fileServer.getAbsolutePath ()); //2,实现上传 uploadFile.transferTo(fileServer); String filePath String filename = uploadFile.getOriginalFilename(); //服务端保存的文件对象 File fileServer = new File(dir, filename); System.out.println("file文件真实路径:" + fileServer.getAbsolutePath ()); //2,实现上传 uploadFile.transferTo(fileServer); String
在Go语言中,我们可以使用http.FileServer()方法来处理静态文件。 http.NewServeMux() // 将静态文件目录和处理函数绑定在一起 mux.Handle("/static/", http.StripPrefix("/static/", http.FileServer 注册路由和处理函数 mux.HandleFunc("/", handlerFunc) http.ListenAndServe(":8080", mux)}在上面的示例中,我们首先使用http.FileServer
server.MapStaticFiles("/logos", "images/");//server.MapController<ApiController>("/api");server.MapController<FileServer 其中server.MapController<FileServer>("/My");就是调用相关Controller的方法,Controller也给个源码吧。。 using System.Linq;using System.Text;using System.Threading.Tasks;namespace ServerAPP{ public class FileServer
FileServer 函数 ? ? 例如: a) 项目的静态文件的目录结构如下: ? b) index.html 模板文件中引入的 css 样式的地址如下: ? c) 对静态文件的处理 http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("views/static