精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

應對安全漏洞:如何將LFI變為RFI

新聞 安全
PHP文件包含漏洞的產生原因是在通過PHP的函數引入文件時,由于傳入的文件名沒有經過合理的校驗,從而操作了預想之外的文件,就可能導致意外的文件泄露甚至惡意的代碼注入。

前言

PHP文件包含漏洞的產生原因是在通過PHP的函數引入文件時,由于傳入的文件名沒有經過合理的校驗,從而操作了預想之外的文件,就可能導致意外的文件泄露甚至惡意的代碼注入。最常見的就屬于本地文件包含(Local File Inclusion)漏洞了。

常見漏洞代碼

if ($_GET['method']) {

   include $_GET['method'];

} else {

   include 'index.php';

}

一般情況下,程序的執行過程是當用戶提交url為 https://xianzhi.aliyun.com/sth.php?method=search.php 時,調用search.php里面的樣式內容和功能。直接訪問 https://xianzhi.aliyun.com/search.php 則會包含默認的index.php里面的樣式內容和功能。那么問題來了,如果我們提交),且1.jpg是由黑客上傳到服務器上的一個圖片,并在圖片的末尾添加了惡意的php代碼,那么惡意的代碼就會被當前文件執行,以此觸發本地文件包含漏洞。

有趣的發現

我和我的好朋友Mike Brooks一直致力于對一些開源的Web框架進行代碼審計工作,在對這些Web開源框架代碼審計的過程中,我們找到了一種將本地文件包含漏洞(LFI)轉換為遠程文件包含漏洞(RFI)的方法。并且依賴于我們駐留在Web服務器上的JAR包文件,我們發現了一個能夠執行任意代碼的方法。通常情況下,當以特定方式配置Web應用程序時,它將能夠加載Web服務器上的JAR包文件并在文件中搜索實現的java類。有意思的是,在Java類中,我們可以在正在被執行的java類上定義一個靜態代碼塊,具體如下所示:

public class LoadRunner {
    static {
        System.out.println("Load runner'ed");
    }

    public static void main(String[] args) {

    }
}

我們首先編譯這個java類,然后在代碼中加載它,具體實現如下圖所示:

現在,我們已經有了兩個有趣的發現:一個是可以在加載的JAR文件中插入執行代碼,另一個是在Web服務器上找到一個合適的文件路徑來加載JAR包文件。因此,我們現在必須找到的一種方式來讓應用程序以某種方式引用我們駐留在服務器上的JAR包文件。在這個探索的過程中,我們嘗試了很多的方法,包括去查看應用程序中的所有請求處理程序以確定能否進行文件上傳;甚至嘗試尋找可以在服務器上毒化文件的方法,以便將其轉化為JAR包文件,但是這些方法卻都沒有能夠奏效。盡管這樣,我們仍然沒有放棄去研究和探索,最終Mike Brooks想出了一個好主意。

文件描述符

