1.CTF-Web


使用的MP,MK編輯器
網絡安全好不好 要看linux牛不牛 大部分平台都在linux上
C java python需要有點基礎,沒有基礎不建議報班

CTF-Web

web漏洞挖掘與利用

基礎划分

java web --->web漏洞挖掘 web服務器安全檢測 web代碼審計 web常見漏洞 web的補丁方法
pip install pwntools 直接就完事了 不要用pip3安裝
kali的源source list,rolling 阿里的源也很穩定

python ---->漏洞利用腳本設計
所有的漏洞都是由網絡數據包而觸發的

C/C++ ---->web服務器的運維 它的安全40%取決於運維

web的漏洞挖掘經驗

attack & defence-wdeilim WEB AWD 漏洞挖掘技巧

PHP是源碼,做好代碼審計就OK。

  • 調試環境搭建
    PHP 5 & 7 MySQL Apache或Nginx或Python iis+asp太老了,無人用,沒有挖漏洞價值
    PHPstudy https://www.xp.cn/ 集成所有調試環境,幾十萬肉雞沸沸揚揚,官網下載就沒事。這是新官網。
    如果你會算哈希值的話,從哪里下載都無懼。

    PHP插件xdebug 調試
    挖目標的漏洞,需要模仿目標的環境,對各配置文件要熟悉
    MySQL管理器---MySQL-front 圖形化數據庫交互就出來了 與navicat操作數據庫是一模一樣的

工具組合 PHPstudy(環境)+Xdebug(斷點調試)+PHPstorm10(棧分析)
對PHP進行斷點調試。
查找調用棧,對流量進行快速分析。如果你用這些知識去類比C/C++的 debug,更容易手到擒來。

Xdebug安裝 php擴展及設置-PHP擴展-Xdebug 出來以后在底下加上下面一段環境變量
[XDebug]

zend_extension="path\to\xdebug.dll"
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_name = "cache.out.%t-%s"
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
  • 常見web漏洞
    webshell 文件上傳漏洞 文件包含漏洞 數據庫攻擊(SQL注入) 反序列化攻擊(XXS) XXE攻擊

nmap探測服務器有什么東西,訪問網站拿到PHP代碼(現實中是收集所有開源CMS)
就如linux與windows,linux開源,大家一起研究出來的漏洞都被補得差不多了,你很難看見linux的漏洞。
但是windows不開源,同樣的問題linux存在難道windows就沒有了嗎?不開源還可以調試。所以windows大把漏洞。

  • webshell(后門):通過網頁進入到web站點后台,類似於個人電腦的CMD控制台,類似於windows服務器的powershell控制台。
    無混淆的webshell(現實中很少)
    有混淆的webshell

很多公司在做好網站以后會加一個自己的后門:1.方便以后的運維管理 2.利益上的企圖
上傳到可寫目錄中,chmod a+x,路徑查配置文件確認。一般情況下不會出現。
通過webshell進去以后就可以執行linux命令了,接下來去提權,想干嘛就干嘛。

webshell怎么找,用什么工具呢?rips-0.55(字符串匹配工具,用的正則匹配)
檢索PHP文件中哪里有類似於混淆的webshell的代碼。

  • 文件上傳漏洞
    上傳檢測方式:客戶端JavaScript檢測 服務端MIME類型檢測 服務端文件擴展名檢測 服務端內容檢測
    訪問網站時點一個鏈接,能上傳文件,還能找得到,上傳的文件能夠在未認證的情況下去訪問。
    上傳一個webshell,一句話木馬用菜刀去連接。

客戶端JavaScript檢測
一般為檢測文件擴展名
繞過方式
刪除頁面js檢測代碼
抓包工具修改包的內容 (filter工具,包重定向)
使用腳本進行攻擊(訪問每一個鏈接,看看哪個可以傳)

服務端MIME類型檢測
檢測上傳文件的Content-Type內容
繞過方式
抓包修改為相應的白名單的內容

content-Disposition(白名單):加一個 filename="shell.php" 就不會檢測這個文件到底是什么。
Content-Type:image/gif 只允許這個后綴的文件上傳

