1. 程式人生 > >二十七:XSS跨站之程式碼及httponly繞過

二十七:XSS跨站之程式碼及httponly繞過

![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123085721174-937912649.png) **httponly:如果給某個 cookie 設定了 httpOnly 屬性,則無法通過 JS 指令碼 讀取到該 cookie 的資訊,但還Application 中手動修改 cookie,所以只是在一定程度上可以防止 XSS 攻擊,不是絕對的安全** ### 雖然設定了httponly之後拿不到cookie,但是還是存在xss跨站語句,阻止的僅僅是獲取cookie 可以直接拿賬號密碼,cookie登入. 瀏覽器未儲存讀取密碼:需要xss產生於登入地址,利用表單劫持 瀏覽器儲存賬號面:產生在後臺的XSS,例如儲存型XSS ### 手工判斷xss跨站漏洞: #### 第一關: ![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123085940054-143798845.png) #### 第二關: ![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123090049932-1303317658.png) 被轉義,檢視原始碼。 ![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123090100239-961200321.png) 存在htmlsecialchars()函式: ![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123090110702-2001815656.png) 把符號轉換為實體化標籤,xss經常過濾的情況 ![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123090128238-450664930.png) #### 第二關: 閉合前面的雙引號,"> #### 第三關: ![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123090258747-2074125647.png) 還是對<>進行了轉義,利用表單的滑鼠點選屬性。 'onclick='alert(1) ![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123090306993-850658948.png) #### 第四關: ![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123090315683-2143932232.png) #### 第五關: 在關鍵字onclick過濾,on_click 藉助a herf屬性,自己建立一個javascript程式碼 "> ![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123090326420-581605605.png) #### 第六關: 繼續用第五關的程式碼,發現herf被過濾,檢視原始碼。 ![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123090339419-64654933.png) 關鍵字都被過濾,使用大寫替繞過 "> ![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123090347432-1608818795.png) #### 第七關: ![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123090354604-1019862577.png) 和upload-labs一樣,程式碼並無迴圈過濾,因此可以雙寫繞過 ![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123090402366-230537430.png) #### 第八關: 大小寫,雙寫均不行,替換為unicode編碼 ![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123090410390-231641056.png) ![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123090418505-1717605893.png) #### 第九關: 這一關不看程式碼幾乎很難完成,程式碼會檢測是否存在http:// ![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123090425562-517578300.png) ![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123090435001-972601335.png) #### 第十關: &t_sort="type="="type="text"onclick="alert(1)" ![](https://img2020.cnblogs.com/blog/2265061/202101/2265061-20210123090442600-1015359168.png) 檢視原始碼,發現屬性為hidden,被隱藏了。 #### 第十一關: http referer 頭,檢測來源。 瀏覽器會檢測此JS程式碼是否來 CSRF跨站請求指令碼,檢測來源。管理員在登入狀態的情況下,登入時觸發了一串新增管理員賬號的密碼,此時則會新增管理員。 檢測來源,也就是瀏覽器的同源策略,看看是否來自同一個域名,不是同一個域名的不接受 token驗證會解決這個問題 此關卡在referer頭輸入&t_sort="type="="type="text"onclick="alert(1)" #### 第十二關: 檢測user-agent aizhan網也存在跨站 後面的關卡也是各種隱藏的屬性,基本都是類似的,不在一一