​    一般情況下,大多數Web開源框架都會將上傳的文件落地到服務器的某個磁盤上,但文件的路徑是不可猜測的(通常使用GUID或其他隨機標識符來表示),如果我們不知道文件路徑,那又該如何去訪問上傳的文件呢?在Linux中,當一個進程有一個文件被打開時,它將在其 /proc/ 目錄中打開一個指向該文件的文件描述符。因此,如果我們有一個PID為1234的進程,并且該進程打開了磁盤上的某個文件,那么我們可以通過**/proc/1234/fd/***文件描述符來訪問該文件。這意味著,我們不需要猜測GUID或其他隨機值,我們只需要猜測HTTP請求處理程序的PID和上傳文件的文件描述符即可。因而用于訪問上傳文件的搜索空間就會大幅減少。不僅如此,如果我們已經有了LFI,加上磁盤上那些經常出現的、可以預測的PID(Web服務器上HTTP請求處理程序的PID)文件,因此獲取PID和文件描述符編號要比想象中簡單得多。

加載文件描述符

​    為了實現上面的方法,我們首先需要在程序中找到那些處理文件上傳的請求,之后嘗試通過Web開源框架中的LFI漏洞來查看所有PID文件描述符,并通過文件描述符來訪問我們在Web服務器上上傳的文件。在我們測試過的Web框架中,當訪問FILES字典時,這些文件描述符總是被緩慢加載,而Flask Web框架直接在HTTP GET請求填充了FILES字典字段,以下是超簡單的Flask應用程序:

# -*- coding: utf-8 -*-
import os

from flask import Flask, request

UPLOAD_FOLDER = "/tmp"

app = Flask(__name__)
app.config["UPLOAD_FOLDER"] = UPLOAD_FOLDER

@app.route("/", methods=["GET"])
def show_me_the_money():
    x = request
    import code
    code.interact(local=locals())

if __name__ == "__main__":
    app.run()

在這個應用程序中,我們有一個單一的處理程序,該處理程序允許在URL上掛載HTTP GET請求。然后我們在Ubuntu VM中運行這個程序,并通過HTTP GET請求將文件上傳到該服務器上。對于以前沒有使用過 import code 技巧的人來說,這是一個很好的方法來調試Python代碼和庫,因為在 code.interact 被調用時你將進入到python的REPL環境中去。

以下是通過HTTP GET請求上傳文件的簡單腳本:

# -*- coding: utf-8 -*-
import requests

response = requests.get(
    "http://127.0.0.1:5000/",
    files={
        "upload_file": open("/tmp/hullo", "rb"),
    },
)

而在 /tmp/hullo 的文件中,我們可以看到很多的“Hello World”:

然后,我們首先運行服務器,之后上傳文件,并進入Flask請求處理程序上下文中的python REPL環境,具體如下圖所示:

通過使用請求處理程序的PID,我們可以查看到磁盤上打開的文件描述符:

然后我們返回到REPL并訪問上傳的文件:

現在該文件已經在Web服務器中被訪問過了,此刻我們回到 /proc 目錄,看看是否可以找到上傳文件的內容:

果然,我們找到了上傳的文件!因此,對于我們正在評估的Web應用程序來說,我們確認通過這種上傳和引用文件的方法可以正常訪問到我們駐留在Web服務器中的JAR包文件!

我們可以通過 多次上傳相同的文件 來進一步減少文件路徑搜索空間,因此我修改了文件上傳的代碼使得可以上傳相同的九個文件:

# -*- coding: utf-8 -*-
import requests

response = 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。如果你要使用此方法進行攻擊利用,請考慮以下事項:

  1. 通過我們對多個Web框架(Django和Flask)的分析發現,當訪問FILE字典時框架會延遲加載文件引用。因此,我們必須定位 訪問FILES字典的 請求處理程序 。一旦請求處理程序訪問了FILES字典,文件描述符將在請求處理期間一直保持打開狀態。

  2. 默認情況下,其他框架可能會填充這些文件描述符,而這正是我們下一步將要研究的內容。

  3. 當處理請求體中上傳的文件時,有些框架不區分不同的請求方式,這在一定程度上說明這種攻擊方法不僅限于非冪等的HTTP verbs。

  4. PID并不意味著隨機化。無論我們的目標是什么(Ubuntu上的Apache,Fedora上的Nginx等),如果我們希望將其轉化為漏洞,那么我們可以創建一個本地設置,并查看與Web服務器和請求處理程序相關聯的PID。一般來說,當我們將服務安裝到*nix時,它們將在機器重新啟動時以類似的順序啟動。由于PID也按順序分配,這意味著我們可以大大減少PID搜索空間。

  5. 請求處理程序需要訪問 所有要處理的上傳文件 的FILES字典 。這就是說,如果處理程序中的功能期望上傳的文件是PDF,以執行請求處理程序的中代碼,而此時我們也準備上傳一個JAR包文件,那么只要同時上傳這兩個文件即可,它們都將被賦予文件描述符。

  6. 嘗試找到加載文件描述符的請求處理程序,為了我們的代碼審計工作能夠順利進行,我們發現有一個處理程序會逐行處理一個文件的全部內容,所以我們上傳了一個巨大的文件,該巨大的文件中當然也包含了我們想要執行的JAR包文件。

  7. 請注意,如果您上傳的文件較小,則可能只讀入內存,并且不會打開任何文件描述符。當對Flask Web框架進行測試時,我們發現1MB以下的文件會被直接加載到內存中,而1MB以上的文件則放在磁盤上。因此,我們需要在JAR包文件中額外填充任何可供攻擊利用的有效載荷。

后續更新

​    后續我們對多個框架緩慢加載文件描述符這一問題進行了深入的研究和分析。最后我們發現對于Flask和Django來說,并不是FILES 被緩慢加載,而是請求體的內容只有在被訪問時才會被處理。因此,根據這個結論我們可以輕松定位那些訪問HTTP請求體數據的任何請求處理程序。一旦請求處理程序訪問了包含在請求體中的數據,文件描述符就會被填充。

Django框架中訪問請求體數據代碼如下所示:

通過此訪問請求填充的文件描述符如下所示:

Flask Web框架中訪問請求體數據的代碼如下所示:

通過此訪問請求填充的文件描述符如下所示:

責任編輯:張燕妮 來源: 安全技術社區
相關推薦

2018-06-21 07:04:12

2011-12-26 11:22:48

2019-12-19 14:58:23

黑客網絡安全云計算

2013-06-03 14:39:01

2010-07-26 15:37:12

telnet安全漏洞

2014-06-03 11:36:18

2014-06-03 09:23:41

2023-12-31 09:06:08

2010-03-05 15:46:05

2022-07-06 11:50:43

漏洞網絡攻擊

2024-06-07 15:26:22

2017-08-15 17:39:52

2014-10-28 09:11:10

2010-09-17 16:16:28

2021-05-12 10:46:23

漏洞BINDDNS服務器

2020-10-09 09:52:00

漏洞分析

2009-03-07 09:59:16

2013-08-27 10:48:06

2021-09-22 08:00:00

安全漏洞數據

2015-12-17 14:02:14

處理云安全漏洞
點贊
收藏

51CTO技術棧公眾號

国产精品自在欧美一区| 四虎影视精品| 一区二区三区四区国产精品| 国产日韩欧美综合精品| 久草视频一区二区| 天天影视天天精品| 日韩av中文字幕在线| 另类小说色综合| 欧美人与动牲性行为| 久久这里只有精品首页| 亚洲一区中文字幕| 影音先锋在线国产| 欧美xxx在线观看| 国产午夜精品麻豆| 欧美成人精品一区二区综合免费| 亚洲日本天堂| 亚洲影院久久精品| 亚洲乱码一区二区三区| 天天色综合久久| 国产一区在线看| 国产成人涩涩涩视频在线观看 | 亚洲精品推荐| 3atv一区二区三区| 欧美污视频网站| 国产盗摄一区二区| 亚洲天堂2014| 亚洲高清视频一区| 欧美日韩国产中文字幕在线| 处破女av一区二区| 亚洲iv一区二区三区| 国产第一页在线观看| 亚洲久久成人| 久久69精品久久久久久久电影好| 国产调教在线观看| 亚洲性视频大全| 亚洲激情在线观看| 久久精品aⅴ无码中文字字幕重口| 24小时成人在线视频| 91成人国产精品| 亚洲成熟丰满熟妇高潮xxxxx| 黑人玩欧美人三根一起进| 亚洲女厕所小便bbb| 亚洲国产高清国产精品| 国产三区四区在线观看| 91香蕉国产在线观看软件| 999日本视频| 国产夫妻自拍av| 国产综合色视频| 成人性生交大片免费看视频直播| 中文字幕777| 日产国产高清一区二区三区| 国产精品成av人在线视午夜片| 九九热精品视频在线| 亚洲美女色禁图| 97精品一区二区三区| 国产无遮挡aaa片爽爽| 影音先锋久久| 性色av一区二区三区红粉影视| 久久精品视频9| 激情视频一区二区三区| 午夜精品福利电影| 亚洲天堂视频网站| 爽好多水快深点欧美视频| 国产精品女主播| 中文字幕在线日亚洲9| 麻豆精品久久久| 亚洲一区二区三区久久| 欧美猛交免费看| 女同久久另类69精品国产| 91青青国产在线观看精品| www国产亚洲精品久久网站| 自拍偷拍第9页| 欧美xxav| 欧美黑人巨大xxx极品| 精品无码一区二区三区电影桃花| 亚洲欧洲一区| 日韩av免费看| 一级黄色短视频| 国产成人在线观看| 精品综合在线| av在线电影观看| 亚洲视频一区二区在线观看| 国产片侵犯亲女视频播放| 欧美freesex黑人又粗又大| 色噜噜久久综合| 91精品999| 国产精伦一区二区三区| 亚洲欧美国产va在线影院| www中文在线| 亚洲第一伊人| 国产精品欧美风情| www.综合色| 久久久www成人免费毛片麻豆 | www.在线播放| 亚洲免费观看在线视频| 国产亚洲精品网站| 91精品一区| 日韩av在线一区| 久久噜噜色综合一区二区| 在线视频观看日韩| 成人xxxx视频| 日本护士...精品国| 自拍视频在线观看一区二区| 亚洲中文字幕无码专区| 日韩有码欧美| 亚洲美女久久久| 欧美极品视频在线观看| 日本亚洲欧美天堂免费| 成人女人免费毛片| 91伦理视频在线观看| 五月激情综合网| 三日本三级少妇三级99| 免费欧美激情| 久久人人97超碰精品888| 亚洲永久精品视频| 久久综合久久鬼色中文字| 一本大道东京热无码aⅴ| 日本精品另类| 精品在线观看国产| 国产精品19乱码一区二区三区| 美国毛片一区二区| 秋霞毛片久久久久久久久| 久久久久黄久久免费漫画| 欧美日韩高清一区二区| 亚洲乱码国产乱码精品精大量| 欧美~级网站不卡| 国产精品尤物福利片在线观看| 日本高清视频在线| 亚洲精品国久久99热| 不卡的av中文字幕| 国产中文字幕一区二区三区| 3344国产精品免费看| 黄色av免费观看| 亚洲免费三区一区二区| 天堂av在线8| 99国产**精品****| 国产日本欧美在线观看| av网站无病毒在线| 欧美私人免费视频| 国产伦理片在线观看| 性一交一乱一区二区洋洋av| 国产一区二区不卡视频| 国产三线在线| 精品成人一区二区三区四区| 久久久www成人免费毛片| 国产真实乱偷精品视频免| 在线观看成人av电影| 国模私拍国内精品国内av| 中文欧美日本在线资源| 中日精品一色哟哟| 国产精品精品国产色婷婷| 免费一区二区三区在线观看| 日韩欧美视频专区| 成人女保姆的销魂服务| 免费黄色网页在线观看| 91麻豆精品国产自产在线 | 亚洲国产日韩a在线播放性色| 亚洲天堂小视频| 国内精品福利| 国产在线精品日韩| 中文av在线全新| 国产亚洲视频在线观看| 在线视频免费观看一区| 亚洲摸摸操操av| 年下总裁被打光屁股sp| 国产精品亚洲综合久久| 欧美在线日韩精品| 免费视频观看成人| 欧美成人免费在线视频| 欧美在线 | 亚洲| 红桃av永久久久| 国产又粗又猛又爽又黄av| 精品一区二区免费| 加勒比海盗1在线观看免费国语版| 中文字幕一区二区三区中文字幕| 97精品国产97久久久久久免费 | 国产精品久久婷婷| 一区二区三区加勒比av| 丰满少妇在线观看资源站| 免费观看在线色综合| 午夜探花在线观看| 看全色黄大色大片免费久久久| 日韩av黄色在线观看| 国产黄大片在线观看画质优化| 精品国产伦理网| 波多野结衣大片| 亚洲精品中文字幕在线观看| 国产精品一区二区入口九绯色| 蜜臀av性久久久久蜜臀av麻豆| 精品嫩模一区二区三区| 亚欧洲精品视频在线观看| 国产日韩欧美中文| 樱花草涩涩www在线播放| 精品国产一区二区三区四区在线观看 | 亚洲精品在线观看www| 91麻豆成人精品国产免费网站| 亚洲国产一二三| 在线观看日本黄色| 99久久久精品免费观看国产蜜| 在线观看的毛片| 极品少妇一区二区三区| 一区二区不卡在线视频 午夜欧美不卡'| 日韩中文一区二区| 国产精品久久久久免费a∨| 狂野欧美性猛交xxxxx视频| 色777狠狠综合秋免鲁丝| 亚洲av成人精品日韩在线播放| 911精品国产一区二区在线| 99久久精品国产亚洲| 一区二区不卡在线播放 | 四虎成人免费在线| 欧美日韩精品专区| 久久青青草原亚洲av无码麻豆| 亚洲免费观看高清完整版在线观看熊| 深爱五月激情网| 丁香桃色午夜亚洲一区二区三区| 91 在线视频观看| 久久av一区二区三区| 精品人妻少妇一区二区| 天天射—综合中文网| 神马影院一区二区三区| 天天躁日日躁狠狠躁欧美| 国产精品乱码视频| 国产在线不卡一区二区三区| 国产免费一区二区三区香蕉精| 天堂√中文最新版在线| 久久久免费av| 麻豆av在线免费观看| 久久最新资源网| 日本三级视频在线播放| 一区二区av在线| 你懂的视频在线免费| 日韩精品在线视频观看| 蜜桃91麻豆精品一二三区| 欧美一区二区视频免费观看| 91精品国产色综合久久不8| 欧美一a一片一级一片| 波多野结衣一本一道| 日韩欧美一区二区三区久久| 国产又爽又黄的视频| 偷窥国产亚洲免费视频| 97人人澡人人爽人人模亚洲 | 久久久久久无码午夜精品直播| 欧美日韩性视频在线| 久久黄色精品视频| 色综合天天综合色综合av | 国产一区二区三区日韩| 北条麻妃亚洲一区| 国产高清在线精品| 亚洲一区和二区| 成人一区二区三区| 天天躁日日躁狠狠躁av麻豆男男| 成人性色生活片免费看爆迷你毛片| 国产精品无码自拍| 99精品在线观看视频| 日韩av在线看免费观看| 国产视频一区在线播放| 欧美成人短视频| 亚洲视频在线观看三级| 久草免费在线视频观看| 黄色成人在线免费| 久久国产乱子伦精品| 欧美三级三级三级爽爽爽| 91中文字幕在线播放| 日韩一区二区三区在线视频| 色香蕉在线视频| 亚洲免费av电影| 色视频在线免费观看| 欧美精品一区在线播放| av资源中文在线| 国产精品福利久久久| 99精品美女视频在线观看热舞| 91视频免费在线观看| 国内精品国产成人国产三级粉色| 快播亚洲色图| 欧美第一精品| 欧美这里只有精品| 视频一区中文字幕| 波多野结衣在线免费观看| av福利精品导航| 九一在线免费观看| 一区2区3区在线看| 亚洲av无码精品一区二区| 91麻豆精品国产| 亚洲三区在线播放| 久久精品这里热有精品| 国产激情视频在线看| 国产精品久久97| 成人台湾亚洲精品一区二区| 日韩精品一区二区三区外面| 欧美成人日韩| 成人性做爰aaa片免费看不忠| 国产乱子轮精品视频| 玖玖爱在线观看| 亚洲三级视频在线观看| 中文字幕在线播| 精品久久久久99| 欧美日韩在线资源| 欧洲一区二区视频| 在线视频亚洲欧美中文| 日韩国产欧美一区| 国产综合精品| 亚洲午夜精品一区| 久久精品男人的天堂| 国产在线一卡二卡| 在线观看亚洲成人| 日韩精品福利| 欧美人在线视频| 青青青国产精品| 欧美极品一区| 日韩一级精品| 超级砰砰砰97免费观看最新一期 | 亚洲国产欧美日韩精品| 高h视频在线观看| 国产精品xxx视频| 欧美三级电影在线| 日本男女交配视频| 国模少妇一区二区三区| 国产精品美女高潮无套| 欧美色播在线播放| 性欧美18一19性猛交| 久久视频国产精品免费视频在线| **欧美日韩在线观看| 久久99精品久久久久子伦| 欧美 亚欧 日韩视频在线 | 欧美成人在线免费| 岛国一区二区| 日韩欧美一区二区三区久久婷婷| 99精品视频免费观看视频| 美女搡bbb又爽又猛又黄www| 亚洲女女做受ⅹxx高潮| av中文字幕免费| 久久久国产视频| 亚洲青青一区| 中文字幕中文字幕99| 久久99国产精品久久99| 亚洲色图日韩精品| 欧美日本韩国一区二区三区视频| 成人免费在线电影| 国产精品扒开腿做| 不卡中文一二三区| 欧美第一页浮力影院| 国产精品国产馆在线真实露脸 | 国产成人福利片| 欧美日韩精品在线观看视频| 日韩欧美美女一区二区三区| 亚洲按摩av| 国产精品10p综合二区| 激情综合激情| 97人妻天天摸天天爽天天| 欧美视频在线观看免费网址| 视频一区二区三区在线看免费看| 欧美孕妇孕交黑巨大网站| 国产精品一区二区av日韩在线| 国产成人久久777777| 国产亚洲欧洲一区高清在线观看| 欧美一区二区三区不卡视频| 在线精品91av| 国产精品一区二区三区www| 国产在线无码精品| 不卡的av网站| 天干夜夜爽爽日日日日| 中文字幕欧美日韩在线| aa亚洲一区一区三区| 屁屁影院ccyy国产第一页| 成人毛片老司机大片| 五月婷婷色丁香| 色久欧美在线视频观看| 欧美日韩午夜电影网| r级无码视频在线观看| 97久久精品人人做人人爽| 欧美超碰在线观看| 久久黄色av网站| 精品无人区一区二区| 欧美黑人又粗又大又爽免费| 中文字幕一区二区视频| 亚洲免费不卡视频| 国产xxx69麻豆国语对白| 91九色精品| 美女又爽又黄免费| 欧美系列一区二区| 欧美hdxxx| 日韩少妇中文字幕| 国产成人精品午夜视频免费| 在线观看日韩中文字幕| 日韩一区二区三区国产| 久久aimee| 99sesese| 日韩欧美在线第一页| 免费在线看a| 久久国产精品久久精品国产| 久国产精品韩国三级视频| 国产成年人免费视频| 色婷婷av一区二区三区在线观看| 久久婷婷国产| 天堂av在线8| 在线视频欧美精品| 91破解版在线观看| 手机福利在线视频| 久久无码av三级|