有兩種方式可以檢測到:1.監控實時流量(基本不可能)2.從網絡日志文件,網絡協議數據文件里面看。如果你的流量大到一定程度的時候,基本找都找不到。  如果對方是大勝靠德招進來的人,是一定會查到異常流量的,時間問題。

服務端文件擴展名檢測

上傳 .htaccess文件攻擊
解析漏洞繞過
Apache CVE-2017-15715

.htaccess是apache服務器的訪問控制列表文件。上傳文件一般都會上傳到可寫目錄里面,又怕別人上傳一個非法文件。
於是只能用訪問控制列表文件來做限制策略。放到可寫目錄中來做這個限制。

有以上后綴的文件上傳以后,都給它干掉,這就叫訪問控制列表文件。可以設置允許某些文件,也可以設置禁止某些文件。
黑,白名單。通常在安全類書籍中,推薦白名單。

要權限分明,哪些文件夾可寫,哪些文件夾不可寫。 ls -l 看權限。
比如,QQ空間圖片上傳,放到服務器的某個文件夾中,如果其他文件夾也具備可寫權限,這就是一個漏洞。修改權限。
如果這個文件夾的業務功能必須要可寫權限,就需要自己寫一個.htaccess訪問控制列表文件放入此文件夾中。
文件名是固定的,屬於apache服務器中的解析關鍵字,上傳到哪里,哪里就會起作用。

大型的網站,后台通常都是apache服務器,python是寫網站其他東西的。

文件拓展名檢測,比如檢測以下擴展名。

當您看見CVE這一串編號的時候,在圈內就等於別人已經告訴你漏洞利用了。
到了這里您會提出疑問,我知道漏洞編號,應該怎么實戰,怎么對應的寫補丁程序了。一個搜索引擎就可以搞定。
沒有絕對的安全,同時也沒有絕對的一定攻得進去。補丁打上了,我們就得另找它路,這是一個永恆的對抗過程。
之所以攻得進去就是由於信息差,運維人員沒有掌握這個知識點或者疏忽。如果運維人員比你的知識面還要廣,就難了。
關於0day漏洞,零日漏洞屬於戰略性殺傷武器,不到萬不得已是不會拿出來的,一個小型的0day起價就是幾十萬美金。
如果有人告訴你,我手里有0day教你怎么挖,那都是騙小孩子割你韭菜的。尤其是抖音上面的搞笑版黑客。。

服務端內容檢測

  • 通過API或者函數對文件加載檢測
    GD庫

如何去查找文件上傳漏洞呢?
最簡單的方式就是代碼審計工具(字符串檢索工具),先查找所有文件里面出現upload的位置。
定位在哪些地方調用了上傳的upload,然后在這個上下文中看看有沒有可能造成。

  • 文件包含漏洞
    觸發函數:include()/include_once() require()/require_once()
    PHP.ini:allow_url_fopen默認為on allow_url_incluede默認為off

你包含了一些文件,這些文件又不是你寫的。這些文件看得見,就可以修改這些文件,達到讓你去執行這個修改的程序。
類似於C語言的dll庫,調用了這個庫,這個庫又不是你寫的,別人也能看得到,就把這個庫給替換了。執行庫里的函數。
類似於python的import

包含上傳文件

如果管理員在安裝好PHP的默認環境不去刪除這個phpinfo文件的話,就會包含它。里面各種系統信息,版本信息,配置命令等各種數據。
包含了這個文件,它就會解析這個phpinfo,一解析就等於源碼會執行這個phpinfo,你只需要更改當前phpinfo里面的東西。
就會造成遠程修改這個文件並讓PHP網站去執行。

市場決定語言,不要以為java就比php要好要安全,哪個語言都不好。
如同企業基礎設施布局一樣,企業之所以能賺錢是因為有知識去接業務,本質在人,而人依賴知識,最終的根源還是落在了人才爭奪戰上面。誰給錢就給誰做知識儲備庫,誰給錢就給誰做安全。
到了網絡安全的程度時,需要什么就學什么。哪一個語言都不可能用到地老天荒。

