錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務,錦州廣廈維修電腦,公司IT外包服務
topFlag1 設為首頁
topFlag3 收藏本站
 
maojin003 首 頁 公司介紹 服務項目 服務報價 維修流程 IT外包服務 服務器維護 技術文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務技術文章
PHP代碼審計實戰思路淺析

作者: 佚名  日期:2018-10-30 09:35:18   來源: 本站整理

戰略性的思考而非戰術

對于面向過程寫法的程序來說,最快的審計方法可能時直接丟seay審計系統里,但對于基于mvc模式的程序來說,你直接丟seay審計系統的話,那不是給自己找麻煩嗎?

像面向過程寫法的程序,可以找下它的公共函數文件有啥可以利用的不,然后就是丟seay審計系統。

而對于基于mvc寫法的程序來說,跟讀他的入口文件,了解整個程序的運行流程跟目錄結構,之后再深入去了解它的核心類庫,如果核心類庫存在漏洞的話,那在這套程序中找出個漏洞的希望那不是一般的大啊!了解了整個框架運行流程后,也沒從核心類庫中發現什么可利用的點的話,這時就可以從功能點入手了(這時可以把源碼丟進seay源代碼審計系統了)。

一套組合拳打下了后還是沒找到漏洞咋辦?沒事,換套程序繼續。如果換了n套程序都找不出來,那就換個人吧……

實戰環節

目標:某開源cms(icms) 環境:win+phpstudy+sublime

 

大概目錄結構長這樣

 

 

├── app       應用 ├── cache     緩存 ├── core      icms程序入口 ├── iPHP      iphp框架文件 ├── public    公共資源 ├── res       用戶資源 └── template  模板

 

 

 

打開index.php

發現載入了一個icms.php,然后調用了iCMS::run()方法(如果你第一反應是以為iCMS.php是個類文件,那你后面的審計估計有點難受。)

跟進iCMS.php

該處載入了配置跟框架文件,繼續跟進iPHP.php

載入幾個框架文件,然后調用iPHP::bootstrap()方法,這回差不多了,繼續跟進iPHP::bootstrap()

 

該處做了些環境配置,然后就是調用核心的iWAF、iSecurity類來一下全局過濾(iWAF這些先跟),看到這可有有的小伙伴又有疑惑了,iWAF什么時候加載進來了啊?

看到48行的spl_autoload_register函數了沒,再具體點,看到56行那個autoload了沒

這也沒看到哪有include、require之類的啊,怎么加載進來的?別急,繼續跟進57行的self::auto_require

沒錯就是這了,不過代碼太長了就不貼了,大概就是判斷傳來的類名中是否有Admincp或者App,如果沒有就加載app/xx/xx.class.php,如果有Admincp則加載app/xx/xx.Admincp.php,如果有App則加載app/xx/xx.app.php,如果有Func則加載app/xx/xx.func.php,如果以上都不滿足則去iPHP/core/下找

iPHP::bootstrap()大概知道它干了什么了,再回頭去看看iCMS::init()

大概就是初始化配置信息,繼續往回看,跟進iCMS::run()

繼續跟進iPHP::run

 

(代碼有點長)大概就是從post或get獲取應用名,加載類跟實例化類,調用方法等

劃重點了(后面會用到),這里的文件名格式是xx.app.php,類名是xxApp,其實整套程序并不止index.php這一個入口文件,還有admincp.php、user.php等,其中加載的文件名格式跟類名都是不一樣的,比如:訪問index.php加載的是xx.app.php的xxApp類,訪問admincp.php加載的xx.admincp.php的xxAdmincp類

跟完入口文件后,對整個框架是怎么運行的,都有了個大概的了解,接下來可以去深入了解了

我跟啊跟,發現核心類中的iHttp類的remote方法有點意思,在iPHP/core/iHttp.class.php 130行

remote方法封裝了curl,用來獲取遠程頁面內容,整個方法并沒有對url進行任何限制或過濾,如果調用這個方法前也沒用對url進行限制的話,那ssrf就跑不了了

全局搜索下看哪調用了這個方法,而remote是個靜態方法,調用格式為iHttp::remote,所以直接搜這個就可以了

我想找前臺的漏洞,so,直接看哪個的文件名格式類似xx.app.php就好啦

找啊找,僅發現前臺只有一處調用了該方法

找到之后,跟進去看看

把$avatar傳了進去,繼續往上翻翻,看有沒有啥過濾

一直往上翻,只看到這句

