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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

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

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

安全分析與研究

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

背景

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

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

樣本分析

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

2.找到ngx_http_header_filter函數(shù),找到了關(guān)鍵字符串lkfakjf,如下所示:

3.F5之后,發(fā)現(xiàn)之后調(diào)用了一個connect_shell的函數(shù),如下所示:

4.通過對connect_shell進(jìn)行分析發(fā)現(xiàn),是一個反彈shell的功能,利用socket編程完成shell反彈,如下所示:

后門復(fù)現(xiàn)

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

2.接著進(jìn)行本地監(jiān)聽9999,如下所示:

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

4.此時nc里已經(jīng)得到了shell,如下所示:

原理分析

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

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

3.通過header_in的結(jié)構(gòu)繼續(xù)尋找,找到cookies的定義,如下所示:

4.最后找到關(guān)于cookies的結(jié)構(gòu)體情況,如下所示:

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

重現(xiàn)后門

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

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

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

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

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

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

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

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

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

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

6.運(yùn)行和調(diào)試nginx文件,能夠成功獲取輸入的特征字符串,如下所示:

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

8.接下來準(zhǔn)備復(fù)現(xiàn)反彈shell,添加功能代碼,代碼只能適用于帶有nc命令的系統(tǒng),編譯后進(jìn)行復(fù)現(xiàn)操作,如下所示:

9.現(xiàn)在的特征字符串被修改為123456,現(xiàn)在來觸發(fā)該后門,如下所示:

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

自此后門重現(xiàn)成功,整個分析和復(fù)現(xiàn)過程到此結(jié)束。

后門排查

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

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

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

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

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

威脅情報

HASH

ab498686505dfc645e14c6edad280da7

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

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

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。