整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          學(xué)習(xí)HTML的小心思 (踩坑經(jīng)歷)

          學(xué)習(xí)HTML的小心思 (踩坑經(jīng)歷)

          轉(zhuǎn)眼我已經(jīng)是一只畢業(yè)2年的“社會(huì)狗”了,近期工作不算忙,想著自己在學(xué)習(xí)學(xué)習(xí),增長(zhǎng)點(diǎn)個(gè)人興趣。于是翻出了之前學(xué)過的HTML知識(shí),想著自己復(fù)習(xí)復(fù)習(xí),空了可以自己寫個(gè)網(wǎng)頁(yè)玩玩。開始了演練,腦子了思考這我的技術(shù)老師傳授的知識(shí)框架,借助這網(wǎng)絡(luò)知識(shí)庫(kù),開始敲自己的“網(wǎng)頁(yè)”代碼。

          今天學(xué)習(xí)html頁(yè)面知識(shí),不曾想在簡(jiǎn)單的“邏輯”前面就踩坑了,還差點(diǎn)走不出來(lái)。相對(duì)路徑問題。相對(duì)路徑的問題,本就是2在1之后、1在2之前這樣的問題。。排坑之久,讓我這只社會(huì)狗極其懷疑自己的能力。

          如圖,根目錄下,有如下路徑:web\imgs下面是圖片,web\css下是樣式文件,wen\index.html 是網(wǎng)頁(yè)文件。就這么一個(gè)相對(duì)路徑問題處踩到坑。

          文件相對(duì)路徑

          在web\css\***.css文件中寫了下面這個(gè)代碼引用網(wǎng)頁(yè)背景圖片。

          background-image: url(../imgs/background.jpg) ;

          代碼

          然而并不起作用,一直提示訪問不到文件。懵逼樹下懵逼果。萬(wàn)般折騰,折騰了好久,廢了差不多2小時(shí),才捋清楚應(yīng)該像下面這樣寫路徑。

          最后路徑

          最后雖然是順利地完成圖片引用, 但費(fèi)了太多功夫,一條道走到黑的方式不可取。思考要靈活變通,該放松就去放松,也許就是轉(zhuǎn)念一想,問題就能想清楚。腦子不一定是越用力越能想通,牛角尖不能鉆!

          學(xué)習(xí)網(wǎng)絡(luò)爬蟲要掌握哪些技術(shù)?#

          挑戰(zhàn)升級(jí)!老板又為我設(shè)定了新的任務(wù)目標(biāo):利用C#開發(fā)一款超能爬蟲,它必須深入挖掘我們網(wǎng)站的每一個(gè)細(xì)節(jié),不論是主體內(nèi)容、相關(guān)鏈接,甚至是細(xì)微至頁(yè)面標(biāo)題,都需快速精準(zhǔn)獲取,全程保持高效穩(wěn)定的運(yùn)行狀態(tài)。

          這不僅是一個(gè)任務(wù),還是一次創(chuàng)新能力的試煉。那天,我坐在電腦前,心里琢磨著,這得怎么開始呢?

          好吧,我得先熟悉我們網(wǎng)站的結(jié)構(gòu),就像了解一個(gè)新朋友一樣。我打開了瀏覽器,一頁(yè)一頁(yè)地翻,仔細(xì)觀察那些HTML代碼,找到了BODY、鏈接和標(biāo)題的蛛絲馬跡。

          根據(jù)我們網(wǎng)站結(jié)構(gòu),我開始了針對(duì)這個(gè)任務(wù)的計(jì)劃:

          需求分析:

          抓取頁(yè)面內(nèi)容(BODY):需要從目標(biāo)網(wǎng)頁(yè)中提取出HTML的主體部分,這通常包括文字、圖片、視頻等內(nèi)容。

          抓取網(wǎng)站鏈接:我需要識(shí)別網(wǎng)頁(yè)中的超鏈接(如<a>標(biāo)簽),并提取出它們的href屬性,以獲取其他相關(guān)頁(yè)面的鏈接。

          抓取頁(yè)面標(biāo)題:頁(yè)面標(biāo)題通常位于<title>標(biāo)簽內(nèi),我要能夠提取并存儲(chǔ)這些標(biāo)題信息。

          技術(shù)選型:

          由于使用C#作為開發(fā)語(yǔ)言,我可以使用HttpClient來(lái)實(shí)現(xiàn)HTTP請(qǐng)求和響應(yīng)處理。利用解析庫(kù)(這次用AngleSharp)來(lái)解析網(wǎng)頁(yè)內(nèi)容,提取所需信息。

          主要實(shí)現(xiàn)步驟:

          初始化:設(shè)置爬蟲的基本配置,如并發(fā)請(qǐng)求數(shù)、超時(shí)時(shí)間等。網(wǎng)頁(yè)抓取:通過HTTP請(qǐng)求獲取目標(biāo)網(wǎng)頁(yè)的HTML內(nèi)容。內(nèi)容解析:使用HTML解析庫(kù)提取頁(yè)面內(nèi)容、鏈接和標(biāo)題。數(shù)據(jù)演示(實(shí)際是要保存的):將提取的信息展示到控制臺(tái)中顯示,以便查看、分析和處理。錯(cuò)誤處理:實(shí)現(xiàn)適當(dāng)?shù)腻e(cuò)誤處理機(jī)制,如展示異常記錄等。

          測(cè)試與驗(yàn)證:

          對(duì)爬蟲程序進(jìn)行單元測(cè)試,確保每個(gè)功能模塊都能正常工作。進(jìn)行集成測(cè)試,確保整個(gè)爬蟲流程的流暢性和穩(wěn)定性。在實(shí)際網(wǎng)站上進(jìn)行驗(yàn)證,確保抓取到的數(shù)據(jù)準(zhǔn)確無(wú)誤。

          維護(hù)與更新:

          定期檢查爬蟲程序的運(yùn)行狀態(tài),及時(shí)處理可能出現(xiàn)的問題。根據(jù)網(wǎng)站結(jié)構(gòu)和內(nèi)容的變化,適時(shí)更新爬蟲程序以適應(yīng)新的抓取需求。當(dāng)然,原來(lái)的爬蟲程序需要改進(jìn),功能需要增強(qiáng)。

          根據(jù)這個(gè)計(jì)劃,我初步修改了原來(lái)的代碼,把要求的三個(gè)功能都完成了,看效果:


          關(guān)鍵實(shí)現(xiàn)代碼:

                  // 發(fā)送HTTP GET請(qǐng)求并獲取網(wǎng)頁(yè)內(nèi)容
                  public async Task<string> GetWebPageContentAsync(string url)
                  {
                      try
                      {
                          HttpResponseMessage response=await _httpClient.GetAsync(url);
                          response.EnsureSuccessStatusCode();
                          string content=await response.Content.ReadAsStringAsync();
                          return content;
                      }
                      catch (HttpRequestException e)
                      {
                          Console.WriteLine($"從URL {url} 獲取內(nèi)容時(shí)出錯(cuò): {e.Message}");
                          return null;
                      }
                  }
                  // 解析網(wǎng)頁(yè)內(nèi)容,提取<body>、鏈接和標(biāo)題
                  public async Task CrawlAndParseAsync(string url)
                  {
                      string content=await GetWebPageContentAsync(url);
                      if (content !=null)
                      {
                          var document=_htmlParser.ParseDocument(content);
          
                          // 獲取并打印<body>的內(nèi)容
                          var bodyContent=document.Body.InnerHtml;
                          Console.WriteLine($"網(wǎng)頁(yè)<body>內(nèi)容:\n{bodyContent}\n");
          
                          // 提取并打印所有鏈接
                          foreach (var link in document.QuerySelectorAll("a[href]"))
                          {
                              var href=link.GetAttribute("href");
                              Console.WriteLine($"找到的鏈接: {href}");
                          }
          
                          // 提取并打印頁(yè)面標(biāo)題
                          var title=document.Title;
                          Console.WriteLine($"頁(yè)面標(biāo)題: {title}");
                      }
                  }

          如有需要完整代碼的朋友,請(qǐng)關(guān)注我并留言。

          準(zhǔn)備啟動(dòng)信息收集工作,頁(yè)面上有三個(gè)地方引起了我的注意:.do 的接口地址、登錄功能、密碼找回功能。

          審查 .do 接口。看到 .do 自然聯(lián)想到 struts2 命令執(zhí)行全家桶。

          安恒出品的 S2 漏洞驗(yàn)證工具掃描下:


          掃描不出漏洞

          審查登錄功能。登錄功能的審查點(diǎn)很多,比如賬號(hào)是否可枚舉、密碼是否可暴破,但前提是沒有驗(yàn)證碼,顯然這里存在圖片驗(yàn)證碼,所以,我先確認(rèn)驗(yàn)證碼是否可繞過。

          攔截登錄請(qǐng)求:

          應(yīng)答標(biāo)志為 2,第二次重發(fā),應(yīng)答標(biāo)志變?yōu)?1

          顯然,驗(yàn)證碼防御機(jī)制有效,雖然 python 調(diào)用 tesseract 識(shí)別圖片的手法可有效攻擊圖片驗(yàn)證碼,但需要我爬取該站的大量圖片來(lái)訓(xùn)練,這個(gè)階段無(wú)需太深入,暫時(shí)放一放。

          審查密碼找回功能。密碼找回功能很容易出現(xiàn)邏輯錯(cuò)誤,經(jīng)驗(yàn)來(lái)看,至少可從七個(gè)方面攻擊密碼找回功能:重置憑證接收端可篡改、重置憑證泄漏、重置憑證未校驗(yàn)、重置憑證可暴破、用戶混淆、應(yīng)答中存在影響后續(xù)邏輯的狀態(tài)參數(shù)、token 可預(yù)測(cè)。


          訪問密碼找回頁(yè)面:

          攔截密碼找回的請(qǐng)求:

          從應(yīng)答描述可知,提示該用戶不存在,重發(fā)幾次,結(jié)果相同,說(shuō)明圖片驗(yàn)證碼未生效,好了,第一個(gè)洞,用戶名可枚舉。

          顯然,用戶名在該請(qǐng)求的 params 參數(shù)中,URL 解碼可得明文:

          于是,將 root 設(shè)定為枚舉變量,加載中國(guó)人姓名(top500)、后臺(tái)賬號(hào)兩個(gè)字典,進(jìn)行枚舉:(這里需要的注意的是,大部分的系統(tǒng)可能存在黑名單校驗(yàn),枚舉時(shí)可使用VPN進(jìn)行IP輪換)

          得到三個(gè)有效賬號(hào):nana、admin、liufei。

          隨意選個(gè)賬號(hào)進(jìn)入密碼找回流程,liufei,應(yīng)答為 JSON 數(shù)據(jù),格式化后嚇我一跳:

          敏感信息大贈(zèng)送!有郵箱,甚至有哈希密碼。記下來(lái),第二個(gè)漏洞,賬號(hào)相關(guān)敏感信息泄漏。

          我的目的很明確,獲取登錄密碼,所以,我計(jì)劃利用泄漏信息,從信息庫(kù)和哈希反解兩方面達(dá)到目的。

          信息庫(kù)。提取郵箱中的用戶名,liufei 的 liufei、nana 的 18xxxxxx56、admin 的 legxxxxxxng,在信息庫(kù)中查詢歷史密碼。

          只找到 liufei 相關(guān)的多個(gè)歷史密碼,逐一驗(yàn)證,均錯(cuò)誤。

          哈希反解。提取三個(gè)賬號(hào)的哈希密碼,liufei 的 a1e0476879cab2a76cc22c80bbf364dd、nana 的 208f0aba4a6d4b9afe94207e6c57d594、admin 的 3faf009c43bb39c5a37859bc48feaff3。

          有了哈希密碼,第一時(shí)間查彩虹表(https://www.cmd5.com/),反解明文密碼:

          只有賬號(hào) liufei 的密碼解出為 !QAZ2wsx,nana、admin 無(wú)解,暫時(shí)放下。第三個(gè)漏洞,業(yè)務(wù)系統(tǒng)存在弱口令賬號(hào) liufei。


          通過 liufei / !QAZ2wsx 登錄網(wǎng)站:

          功能非常有限,只有個(gè)回收站,里面沒有業(yè)務(wù)任何數(shù)據(jù)。

          上圖中有幾個(gè)輸入框,應(yīng)該是個(gè)查詢功能,但是找不到查詢按鈕,嘗試在前端 HTML 源碼中翻找查詢接口,無(wú)果;在 burp 的報(bào)文歷史中審查 JS,也沒找到有用的接口。看來(lái),還得找個(gè)高權(quán)限的賬號(hào)。

          回到先前未反解出來(lái)的兩個(gè)賬號(hào),nana 的 208f0aba4a6d4b9afe94207e6c57d594、admin 的 3faf009c43bb39c5a37859bc48feaff3。

          https://www.cmd5.com/擁有海量的彩虹表數(shù)據(jù),它反解不出來(lái),很可能是個(gè)強(qiáng)口令。對(duì)于強(qiáng)口令的暴破,我習(xí)慣圍繞用戶名,制作具有社工屬性的密碼字典,如,用戶名 nana,社工屬性密碼可能為 NaNa、na520na、nana@19901015。如何生成社工屬性密碼字典?hashcat!對(duì)滴,hashcat 不僅是哈希暴破神器,也支持基于規(guī)則生成密碼字典,規(guī)則庫(kù)位于 hashcat/rules/:

          其中,dive.rule 含有我需要的規(guī)則,選之。我把 nana 視為基礎(chǔ)信息存入 base.txt 中作為輸入,讓 dive.rule 模仿學(xué)習(xí)生成類似的密碼字典,保存至 se_passwds.txt:接著用社工字典暴破哈希密碼:


          7 秒出結(jié)果,得到 nana 的密碼 nanacnacnanac,第四個(gè)漏洞,業(yè)務(wù)系統(tǒng)存在社工屬性口令賬號(hào) nana。用類似的手法,制作了賬號(hào) admin 的社工密碼字典,遺憾,并未暴出 admin 的密碼。沒關(guān)系,用 nana / nanacnacnanac 登錄系統(tǒng),或許有新發(fā)現(xiàn)。

          一旦進(jìn)入后臺(tái),習(xí)慣上先找三類功能:上傳功能、查詢功能、命令功能。上傳功能,通過各種任意文件上傳攻擊手法,上傳 webshell;查詢功能,審查是否存在 SQL 注入,拿數(shù)據(jù)(如,哈希密碼);命令功能,指那些有著名工具實(shí)現(xiàn)的功能,比如,輸入個(gè) IP,業(yè)務(wù)功能探測(cè)該 IP 是否存活,服務(wù)端可能執(zhí)行了 ping 命令,又如,上傳個(gè)壓縮包,頁(yè)面顯示壓縮包內(nèi)容,服務(wù)端可能執(zhí)行了 unzip 命令,這時(shí),用命令注入或命令選項(xiàng)注入的手法,攻擊服務(wù)端。

          登錄 nana 賬號(hào),業(yè)務(wù)功能也不多,但有個(gè)上傳功能:

          我得深入審查它,或許是 getshell 的唯一通道。

          先上傳一個(gè)正常的 PNG 圖片,頁(yè)面報(bào)錯(cuò),提示非管理員禁止上傳:

          這可不好玩了,admin 的哈希密碼之前用彩虹表、社工字典都嘗試過,無(wú)法反解,前進(jìn)步伐再次受阻。

          回想之前刺探過的密碼找回功能,發(fā)現(xiàn)泄漏用戶哈希密碼就未再深入,應(yīng)該再審查下,或許能重置 admin 密碼。

          用 admin 進(jìn)入密碼找回流程,先順利通過服務(wù)端用戶名是否存在的校驗(yàn),然后向該賬號(hào)綁定的郵箱地址發(fā)送密碼重置 URL,請(qǐng)求如下:

          顯然,參數(shù) email 存在不安全的直接對(duì)象引用(IDOR)問題,將其替換為攻擊者的郵箱,90% 的概率會(huì)收到重置郵件。

          于是,我找了個(gè)匿名郵箱,嘗試劫持 admin 的密碼找回郵件:

          很快,匿名郵箱收到來(lái)信,訪問帶 token 的密碼重置鏈接,還真能修改密碼:

          至此,已經(jīng)拿到管理員的后臺(tái)權(quán)限。后續(xù)便可以很方便的上傳大馬小馬了。就不在一一列舉。

          另外參數(shù) email 存在不安全的直接對(duì)象引用(IDOR)問題這是一個(gè)很常見的漏洞類型,通過抓包修改參數(shù)等操作很容易拿到修改密碼鏈接。


          主站蜘蛛池模板: 亚洲AV无码一区二区乱子仑| 亚洲国产精品无码第一区二区三区| 国产福利电影一区二区三区| 精品一区二区三区影院在线午夜 | 日本精品一区二区三区在线观看| 国产成人一区二区三区在线| 99久久国产精品免费一区二区| 无码人妻视频一区二区三区| 亚洲欧美日韩国产精品一区 | 波多野结衣电影区一区二区三区| 日韩AV无码一区二区三区不卡| 不卡无码人妻一区三区音频| 无码人妻久久久一区二区三区| 国产精品无码一区二区三区不卡 | 成人精品视频一区二区三区 | 日韩动漫av在线播放一区| 亚洲一区二区观看播放| 国产一区二区在线视频播放| 香蕉视频一区二区| 午夜天堂一区人妻| 国产日韩精品一区二区在线观看| 丝袜人妻一区二区三区网站| 日韩一区二区a片免费观看| 精品国产AⅤ一区二区三区4区 | 日本一区二区三区精品中文字幕| 麻豆一区二区免费播放网站| 国产伦精品一区二区三区视频猫咪 | 国产日产久久高清欧美一区| 波多野结衣AV无码久久一区| 亚洲欧美日韩中文字幕一区二区三区 | AV无码精品一区二区三区| 精品一区二区三区影院在线午夜 | 国产成人亚洲综合一区| 综合久久一区二区三区| 日本人的色道www免费一区| 久久无码人妻一区二区三区| 国产精品男男视频一区二区三区 | 一区在线免费观看| 无码国产精品一区二区免费式影视| 一区二区日韩国产精品| 国精产品一区一区三区MBA下载|