日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

nginx header参数丢失_某Nginx后门分析与重现

發布時間:2024/7/23 Nginx 97 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx header参数丢失_某Nginx后门分析与重现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

安全分析與研究

專注于全球惡意軟件的分析與研究

背景

前幾天,接到一個nginx后門樣本,本著就分析和復現的思路,完整的將整個過程做一次復現,不料最終還獲取到了后門的核心代碼部分,遂將其整理發布,僅供學習研究之用。

在后續分析之前先來了解下nginx后門的功能。通過在Cookie中包含特征字符串lkfakjfa,并填寫需要反彈的ip和端口,完成shell反彈,這就是后門的一個大致情況。

樣本分析

1.在已有的分析情報的幫助下,得知nginx后門位于ngx_http_header_filter,IDA裝載樣本,發現樣本帶有符號信息,如下所示:

2.找到ngx_http_header_filter函數,找到了關鍵字符串lkfakjf,如下所示:

3.F5之后,發現之后調用了一個connect_shell的函數,如下所示:

4.通過對connect_shell進行分析發現,是一個反彈shell的功能,利用socket編程完成shell反彈,如下所示:

后門復現

1.首先啟動后門nginx文件,由于nginx會綁定80端口,如果多次啟動會提示80端口被占用而無法啟動,如下所示:

2.接著進行本地監聽9999,如下所示:

3.使用curl來觸發漏洞,如下所示:

4.此時nc里已經得到了shell,如下所示:

原理分析

1.通過gdb調試和IDA分析發現,要判斷cookies中是否存在特征字符串lkfakjf,用到了一個這樣的結構體ngx_http_request_t,使用source insight打開nginx源碼,定位到ngx_http_header_filter,發現參數就是ngx_http_request_t,查看該結構體的情況,如下所示:

2.該結構體相對比較大,這里截圖只留下要使用的部分header_in,如下所示:

3.通過header_in的結構繼續尋找,找到cookies的定義,如下所示:

4.最后找到關于cookies的結構體情況,如下所示:

5.結合IDA中代碼分析,v4就是cookies結構體,通過結構體偏移+32字節定位到輸入的特征字符串,在這里我也沒有分析的特別清楚,初步判斷應該是ngx_pool_t結構體,如下所示:

重現后門

1.首先,我們要先獲取cookies的結構,通過r->headers_in.cookies.elts即可獲得,然后取到void *elts的內容,最后通過32字節偏移得到存儲輸入特征碼的地址,取其值即可拿到輸入的特征字符串的值,最后的代碼形式,如下所示:

對這代碼做個解釋,首先v1和v2是long *的指針。

第一句代碼(long *)r->headers_in.cookies.elts;將void *的elts指針轉化為long *的指針。

第二句代碼v2=(long *)*v1;*v1是取其值,在將其值轉化為long*的指針。

第三句代碼cookie =(char *)*(v2+4);v2+4是表示在v2的基礎上,偏移4個long*個字節,如果你的v2定義為char *這里就是v2+32;*(v2+4)取該偏移的內容,最后轉化為char *的指針。

以上代碼只適用于64位linux,以上代碼只適用于64位linux,以上代碼只適用于64位linux,重要的事情說三遍。

2.使用nginx的configure配置,只需要配置--prefix=/root/nginx即可,當configure運行完成后會生成Makefile文件。配置過程中,可能缺少很多的依賴,逐個安裝即可,如下所示:

3.然后修改位于objs里的Makefile文件,修改為如下配置,否則編譯會報錯,如下所示:

4.此時使用make編譯,等待編譯完成,如下所示:

5.make install安裝一下,安裝的位置為之前配置的prefix路徑,如下所示:

6.運行和調試nginx文件,能夠成功獲取輸入的特征字符串,如下所示:

7.其中rsi為觸發漏洞的輸入,rdi為內置特征字符串,這里選擇了printf打印,能夠成功獲取到輸入的特征字符串,如下所示:

8.接下來準備復現反彈shell,添加功能代碼,代碼只能適用于帶有nc命令的系統,編譯后進行復現操作,如下所示:

9.現在的特征字符串被修改為123456,現在來觸發該后門,如下所示:

10.成功接收到反彈的shell,如下所示:

自此后門重現成功,整個分析和復現過程到此結束。

后門排查

目前后門排查只能針對特定的版本,如果出現新nginx后門,排查手段大概率會失效。

1.本地驗證 通過grep命令判斷當前運行對nginx里面是否存在"/bin/sh"可疑字符串

$ which nginx |xargs grep "/bin/sh" –la

2.將nginx文件提取出來,使用IDA分析查找ngx_http_header_filter,下載nginx源碼和IDA F5做對比判斷是否存在后門。

最好的效果是下載nginx對應的源碼對比是否有增加或改動的地方,但是這份方法比較耗時耗力,但是效果比較好。

威脅情報

HASH

ab498686505dfc645e14c6edad280da7

這篇文章作者很早之前就發給我了,一直沒時間編輯發布,后面作者也發布在了看雪論壇,鏈接地址:

https://bbs.pediy.com/thread-260954.htm

安全分析與研究專注于全球惡意軟件的分析與研究,追蹤全球黑客組織攻擊活動,不忘初心,專注,專業,堅持,歡迎關注。

總結

以上是生活随笔為你收集整理的nginx header参数丢失_某Nginx后门分析与重现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。