代碼注入漏洞(代碼注入漏洞什么意思)
網(wǎng)安教育
培養(yǎng)網(wǎng)絡(luò)安全人才
技術(shù)交流、學(xué)習(xí)咨詢
業(yè)務(wù)邏輯篡改
密碼修改/重置流程跨越
漏洞描述
密碼修改功能常采用分步驟方式來(lái)實(shí)現(xiàn),攻擊者在未知原始密碼的情況下繞過(guò)某些檢驗(yàn)步驟修改用戶密碼。
測(cè)試方法:
完成修改/重置密碼的正常流程;
繞過(guò)檢驗(yàn)原密碼等步驟,直接訪問(wèn)輸入新密碼頁(yè)面,輸入新密碼,修改/重置密碼。
風(fēng)險(xiǎn)分析:
有些密碼修改/重置流程采用step=1、step=2類似的方式實(shí)現(xiàn),如果應(yīng)用校驗(yàn)不全面,
攻擊者可繞過(guò)前面的步驟,直接訪問(wèn)最后一步,輸入新密碼進(jìn)行修改/重置。
風(fēng)險(xiǎn)等級(jí):
【高?!浚豪@過(guò)原密碼驗(yàn)證或繞過(guò)驗(yàn)證碼
修復(fù)方案
1一次性填寫校驗(yàn)信息(原始密碼、新密碼等)后再提交修改/重置密碼請(qǐng)求。
負(fù)值反沖
漏洞描述
應(yīng)用程序未校驗(yàn)訂單數(shù)據(jù)的取值范圍,交易存在負(fù)值反沖。
測(cè)試方法
提交訂單時(shí)攔截請(qǐng)求,修改訂單參數(shù)為負(fù)數(shù),如商品單價(jià)、數(shù)量、總價(jià)等。
風(fēng)險(xiǎn)分析
通過(guò)篡改訂單參數(shù),使得訂單金額為負(fù)值,在使用余額支付時(shí)余額反而增加。
風(fēng)險(xiǎn)等級(jí):
展開(kāi)全文
【高?!浚何磳?duì)數(shù)據(jù)進(jìn)行校驗(yàn),導(dǎo)致業(yè)務(wù)數(shù)據(jù)被污染。
修復(fù)方案:
1.服務(wù)器端在生成交易訂單時(shí),商品的價(jià)格從數(shù)據(jù)庫(kù)中取出,禁止使用客戶端發(fā)送的商品價(jià)格。
2.服務(wù)器端對(duì)客戶端提交的交易數(shù)據(jù)(如商品ID、商品數(shù)量、商品價(jià)格等)的取值范圍進(jìn)行校驗(yàn),將商品ID和商品價(jià)格與數(shù)據(jù)庫(kù)中的數(shù)據(jù)對(duì)比校驗(yàn),商品數(shù)量為大于零的整型數(shù)。
3.服務(wù)器端在生成支付訂單時(shí),對(duì)支付訂單中影響支付金額的所有因素(比如商品ID、商品數(shù)量、商品價(jià)格、訂單編號(hào)等)進(jìn)行簽名,對(duì)客戶端提交的支付訂單進(jìn)行校驗(yàn)。
正負(fù)值對(duì)沖
漏洞描述
應(yīng)用程序未校驗(yàn)訂單數(shù)據(jù)的取值范圍,交易存在正負(fù)值對(duì)沖。
測(cè)試方法
提交訂單(包含多種商品)時(shí)攔截請(qǐng)求,修改部分商品的單價(jià)或數(shù)量,保證訂單總金額為正數(shù)。
風(fēng)險(xiǎn)分析
由于應(yīng)用會(huì)校驗(yàn)訂單總金額的取值范圍,所以在保證該條件滿足的前提下,修改個(gè)別商品的數(shù)量,達(dá)到正負(fù)值對(duì)沖。
風(fēng)險(xiǎn)等級(jí):
【高危】:未對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),導(dǎo)致業(yè)務(wù)數(shù)據(jù)被污染。
修復(fù)方案:
1服務(wù)器端在生成交易訂單時(shí),商品的價(jià)格從數(shù)據(jù)庫(kù)中取出,禁止使用客戶端發(fā)送的商品價(jià)格。
2服務(wù)器端對(duì)客戶端提交的交易數(shù)據(jù)(如商品ID、商品數(shù)量、商品價(jià)格等)的取值范圍進(jìn)行校驗(yàn),將商品ID和商品價(jià)格與數(shù)據(jù)庫(kù)中的數(shù)據(jù)對(duì)比校驗(yàn),商品數(shù)量為大于零的整型數(shù)。
3服務(wù)器端在生成支付訂單時(shí),對(duì)支付訂單中影響支付金額的所有因素(比如商品ID、商品數(shù)量、商品價(jià)格、訂單編號(hào)等)進(jìn)行簽名,對(duì)客戶端提交的支付訂單進(jìn)行校驗(yàn)。
業(yè)務(wù)流程跳躍
漏洞描述
業(yè)務(wù)邏輯流程分步驟進(jìn)行且能越過(guò)中間校驗(yàn)步驟直接進(jìn)行后續(xù)操作,導(dǎo)致中間校驗(yàn)等步驟失效。
測(cè)試方法:
首先完成正常的業(yè)務(wù)邏輯步驟,獲取每一個(gè)步驟的請(qǐng)求;
繞過(guò)中間步驟,直接訪問(wèn)最后一個(gè)或幾個(gè)驗(yàn)證請(qǐng)求,看是否可繞過(guò)。
風(fēng)險(xiǎn)分析
攻擊者可利用該漏洞繞過(guò)業(yè)務(wù)流程檢測(cè),進(jìn)行非法修改他人密碼等危險(xiǎn)操作。
風(fēng)險(xiǎn)等級(jí):
【高?!浚豪@過(guò)前面的校驗(yàn)步驟,直接跳轉(zhuǎn)至后面的校驗(yàn)步驟。
修復(fù)方案
建議在不影響業(yè)務(wù)的前提下,在Session中添加對(duì)每一步流程頁(yè)面的校驗(yàn)標(biāo)志位,在新步驟頁(yè)面瀏覽過(guò)程中,僅能夠順序執(zhí)行頁(yè)面校驗(yàn),不可進(jìn)行跳步操作,例如:頁(yè)面二完成后,應(yīng)更新Flag=3,則僅能夠打開(kāi)頁(yè)面三。
業(yè)務(wù)功能失效
通配符注入
漏洞描述
允許使用通配符構(gòu)造語(yǔ)句查詢數(shù)據(jù)庫(kù),導(dǎo)致拒絕服務(wù)攻擊問(wèn)題。
測(cè)試方法
模糊查詢時(shí)輸入第一個(gè)字符’%‘或’_’,sql會(huì)遍歷全表,導(dǎo)致應(yīng)用訪問(wèn)緩慢。
風(fēng)險(xiǎn)分析:SQL中通配符的使用如下:
1%包含零個(gè)或多個(gè)字符的任意字符串。
2_任何單個(gè)字符。
3[]指定范圍(例如 [a-f])或集合(例如 [abcdef])內(nèi)的任何單個(gè)字符。
4[^]不在指定范圍(例如 [^a - f])或集合(例如 [^abcdef])內(nèi)的任何單個(gè)字符。
5在模糊查詢 LIKE中,對(duì)于輸入數(shù)據(jù)中的通配符必須轉(zhuǎn)義,否則會(huì)造成客戶想查詢包含這些特殊字符的數(shù)據(jù)時(shí),這些特殊字符卻被解析為通配符,數(shù)據(jù)庫(kù)響應(yīng)緩慢,導(dǎo)致拒絕服務(wù)攻擊。
風(fēng)險(xiǎn)等級(jí):
【中危】:通配符注入引發(fā)數(shù)據(jù)庫(kù)響應(yīng)緩慢
修復(fù)方案
1有兩種將通配符轉(zhuǎn)義為普通字符的方法:
2
31) 使用ESCAPE關(guān)鍵字定義轉(zhuǎn)義符(通用)
4在模式中,當(dāng)轉(zhuǎn)義符置于通配符之前時(shí),該通配符就解釋為普通字符。例如,要搜索在任意位置包含字符串 5% 的字符串,請(qǐng)使用:
5WHERE ColumnA LIKE '%5/%%'ESCAPE '/'
62) 在方括號(hào) ([ ]) 中只包含通配符本身,或要搜索破折號(hào) (-) 而不是用它指定搜索范圍,請(qǐng)將破折號(hào)指定為方括號(hào)內(nèi)的第一個(gè)字符。例如:
7符號(hào) 含義
8LIKE '5[%]'5%
9LIKE '5%'5后跟 0個(gè)或多個(gè)字符的字符串
10LIKE '[_]n'_n
11LIKE '[ [ ]'[
12LIKE ']'] (右括號(hào)不需要轉(zhuǎn)義)
13
14所以,對(duì)輸入?yún)?shù)的關(guān)鍵字過(guò)濾后,還需要做下面轉(zhuǎn)換確保LIKE的正確執(zhí)行
15privatestaticstringConvertSqlForLike( stringsql )
16{
17sql = sql.Replace( "[",
18"[[]");
19// 這句話一定要在下面兩個(gè)語(yǔ)句之前,否則作為轉(zhuǎn)義符的方括號(hào)會(huì)被當(dāng)作數(shù)據(jù)被再次處理
20sql = sql.Replace( "_",
21"[_]");
22sql = sql.Replace( "%",
23"[%]");
24returnsql;
25}
業(yè)務(wù)功能濫用
短信定向轉(zhuǎn)發(fā)
漏洞描述
短信接收人可任意指定
測(cè)試方法
攔截發(fā)送短信的請(qǐng)求,將手機(jī)號(hào)改為測(cè)試人員的手機(jī)號(hào),測(cè)試是否可接收短信驗(yàn)證碼。
風(fēng)險(xiǎn)分析
攻擊者可利用該漏洞將驗(yàn)證碼發(fā)送到自己的手機(jī)號(hào)上,重置他人密碼或轉(zhuǎn)賬。
風(fēng)險(xiǎn)等級(jí):
【高危】:短信接收人可任意指定
修復(fù)方案
發(fā)送短信時(shí)手機(jī)號(hào)從當(dāng)前會(huì)話中獲取,避免從前端傳入。
郵件可定向轉(zhuǎn)發(fā)
漏洞描述
應(yīng)用系統(tǒng)發(fā)送郵件的接收人可由客戶端任意指定
測(cè)試方法:=
攔截發(fā)送郵件的請(qǐng)求,將接收人郵箱改為測(cè)試人員的郵箱地址,測(cè)試是否可接收郵件。
風(fēng)險(xiǎn)分析
攻擊者可利用該漏洞將郵件發(fā)送到自己的郵箱中,重置他人密碼。
風(fēng)險(xiǎn)等級(jí):
【高?!浚亨]件接收人可任意指定
修復(fù)方案
發(fā)送郵件時(shí)郵箱從當(dāng)前會(huì)話中獲取,避免從前端傳入。
業(yè)務(wù)接口調(diào)用缺陷
漏洞描述
應(yīng)用的業(yè)務(wù)接口存在缺陷,可以通過(guò)業(yè)務(wù)接口直接進(jìn)行惡意操作。
測(cè)試方法
把業(yè)務(wù)邏輯和功能模塊呈現(xiàn)的內(nèi)容結(jié)合,推測(cè)出隱藏的API接口。
如用戶信息的接口是http://www.xxx.com/api/user/userInfo,推測(cè)重置密碼接口可能是http://www.xxx.com/api/user/passReset,文件上傳接口是http://www.xxx.com/api/user/uploadFile等。
如果這些接口沒(méi)有限制訪問(wèn),則可以直接調(diào)用并提交數(shù)據(jù)。
針對(duì)開(kāi)源或商業(yè)軟件的業(yè)務(wù)接口調(diào)用缺陷可參考《通用系統(tǒng)安全測(cè)試指導(dǎo)文檔》
風(fēng)險(xiǎn)分析
攻擊者可通過(guò)編寫API枚舉腳本,惡意調(diào)用敏感接口,從而進(jìn)行提交數(shù)據(jù)等操作。
風(fēng)險(xiǎn)等級(jí):
【高危】:通過(guò)業(yè)務(wù)接口能夠操作核心業(yè)務(wù)內(nèi)容,進(jìn)行越權(quán)
【高?!浚和ㄟ^(guò)業(yè)務(wù)接口能夠獲得重要敏感數(shù)據(jù)
【中危】:通過(guò)業(yè)務(wù)接口能夠獲得中等程度敏感數(shù)據(jù)
修復(fù)方案
對(duì)于每一個(gè)訪問(wèn)的接口都首先檢查當(dāng)前用戶是否已經(jīng)登錄并授權(quán)(不需要認(rèn)證的接口除外,例如,免費(fèi)下載接口等)。
IMAP/SMTP注入
漏洞描述
和廣為人知的諸如SQL注入、XPath注入等技術(shù)類似,郵件服務(wù)器注入技術(shù)也是通過(guò)一個(gè)對(duì)用戶提供的數(shù)據(jù)沒(méi)有嚴(yán)格檢查的webmail應(yīng)用程序?qū)MAP命令或者SMTP命令注入到郵件服務(wù)器。
要向郵件服務(wù)器注入命令,前提條件是允許用戶通過(guò)webmail應(yīng)用程序訪問(wèn)其端口25(SMTP)和143(IMAP)。
測(cè)試方法
要利用SMTP注射,用戶必須事先通過(guò)認(rèn)證,所以用戶必須有一個(gè)有效的webmail帳戶。通過(guò)SMTP發(fā)送電子郵件消息的格式如下:
1* 發(fā)送方的e-mail地址
2* 接收方的e-mail地址
3* 主題
4* 消息主體
5* 附件
CC/BCC注入
1在發(fā)送者字段(sender)后注入CC和BCC參數(shù)
2From:sender@domain.com%0ACc:recipient@domain.com%0ABcc:recipient1@domain.com
3所以現(xiàn)在,消息將被發(fā)送到recipient和recipient1賬戶。
參數(shù)注射
1From:sender@domain.com%0ATo:attacker@domain.com
2現(xiàn)在消息將被發(fā)送到原來(lái)的收件人和攻擊者帳戶。注意,這里的攻擊者的賬戶是我們通過(guò)注入額外傳入的。
郵件主題注入
1From:sender@domain.com%0ASubject:This’ s%20Fake%20Subject
2攻擊者注入的假的主題subject將被添加到原來(lái)的主題中并且在某些情況下將取代原本的主題subject。這取決于郵件服務(wù)行為。即代碼編寫的容錯(cuò)性,當(dāng)參數(shù)中出現(xiàn)兩個(gè)subject的時(shí)候代碼是選擇丟棄還是后者覆蓋。
改變消息的主體body
1要注意 SMTP的 Mail格式,消息主題和頭部 Header之間有兩個(gè)換行符(和 HTTP是一樣的)。
2From:sender@ domain. com% 0A% 0AMy% 20New% 20% 0Fake% 20Message.
3假消息將被添加到原始消息中。
風(fēng)險(xiǎn)分析
電子郵件注入允許惡意攻擊者注入任意郵件頭字段,BCC、CC、主題等,它允許黑客通過(guò)注入手段從受害者的郵件服務(wù)器發(fā)送垃圾郵件。
風(fēng)險(xiǎn)等級(jí):
【高?!浚嚎沙晒俪置艽a找回等信息
【高?!浚嚎沙晒Πl(fā)送垃圾郵件
修復(fù)方案
建議從以下幾個(gè)方面進(jìn)行防御:
1.所有用戶輸入應(yīng)該被認(rèn)為是不可信的。使用正則表達(dá)式來(lái)過(guò)濾用用戶提交的數(shù)據(jù)。例如,可以在輸入字符串中搜索(r 或 n)。
2.使用外部組件和庫(kù),例如ZEND mail、PEAR mail和swift mailer。
3.ModSecurity可以阻止服務(wù)器級(jí)別的電子郵件注入。利用ModSecurity,可以檢測(cè)通過(guò)POST或GET提交的CC, BCC或目的地址,并且拒絕任何包含這些字母請(qǐng)求。
引用第三方不可控腳本/URL
漏洞描述
頁(yè)面中引用了不可控的腳本或超鏈接
測(cè)試方法
檢查頁(yè)面內(nèi)容,是否引用了第三方未知腳本或超鏈接,如惡意的js腳本或病毒木馬的下載鏈接等。
風(fēng)險(xiǎn)分析
攻擊者可在網(wǎng)站中插入惡意鏈接或腳本,導(dǎo)致正常用戶瀏覽時(shí)cookie被竊取或被種植病毒木馬。
風(fēng)險(xiǎn)等級(jí):
【高?!浚捍嬖诓豢煽赝怄溁蚰_本,且未經(jīng)過(guò)審批
【中?!浚捍嬖诓豢煽赝怄溁蚰_本,但可提供審批記錄
修復(fù)方案
建議在不影響業(yè)務(wù)的前提下,對(duì)網(wǎng)站引用的文件和源代碼進(jìn)行審查,一經(jīng)發(fā)現(xiàn)有未審批的外鏈或腳本,應(yīng)立即刪除。
開(kāi)啟危險(xiǎn)接口
漏洞描述
開(kāi)啟可利用的危險(xiǎn)接口,如獲取訂單信息、用戶身份信息等。
測(cè)試方法:
使用掃描器掃描特殊目錄和鏈接
根據(jù)正常接口的命名特征猜測(cè)隱藏的危險(xiǎn)接口,如獲取個(gè)人信息接口是getUserInfo,猜測(cè)獲取訂單信息接口getOrderDetail。
風(fēng)險(xiǎn)分析
開(kāi)啟了危險(xiǎn)接口,如訂單信息打印、上傳、web管理控制臺(tái)等,可能被攻擊者發(fā)現(xiàn)并利用,直接操作應(yīng)用數(shù)據(jù),造成數(shù)據(jù)泄漏等風(fēng)險(xiǎn)。
風(fēng)險(xiǎn)等級(jí):
【高危】:正常情況接口是在認(rèn)證之后被調(diào)用,如果可公網(wǎng)直接無(wú)認(rèn)證使用
【中危】:存在特權(quán)、非正常用戶不可知但可利用接口
修復(fù)方案:
1.敏感接口增加訪問(wèn)控制,避免未授權(quán)訪問(wèn);
2.用戶訪問(wèn)接口需校驗(yàn)權(quán)限,避免越權(quán)訪問(wèn)。
未驗(yàn)證的URL跳轉(zhuǎn)
漏洞描述
服務(wù)端未對(duì)傳入的跳轉(zhuǎn)url變量進(jìn)行檢查和控制,可能導(dǎo)致可惡意構(gòu)造任意一個(gè)惡意地址,誘導(dǎo)用戶跳轉(zhuǎn)到惡意網(wǎng)站。
由于是從可信的站點(diǎn)跳轉(zhuǎn)出去的,用戶會(huì)比較信任,所以跳轉(zhuǎn)漏洞一般用于釣魚(yú)攻擊,通過(guò)轉(zhuǎn)到惡意網(wǎng)站欺騙用戶輸入用戶名和密碼盜取用戶信息,或欺騙用戶進(jìn)行金錢交易;
也可能引發(fā)的XSS漏洞(主要是跳轉(zhuǎn)常常使用302跳轉(zhuǎn),即設(shè)置HTTP響應(yīng)頭,Locatioin: url,如果url包含了CRLF,則可能隔斷了http響應(yīng)頭,使得后面部分落到了http body,從而導(dǎo)致xss漏洞)。
另外在struts2 中存在重定向的漏洞,是因?yàn)閟truts2由于縮寫的導(dǎo)航和重定向前綴“action:”、 “redirect:”、 “redirectAction:” 等參數(shù)前綴的內(nèi)容沒(méi)有被正確過(guò)濾導(dǎo)致的開(kāi)放式重定向漏洞。
測(cè)試方法:
首先找到網(wǎng)站相關(guān)url中存在跳轉(zhuǎn)鏈接的參數(shù)(如登陸頁(yè)面)。
在檢測(cè)的同時(shí),可以修改參數(shù)中的合法URL為非法URL,然后查看是否能正常跳轉(zhuǎn)或者通過(guò)抓包工具獲取其HTTP響應(yīng)頭中Host:的值是否包含了構(gòu)造的URL。
如果是struts2重定向漏洞,則可通過(guò)web掃描工具掃描發(fā)現(xiàn),或者手工驗(yàn)證,直接在URL后添加?redirect:+指定釣魚(yú)鏈接,例如:10.1.82.53:9098/admin/login.action?redirect:http://diaoyu.com進(jìn)行驗(yàn)證。
風(fēng)險(xiǎn)分析
攻擊者利用URL跳轉(zhuǎn)漏洞來(lái)欺騙安全意識(shí)低的用戶,從而導(dǎo)致“中獎(jiǎng)”之類的欺詐事件發(fā)生。
同時(shí)利用URL跳轉(zhuǎn),也可以突破常見(jiàn)的基于“白名單方式”的一些安全限制,如傳統(tǒng)IM里對(duì)于URL的傳輸會(huì)進(jìn)行安全校驗(yàn),
但是對(duì)于知名網(wǎng)站的域名及URL將直接允許通過(guò)并且顯示為可信的URL,一旦該可信的URL里包含URL跳轉(zhuǎn)漏洞將導(dǎo)致安全限制被繞過(guò)。
URL跳轉(zhuǎn)最典型的例子就是登錄跳轉(zhuǎn),示例代碼如下:
1publicvoiddoRedirect(HttpServletRequest req, HttpServletResponse res)
2{
3String jumpURL=request.getParameter(“jumptoURL”);
4response.setHeader( "Location",jumpURL);
5}
6若程序未過(guò)濾jumptoURL參數(shù),攻擊者將惡意鏈接:http: //www.xxx.com/login.jsp?jumptoURL=http://www.evil.com發(fā)給其他用戶,
7安全意識(shí)較低的用戶會(huì)認(rèn)為該鏈接展現(xiàn)的內(nèi)容是www.xxx.com,從而產(chǎn)生欺詐行為。
8同時(shí)由于QQ、淘寶旺旺等在線IM都是基于URL的過(guò)濾,對(duì)部分站點(diǎn)會(huì)通過(guò)白名單的方式直接通過(guò),因此惡意URL可以在IM里傳播。
9例如IM認(rèn)為www.xxx.com是可信的,但是通過(guò)在IM里點(diǎn)擊上述鏈接將導(dǎo)致用戶最終訪問(wèn)http: //www.evil.com。
風(fēng)險(xiǎn)等級(jí):
【高危】:URL 跳轉(zhuǎn)參數(shù)可控,且未對(duì)參數(shù)做白名單限制導(dǎo)致任意地址跳轉(zhuǎn)可被利用釣魚(yú)。
修復(fù)方案
對(duì)傳入的URL做有效性的認(rèn)證,保證該URL來(lái)自于信任域。限制的方式可參考以下兩種:
1限制Referer(Referer是HTTP header中的字段,當(dāng)瀏覽器向web服務(wù)器發(fā)送請(qǐng)求時(shí),一般會(huì)帶上Referer,告訴服務(wù)器是從哪個(gè)頁(yè)面鏈接過(guò)來(lái)的),通過(guò)限制Referer保證將要跳轉(zhuǎn)URL的有效性,避免攻擊者生成自己的惡意跳轉(zhuǎn)鏈接;
2加入有效性驗(yàn)證Token,保證所有生成的鏈接都來(lái)自于可信域,通過(guò)在生成的鏈接里加入用戶不可控的Token對(duì)生成的鏈接進(jìn)行校驗(yàn)。
服務(wù)器端請(qǐng)求偽造(SSRF)
漏洞描述
服務(wù)端請(qǐng)求偽造攻擊(Server-side Request Forgery): 很多web應(yīng)用都提供了從其他的服務(wù)器上獲取數(shù)據(jù)的功能。
使用用戶指定的URL,web應(yīng)用可以獲取圖片,下載文件,讀取文件內(nèi)容等。
這個(gè)功能如果被惡意使用,可以利用存在缺陷的web應(yīng)用作為代理攻擊遠(yuǎn)程和本地的服務(wù)器。
這種形式的攻擊稱為服務(wù)端請(qǐng)求偽造攻擊(Server-side Request Forgery)。
一般情況下, SSRF攻擊的目標(biāo)是從外網(wǎng)無(wú)法訪問(wèn)的內(nèi)部系統(tǒng) 。( 正是因?yàn)樗怯煞?wù)端發(fā)起的,所以它能夠請(qǐng)求到與它相連而與外網(wǎng)隔離的內(nèi)部系統(tǒng) ).
SSRF 形成的原因大都是由于 服務(wù)端提供了從其他服務(wù)器應(yīng)用獲取數(shù)據(jù)的功能且沒(méi)有對(duì)目標(biāo)地址做過(guò)濾與限制 。
比如從指定URL地址獲取網(wǎng)頁(yè)文本內(nèi)容,加載指定地址的圖片,下載等等。
攻擊者利用ssrf可以實(shí)現(xiàn)的攻擊主要有5種:
1可以對(duì)外網(wǎng)、服務(wù)器所在內(nèi)網(wǎng)、本地進(jìn)行端口掃描,獲取一些服務(wù)的banner信息;
2攻擊運(yùn)行在內(nèi)網(wǎng)或本地的應(yīng)用程序(比如溢出);
3對(duì)內(nèi)網(wǎng)web應(yīng)用進(jìn)行指紋識(shí)別,通過(guò)訪問(wèn)默認(rèn)文件實(shí)現(xiàn);
4攻擊內(nèi)外網(wǎng)的web應(yīng)用,主要是使用 get參數(shù)就可以實(shí)現(xiàn)的攻擊(比如struts2,sqli等);
5利用file協(xié)議讀取本地文件等。
測(cè)試方法
從WEB功能上尋找:我們從上面的概述可以看出,SSRF是由于服務(wù)端獲取其他服務(wù)器的相關(guān)信息的功能中形成的,
因此我們大可以列舉幾種在web 應(yīng)用中常見(jiàn)的從服務(wù)端獲取其他服務(wù)器信息的的功能。
1通過(guò)分享功能:通過(guò)URL地址分享網(wǎng)頁(yè)內(nèi)容:
2早期分享應(yīng)用中,為了更好的提供用戶體驗(yàn),WEB應(yīng)用在分享功能中,通常會(huì)獲取目標(biāo)URL地址網(wǎng)頁(yè)內(nèi)容中的 tilte / title 標(biāo)簽或者 metaname= "deion"content= “”/ 標(biāo)簽中content的文本內(nèi)容作為顯示以提供更好的用戶體驗(yàn)。例如人人網(wǎng)分享功能中:http://widget.renren.com/*****?resourceUrl=https://www.nsfocus.com
3通過(guò)目標(biāo)URL地址獲取了title標(biāo)簽和相關(guān)文本內(nèi)容。而如果在此功能中沒(méi)有對(duì)目標(biāo)地址的范圍做過(guò)濾與限制則就存在著SSRF漏洞.
4轉(zhuǎn)碼服務(wù):通過(guò)URL地址把原地址的網(wǎng)頁(yè)內(nèi)容調(diào)優(yōu)使其適合手機(jī)屏幕瀏覽:由于手機(jī)屏幕大小的關(guān)系,直接瀏覽網(wǎng)頁(yè)內(nèi)容的時(shí)候會(huì)造成許多不便,因此有些公司提供了轉(zhuǎn)碼功能,把網(wǎng)頁(yè)內(nèi)容通過(guò)相關(guān)手段轉(zhuǎn)為適合手機(jī)屏幕瀏覽的樣式。例如百度、騰訊、搜狗等公司都有提供在線轉(zhuǎn)碼服務(wù)。
5在線翻譯:通過(guò)URL地址翻譯對(duì)應(yīng)文本的內(nèi)容。提供此功能的國(guó)內(nèi)公司有百度、有道等。
6圖片加載與下載,通過(guò)URL地址加載或下載圖片:圖片加載遠(yuǎn)程圖片地址此功能用到的地方很多,但大多都是比較隱秘,比如在有些公司中的加載自家圖片服務(wù)器上的圖片用于展示。(此處可能會(huì)有人有疑問(wèn),為什么加載圖片服務(wù)器上的圖片也會(huì)有問(wèn)題,直接使用img標(biāo)簽不就好了? ,沒(méi)錯(cuò)是這樣,但是開(kāi)發(fā)者為了有更好的用戶體驗(yàn)通常對(duì)圖片做些微小調(diào)整例如加水印、壓縮等,所以就可能造成SSRF問(wèn)題)。
7圖片、文章收藏功能:此處的圖片、文章收藏中的文章收藏就類似于功能一、分享功能中獲取URL地址中title以及文本的內(nèi)容作為顯示,目的還是為了更好的用戶體驗(yàn),而圖片收藏就類似于功能四、圖片加載。
8未公開(kāi)的api實(shí)現(xiàn)以及其他調(diào)用URL的功能:此處類似的功能有360提供的網(wǎng)站評(píng)分,以及有些網(wǎng)站通過(guò)api獲取遠(yuǎn)程地址xml文件來(lái)加載內(nèi)容.
風(fēng)險(xiǎn)分析
如果應(yīng)用程序?qū)τ脩籼峁┑腢RL和遠(yuǎn)端服務(wù)器返回的信息沒(méi)有進(jìn)行合適的驗(yàn)證和過(guò)濾,則可能存在服務(wù)器端請(qǐng)求偽造攻擊。
服務(wù)器端請(qǐng)求偽造攻擊場(chǎng)景如下圖所示:
攻擊者想要訪問(wèn)主機(jī)B上的服務(wù),由于存在防火墻的原因無(wú)法直接訪問(wèn),這時(shí)可以借助主機(jī)A來(lái)發(fā)起服務(wù)器端請(qǐng)求偽造攻擊,通過(guò)主機(jī)A向主機(jī)B發(fā)起請(qǐng)求,從而完成攻擊。
1SSRF攻擊方式主要有以下 5種:
2
3對(duì)外網(wǎng)、服務(wù)器所在內(nèi)網(wǎng)、本地進(jìn)行端口掃描,獲取一些服務(wù)的banner信息(一般包括服務(wù)器的類型、版本,服務(wù)器上啟動(dòng)的服務(wù)信息);
4攻擊運(yùn)行在內(nèi)網(wǎng)或本地的應(yīng)用程序(比如堆棧溢出); 3) 通過(guò)訪問(wèn)默認(rèn)文件實(shí)現(xiàn)對(duì)內(nèi)網(wǎng)Web應(yīng)用的指紋識(shí)別;
5攻擊內(nèi)外網(wǎng)的Web應(yīng)用,主要是使用GET參數(shù)就可以實(shí)現(xiàn)的攻擊(比如Struts2,Sqli等);
6利用 file協(xié)議讀取本地文件等。
風(fēng)險(xiǎn)等級(jí):
【高危】:有回顯,可探測(cè)內(nèi)網(wǎng),文件訪問(wèn)
【中?!浚簾o(wú)回顯,但可訪問(wèn)外網(wǎng)
修復(fù)方案
通常從以下幾點(diǎn)來(lái)防御服務(wù)器端請(qǐng)求偽造攻擊:
1過(guò)濾內(nèi)網(wǎng)服務(wù)器對(duì)公網(wǎng)服務(wù)器請(qǐng)求的響應(yīng)。如果Web應(yīng)用是獲取某一類型的文件,在把返回結(jié)果展示給用戶之前應(yīng)先驗(yàn)證返回的信息是否符合文件類型標(biāo)準(zhǔn),比如返回信息應(yīng)為圖片,如果返回信息是HTML,則停止將返回信息返回客戶端。
2統(tǒng)一錯(cuò)誤提示信息,避免用戶可以根據(jù)錯(cuò)誤信息來(lái)判斷遠(yuǎn)端服務(wù)器的端口狀態(tài)。
3在內(nèi)網(wǎng)服務(wù)器的防火墻上限制公網(wǎng)服務(wù)器的請(qǐng)求端口為HTTP等協(xié)議常用端口,如: 80、 443、 8080、 8090。
4若公網(wǎng)服務(wù)器的內(nèi)網(wǎng)IP與內(nèi)網(wǎng)無(wú)業(yè)務(wù)通信,建議將公網(wǎng)服務(wù)器對(duì)應(yīng)的內(nèi)網(wǎng)IP列入黑名單,避免應(yīng)用被用來(lái)獲取內(nèi)網(wǎng)數(shù)據(jù)。
5內(nèi)網(wǎng)服務(wù)器禁用不必要的協(xié)議,僅允許HTTP和HTTPS請(qǐng)求,防止類似于 file: ///、gopher://、ftp:// 等協(xié)議引起的安全問(wèn)題。
短信內(nèi)容可控
漏洞描述
短信內(nèi)容可從客戶端指定
測(cè)試方法
在客戶端編輯任意短信內(nèi)容,測(cè)試是否過(guò)濾特殊內(nèi)容。
風(fēng)險(xiǎn)分析
攻擊者可利用該漏洞,借助短信平臺(tái),編輯釣魚(yú)短信發(fā)送給其他用戶。
風(fēng)險(xiǎn)等級(jí):
【高?!浚憾绦艃?nèi)容可控,且接收人可任意指定
【中?!浚憾绦艃?nèi)容可控,但接受人不可控
修復(fù)方案
建議在不影響業(yè)務(wù)的前提下,禁止客戶端編輯短信內(nèi)容。
郵件內(nèi)容可控
漏洞描述
應(yīng)用系統(tǒng)發(fā)送郵件的郵件內(nèi)容可由客戶端任意指定
測(cè)試方法
在客戶端編輯任意郵件內(nèi)容,測(cè)試是否過(guò)濾特殊內(nèi)容。
風(fēng)險(xiǎn)分析
攻擊者可利用該漏洞,借助郵件平臺(tái),編輯釣魚(yú)郵件發(fā)送給其他用戶。
風(fēng)險(xiǎn)等級(jí):
【高?!浚亨]件內(nèi)容可控,且收件人可任意指定
【中?!浚亨]件內(nèi)容可控,但收件人地址不可控
修復(fù)方案
建議在不影響業(yè)務(wù)的前提下,禁止客戶端編輯郵件內(nèi)容。
請(qǐng)求重放攻擊
漏洞描述
關(guān)鍵業(yè)務(wù)操作未作token或者唯一標(biāo)識(shí)碼,導(dǎo)致攻擊者可以重復(fù)多次進(jìn)行請(qǐng)求,導(dǎo)致惡意操作。如重復(fù)交易等問(wèn)題。
測(cè)試方法
重放http/tcp請(qǐng)求,查看第二次請(qǐng)求是否被正常處理。
風(fēng)險(xiǎn)分析
攻擊者惡意或欺詐性地重復(fù)發(fā)送一個(gè)有效的數(shù)據(jù)包,如果服務(wù)器未檢查此類重復(fù)提交的請(qǐng)求數(shù)據(jù)的有效性,那么轉(zhuǎn)賬充值等敏感操作將有可能會(huì)被重復(fù)執(zhí)行。
風(fēng)險(xiǎn)等級(jí):
【高?!浚宏P(guān)鍵業(yè)務(wù)操作請(qǐng)求未設(shè)置 token 或標(biāo)識(shí)碼,導(dǎo)致業(yè)務(wù)數(shù)據(jù)越界或錯(cuò)誤
修復(fù)方案
服務(wù)端應(yīng)用程序應(yīng)檢查客戶端提交的數(shù)據(jù)的唯一性,如使用流水號(hào)、時(shí)間戳、token等,并將流水號(hào)、時(shí)間戳等進(jìn)行簽名。
批量提交
漏洞描述
應(yīng)用程序未使用驗(yàn)證碼等防自動(dòng)化操作的方法,可批量提交請(qǐng)求,如批量注冊(cè)。
測(cè)試方法:
編寫自動(dòng)提交HTTP數(shù)據(jù)包的腳本;
或使用burpsuite的intruder功能批量提交請(qǐng)求。
風(fēng)險(xiǎn)分析
注冊(cè)不需要驗(yàn)證碼時(shí),攻擊者通過(guò)編寫自動(dòng)化腳本,實(shí)現(xiàn)程序自動(dòng)提交注冊(cè)信息;
若注冊(cè)需要驗(yàn)證碼,但驗(yàn)證碼位數(shù)不多于4位且為純數(shù)字時(shí),通過(guò)使用軟件burpsuite的intruder功能窮舉得到正確的驗(yàn)證碼后,再結(jié)合自動(dòng)化腳本工具即可實(shí)現(xiàn)批量注冊(cè)垃圾賬號(hào)。
風(fēng)險(xiǎn)等級(jí):
【高?!浚赫I(yè)務(wù)為單條數(shù)據(jù)請(qǐng)求,且不存在防自動(dòng)化批量操作措施,可批量自動(dòng)化提交。
【低?!浚赫I(yè)務(wù)為單條數(shù)據(jù)請(qǐng)求,且存在防自動(dòng)化批量操作措施,但在單個(gè)數(shù)據(jù)包中寫入批量數(shù)據(jù),可成功提交,并且服務(wù)器能批量執(zhí)行。
修復(fù)方案:
2.用戶注冊(cè)功能處,提交注冊(cè)信息后進(jìn)行郵箱或短信驗(yàn)證通過(guò)后再將注冊(cè)信息寫入數(shù)據(jù)庫(kù)。
3.對(duì)同一IP地址短時(shí)間內(nèi)提交請(qǐng)求的次數(shù)進(jìn)行限制。
摘抄
在這煙塵人間,
并非俗不可耐索然無(wú)味,
冬日暖陽(yáng),夏日蟬鳴都顯可愛(ài)。
版權(quán)聲明:本文為CSDN博主「星球守護(hù)者」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
版權(quán)聲明:著作權(quán)歸作者所有。如有侵權(quán)請(qǐng)聯(lián)系刪除
開(kāi)源聚合網(wǎng)安訓(xùn)練營(yíng)
環(huán)境搭建
Python
學(xué)員專輯
信息收集
CNVD
安全求職
滲透實(shí)戰(zhàn)
CVE
高薪揭秘
滲透測(cè)試工具
網(wǎng)絡(luò)安全行業(yè)
神秘大禮包
基礎(chǔ)教程
我們貼心備至
用戶答疑
QQ在線客服
加入社群
QQ+微信等著你
我就知道你“在看”
掃描二維碼推送至手機(jī)訪問(wèn)。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。