为了实现膳绫擎的办法,我们起首须要在法度榜样中找到那些处理文件上传的请求,之后测验测验经由过程Web开源框架中的LFI马脚来查看所有PID文件描述符,并经由过程文件描述符来拜访我们在Web办事器上上传的文件。在我们测试过的Web框架中,当拜访FILES字典时,这些文件描述符老是被迟缓加载,而Flask Web框架直接在HTTP GET请求填充了FILES字典字段,以下是超简单的Flask应用法度榜样:
经由过程应用请求处理法度榜样的PID,我们可以查看稻磁逄上打开的文件描述符:
然后我们返回到REPL并拜访上传的文件:
如今该文件已经在Web办事器中被拜访过了,此刻我们回到 /proc 目次,看看是否可以找到上传文件的内容:
后续我们对多个框架迟缓加载文件描述符这一问题进行了深刻的研究和分析。最后我们发明对于Flask和Django来说,并不是FILES 被迟缓加载,而是请求体的内容只有在被拜访时才会被处理。是以,根据这个结论我们可以轻松定位那些拜访HTTP请求体数据的任何请求处理法度榜样。一旦请求处理法度榜样拜访了包含在请求体中的数据,文件描述符就会被填充。
不雅然,我们找到了上传的文件!是以,对于我们正在评估的Web应用法度榜样来说,我们确认经由过程这种上传和引用文件的办法可以正常拜访到我们驻留在Web办事器中的JAR包文件!
我们可以经由过程 多次上传雷同的文件 来进一步削减文件路径搜刮空间,是以我修改了文件上传的代码使得可以上传雷同的九个文件:
# -*- coding: utf-8 -*-import requestsresponse = requests.get( "http://127.0.0.1:5000/", files={ "upload_file": open("/tmp/hullo", "rb"), "upload_file2": open("/tmp/hullo", "rb"), "upload_file3": open("/tmp/hullo", "rb"), "upload_file4": open("/tmp/hullo", "rb"), "upload_file5": open("/tmp/hullo", "rb"), "upload_file6": open("/tmp/hullo", "rb"), "upload_file7": open("/tmp/hullo", "rb"), "upload_file8": open("/tmp/hullo", "rb"), },)
运行此脚本后,拜访处理法度榜样中的 FILES 字典,并查看请求处理法度榜样PID目次中的 fd 目次内容,我们看到所有上传的文件都有打开的文件描述符:
是以,经由过程应用这种办法,我们可以包管具有特定号码的文件描述符终将会指向我们上传的文件。如不雅我们提交100个上传文件的请求,可能文件描述符50指向的就是我们的文件!反过来,我们如今须要猜测的独一值就是PID。
若何实施进击应用?
总而言之,为了引用上传文件以达到进击的目标,这是一种大年夜大年夜削减搜刮空间的办法,这在很多情况下可以使LFI成为RFI。如不雅你要应用此办法进行进击应用,请推敲以下事项:
-
我们起首编译这个java类,然后在代铝闼橛载它,具体实现如下图所示:
经由过程我们对多个Web框架(Django和Flask)的分析发明,当拜访FILE字典时框架会延迟加载文件引用。是以,我们必须定位 拜访FILES字典的 请求处理法度榜样 。一旦请求处理法度榜样拜访了FILES字典,文件描述符将在请求处理时代一向保持打开状况。
-
默认情况下,其他框架可能会填衬┞封些文件描述符,而这恰是我们下一步将要研究的内容。
-
当处理请求体中上传的文件时,有些框架不区分不合的请求方法,这在必定程度上解释这种进击办法不仅限于非幂等的HTTP verbs。
-
请求处理法度榜样须要拜访 所有要处理的上传文件 的FILES字典 。这就是说,如不雅处理法度榜样中的功能期望上传的文件是PDF,以履行请求处理法度榜样的中代码,而此时我们也预备上传一个JAR包文件,那么只要同时上传这两个文件即可,它们都将被付与文件描述符。
-
测验测验找到加载文件描述符的请求处理法度榜样,为了我们的代码审计工作可以或许顺利进行,我们发明有一个处理法度榜样会逐行处理一个文件的全部内容,所以我们上传了一个巨大年夜的文件,该巨大年夜的文件中当然也包含了我们想要履行的JAR包文件。
- 请留意,如不雅您上传的文件较小,则可能只读入内存,并且不会打开任何文件描述符。当对Flask Web框架进行测试时,我们发明1MB以下的文件会被直接加载到内存中,而1MB以汕9依υ?件则放在磁盘上。是以,我们须要在JAR包文件中额外填充当何可供进击应用的有效载荷。
后续更新
Django框架中拜访请求体数据代码如下所示:
经由过程此拜访请求填充的文件描述符如下所示:
推荐阅读
Wi-Fi 对移动计算的应用产生了巨大年夜的影响,使员工可以在任何处所拜访公司收集,咖啡店也能成为自力工作人>>>详细阅读
本文标题:应对安全漏洞:如何将LFI变为RFI
地址:http://www.17bianji.com/lsqh/37175.html
1/2 1