會不會在iSecurity::escapeStr這做了限制呢?繼續跟進去看看

貌似沒有對url做限制!!!

再往上翻翻,看看是哪個方法

這回穩了,手動構造數據包

解釋下個字段:

secode為驗證碼,可從http://127.0.0.1/icms/public/api.php?app=public&do=seccode獲得,驗證碼信息存在cookie里,只要cookie不變,驗證碼就可一直用。

username跟nickname每次請求都要改變,avatar為傳入的url,這個漏洞還有兩處有點蛋疼的地方,第一,username跟nickname每次都要改變,而且這些值都是會存進數據庫的;第二,這里的ssrf是沒有回顯。

使用dict來舉個例子,訪問一個未開啟端口時如下

訪問一個開啟的端口時如下
如果上述說的都做完還沒發現漏洞,那可以嘗試丟到seay源代碼審計系統,或者根據功能點進行審計,找找邏輯漏洞
如果做完上述操作后再用軟件來輔助,會輕松的多,比如,seay源代碼審計系統掃出來如下
拿第二條距離,漏洞描述是referer偽造會引起sql,點擊瞅瞅
看到referer先進入了iSecurity::escapeStr,然后再進入iDB::insert,通過前面的審計我知道iSecurity::escapeStr對單引號等做了過濾,所以普通的sql注入是沒希望了,只能看看還有沒有其他方式能結合利用(我記得這是有注入的……)
如果我是一上來就用軟件的話,那我現在可能還在一步一步的追一個函數,這樣會增加不少功夫
本文到這就結束了,emmm!



熱門文章
  • 機械革命S1 PRO-02 開機不顯示 黑...
  • 聯想ThinkPad NM-C641上電掉電點不...
  • 三星一體激光打印機SCX-4521F維修...
  • 通過串口命令查看EMMC擦寫次數和判...
  • IIS 8 開啟 GZIP壓縮來減少網絡請求...
  • 索尼kd-49x7500e背光一半暗且閃爍 ...
  • 樓宇對講門禁讀卡異常維修,讀卡芯...
  • 新款海信電視機始終停留在開機界面...
  • 常見打印機清零步驟
  • 安裝驅動時提示不包含數字簽名的解...
  • 共享打印機需要密碼的解決方法
  • 圖解Windows 7系統快速共享打印機的...
  • 錦州廣廈電腦上門維修

    報修電話:13840665804  QQ:174984393 (聯系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號:遼ICP備2023002984號-1
    上門服務區域: 遼寧錦州市區
    主要業務: 修電腦,電腦修理,電腦維護,上門維修電腦,黑屏藍屏死機故障排除,無線上網設置,IT服務外包,局域網組建,ADSL共享上網,路由器設置,數據恢復,密碼破解,光盤刻錄制作等服務

    技術支持:微軟等
    主站蜘蛛池模板: 国产成人综合日韩精品无码不卡| 毛片一区二区三区无码| 好硬~好爽~别进去~动态图, 69式真人无码视频免 | 免费无码国产在线观国内自拍中文字幕| 日韩av无码成人无码免费| 亚洲国产av无码精品| 久久老子午夜精品无码怎么打| 无码人妻aⅴ一区二区三区| 无码一区二区三区免费| 国产成人综合日韩精品无码不卡| 18禁超污无遮挡无码免费网站国产 | 午夜福利无码一区二区| 国产AV无码专区亚汌A√| 亚洲Av无码乱码在线znlu| 亚洲av日韩aⅴ无码色老头| 人妻无码人妻有码中文字幕| 无码视频免费一区二三区| 色AV永久无码影院AV| 亚洲日韩VA无码中文字幕| 久久久精品天堂无码中文字幕| 无码伊人66久久大杳蕉网站谷歌 | 人妻丰满熟妇av无码区不卡| 激情无码人妻又粗又大| 国产精品无码一区二区在线| 久久久久亚洲AV无码专区首JN | 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 久久无码一区二区三区少妇| 无码精品A∨在线观看无广告| 精品久久久久久无码不卡| 久久精品九九热无码免贵| 国产成人无码区免费内射一片色欲 | 亚洲国产精品无码久久久不卡| julia无码人妻中文字幕在线| 极品无码国模国产在线观看| 无码一区二区三区爆白浆| 亚洲精品无码你懂的| 亚洲爆乳无码专区www| 丰满爆乳无码一区二区三区 | 国产成人无码免费看片软件| 无码日韩精品一区二区人妻 | 国产成人无码A区在线观看视频|