包含session

會保存前幾次會話到路徑中,這些路徑都有一些文件可以被web服務器所調用,如果在這些文件里面找一些文件可以修改的話,造成文件包含漏洞。
如果你可以遠程修改這個文件的話,PHP又可以執行這個session,

由如漏洞的思維一樣,所有的語言表達思維都是互通的,您只是不清楚它的關鍵字怎么寫。
您掌握了web的關鍵性漏洞及其漏洞利用以后,就可以用它們的思維去類比二進制中的漏洞了。
請問,客戶端/服務器架構中的游戲程序有沒有呢?物聯網設備與基站有沒有呢?都會存在會話這個機制的交互功能的。
只不過它們的函數,關鍵詞,命名不同而已,您需要花時間的地方是漏洞思維周圍的這些關鍵性詞語變什么樣子了,以及附加了什么安全策略來防止這些問題,它們是否發揮了初衷的效果,真的是安全的策略。

這樣一來,您就會更加近距離感受到類比帶來的高效了,您之所以花一個小時低得過別人學一天的秘密就在於此。好好的利用它。在類比的同時,您需要更多的東西去做這個類比,建議學一個東西一個語言,投入的時間越多對於學習新的知識的效率反而是更有利的,建議某一種語言學習6個月以上隨便找一個免費版的培訓機構(比如湘潭教育,黑馬等知名機構的)流傳出來的語言即可。linux教程推薦老男孩機構的,因為i春秋正在和老男孩機構密切合作,研發linux安全運維。這些推薦內容聽過,知識可以勝任入門所需。
在有了一門語言和一個linux系統的運維知識以后,您還需要一門網絡安全的課程。和刷題考證的手法一模一樣,您需要刷的不是題了,而是知識,刷完以后刷靶場。這個圈子您就進去了。神秘的黑客大門將向您打開,之后的進修內容不用說您也懂。與考公務員同理,只要進去了,崗位瞎幾把調都無所謂。入職企業優勢是薪水高,學的東西核心;公安局是有排場,打擊黑產抽提成。

  • 防御方式 屬於運維的范疇
    全局搜索inclue等函數
    參數是否可控?白名單正則來限制輸入的參數。

  • 數據庫攻擊 SQL注入

    • flag在數據庫
    • flag為本地文件
      • load_file('/path/to/read')

SQL注入都是做截斷,把正常的URL截斷了。后面加一個當前的SQL語句。
* getshell
* 讀取配置
* @@global.secure_file_priv
* 寫文件
* select ... into outfile '/path/to/save';
* select ... into dumpfile '/path/to/save';

現實工作中使用sqlmap去掃描。
還可以盲注:在URL里面加一些SQL語句,能進的去就能遠程曝它的數據庫。
PHP代碼里面有這樣的語句:passwd="$arg3"。arg3是參數,遠程傳過來的
arg3 = test";select form * xxxx; 截斷以后就運行SQL語句了。
密碼都是加了鹽的哈希值

  • 反序列化函數

    • PHP序列化函數
      • serialize()
      • unserialize()
  • 反序列化漏洞 審計方法和文件包含漏洞確認方法是一模一樣的。

    • 全局搜索unserialize()函數看輸入是否可控
    • 查找帶有magic函數的class
      • 源碼本身
      • 引用的第三方庫
    • 構造調用的rop鏈
      weblogic是反序列化漏洞

挖漏洞,代碼審計就是先找標志字符串,再看上下文。

  • XXE漏洞 近5年都很少見這樣的漏洞了

    • 前提:PHPinfo中的libXML Compiled Version < 2.9.0
      • 默認不解析外部實體,導致XXE漏洞逐漸消亡
    • 不同程序支持的協議不同
  • 基礎知識——正則

    • 常用元字符

  • 基礎知識——requests庫

  • 常見套路——公布的RCE漏洞

  • 常見套路——本地備份漏洞庫

filelocator pro 快速搜索所有內容

參考資料:
https://www.bilibili.com/video/av62214776/?p=2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM