Web應用程序的敏感信息-隱藏目錄和文件


Web應用程序的敏感信息-隱藏目錄和文件

0x1、場景

Web應用程序根文件夾中可能存在大量隱藏信息:源代碼版本系統文件夾和文件(.git,.gitignore,.svn),項目配置文件(.npmrc,package.json,.htaccess),自定義配置文件使用config.json,config.yml,config.xml等常見擴展以及許多其他擴展。

資源可以分為幾個常見類別:

  • 源代碼版本控制系統
  • IDE(集成開發環境)配置文件
  • 項目和/或技術特定的配置和設置文件

1.1、GIT

Git是“(...)一個免費的開源分布式版本控制系統,新創建的Git存儲庫包含一些默認文件夾和文件,其中存儲了所有信息。新創建的Git存儲庫包含一些默認文件夾和文件,其中存儲了所有信息。

.git文件夾的基本結構

對象可以是以下三種類型之一:committreeblob

Commit是有關提交的信息,具有當前樹(文件夾和文件結構)對象哈希。

tree包含有關文件夾和文件結構的信息 - 每個文件夾或文件都有自己的對象哈希存儲在樹對象中。

Blob是Git對象類型,保存文件內容。知道特定文件的對象哈希,則可以使用 git cat-file命令讀取此文件的內容。

1.2、Subversion (SVN)

Subversion(或SVN)是由Apache Software Foundation創建的源代碼版本控制系統,SVN文件夾和文件的示例結構如下所示:


.svn文件夾的基本結構

關鍵性的信息是SQLite數據庫wc.db文件和pristine /目錄的內容。在wc.db中存有pristine/*里相關文件名的哈希值。

http://server/path_to_vulnerable_site/.svn/wc.db

使用SQLite控制台客戶端(或任何其他工具來管理SQLite數據庫),閱讀wc.db的內容

$ sqlite3 wc.db 
SQLite版本3.8.10.2 2015-05-20 18:17:19 
輸入“.help”作為使用提示。
sqlite> .databases 
seq名稱文件                                                       
--- --------------- ------------------------- --------------------------------- 
0 main /Users/bl4de/hacking/playground/wc.db                      
sqlite>。 dump 
PRAGMA foreign_keys = OFF; 
開始交易; 
CREATE TABLE REPOSITORY(id INTEGER PRIMARY KEY AUTOINCREMENT,root TEXT UNIQUE NOT NULL,uuid TEXT NOT NULL); 
插入“存儲”值(1,'svn + ssh://192.168.1.4/var/svn-repos/project_wombat','88dcec91-39c3-4b86-8627-702dd82cfa09'); 

(......)

INSERT INTO“NODES”VALUES(1,'trunk',0,'',1,'trunk',1,'normal',NULL,NULL,'dir',X'2829','infinity',NULL,NULL ,1,1456055578790922, 'bl4de',NULL,NULL,NULL,NULL); 
INSERT INTO“NODES”VALUES(1,'',0,NULL,1,'',1,'normal',NULL,NULL,'dir',X'2829','infinity',NULL,NULL,1, 1456055578790922 'bl4de',NULL,NULL,NULL,NULL); 
INSERT INTO“NODES”VALUES(1,'trunk / test.txt',0,'trunk',1,'trunk / test.txt',2,'normal',NULL,NULL,'file',X'2829 ”,NULL, '$ SHA1 $ 945a60e68acc693fcb74abadb588aac1a9135f62',NULL,2,1456056344886288, 'bl4de',38,1456056261000000,NULL,NULL); 
插入“NODES”值(1,'trunk / test2.txt',0,' 軀干”,1 '軀干/的test2.txt',3, '正常',NULL,NULL, '文件',NULL,NULL, '$ $ SHA1 6f3fb98418f14f293f7ad55e2cc468ba692b23ce',NULL,3,1456056740296578, 'bl4de',27, 14560566.96億,NULL,NULL); 

(......)

每一個都包含文件名和SHA1哈希,對應於pristine /文件夾中的條目:

$ ls -lA pristine / 94 / 
total 8 
-rw-r  -  r  -  @ 1 bl4de staff 38 Feb 21 12:05 945a60e68acc693fcb74abadb588aac1a9135f62.svn-base

REPOSITORIES表中的條目指向原始存儲庫路徑,即:

svn+ssh://192.168.1.4/var/svn-repos/project_wombat

1.3、IDE項目文件

許多開發人員使用的IDE(集成開發環境)有一個共同點 - 它們將項目的設置和許多附加信息保存在自己的文件中,分別為每個項目創建。

JetBrains的產品(https://www.jetbrains.com/)。

JetBrains IDE - IntelliJ IDEA,WebStorm,PHPStorm,RubyMine

使用JetBrains產品開發的每個項目都會創建自己的隱藏目錄 .idea /。此目錄包含有關當前項目,其文件,目錄和IDE設置的所有信息。

.idea JetBrains文件夾的基本結構

workspace.xml包含許多有用的信息,它們允許枚舉應用程序的所有文件和文件夾,源版本控制系統信息和許多其他信息。

<?xml version =“1.0”encoding =“UTF-8”?> 
	(...)
	<component name =“FileEditorManager”> 
	    <leaf> 
	      <file leaf-file-name =“README.md”pinned =“false “current-in-tab =”false“> 
	        <entry file =”file://$PROJECT_DIR$/README.md“> 
				(...)
	</ component> 
(...)

組件名稱中的所有節點=“FileEditorManager”包含所有文件及項目根目錄的相對路徑。

每個組件節點有版本系統的信息,如下例所示:

<component name =“Git.Settings”> 
    <option name =“UPDATE_TYPE”value =“MERGE”/> 
    <option name =“RECENT_GIT_ROOT_PATH”value =“$ PROJECT_DIR $”/> 
  </ component>

關於項目文件上執行的提交和其他任務的信息,在節點組件名稱=“TaskManager”中

(...)
    <task id =“LOCAL-00211”summary =“將WebSocket端口更改為1099”> 
      <created> 1436206418000 </ created> 
      <option name =“number”value =“00211”/> 
      <option name = “project”value =“LOCAL”/> 
      <updated> 1436206418000 </ updated> 
    </ task> 
(...)

更改歷史記錄,存儲在組件名稱=“ChangeListManager”節點中:

<component name =“ChangeListManager”> 
		(...)
		<change type =“DELETED”beforePath =“$ PROJECT_DIR $ / chat / node_modules / socket.io / node_modules / socket.io-adapter / node_modules / debug / Makefile”afterPath = “”/> 
		(...)
	</組分>

以及組件名稱=“editorHistoryManager”節點:

(...)
    <entry file =“file://$PROJECT_DIR$/public_html/vendor/angular/angular.js”> 
      <provider selected =“true”editor-type-id =“text-editor”> 
        <state vertical-scroll-proportion =“0.0”> 
          <caret line =“3233”column =“29”selection-start-line =“3233”selection-start-column =“29”selection-end-line =“3233”selection -end-column =“29”/> 
        </ state> 
      </ provider> 
    </ entry> 
(...)

如果開發人員曾經使用集成數據庫管理器管理數據庫,那么還有另一個非常有趣的文件:dataSources.ids,可以在其中找到數據庫結構,dataSource.xmldataSources.xmldataSources.local.xmldbnavigator.xml包含示例信息:

<database> 
          <name value =“database_name”/> 
          <description value =“”/> 
          <database-type value =“MYSQL”/> 
          <config-type value =“BASIC”/> 
          <database-version value =“5.7 “/> 
          <driver-source value =”BUILTIN“/> 
          <driver-library value =”“/> 
          <driver value =”“/> 
          <host value =”localhost“/> 
          <port value =”3306“/> 
          <database value =“mywebapp”/> 
          <url-type value =“DATABASE”/> 
          <os-authentication value =“false“/> 
          <empty-password value =”false“/> 
          <user value =”root“/>
          <password value =“cm9vdA ==”/> <! -  Base64 encoded  - > 
        </ database>

甚至更多,比如dataSources.local.xml

<?xml version =“1.0”encoding =“UTF-8”?> 
<project version =“4”> 
  <component name =“dataSourceStorageLocal”> 
    <data-source name =“MySQL  -  mywebapp @ localhost”uuid =“8681098b -fc96-4258-8b4f-bfbd00012e2b“> 
      <secret-storage> master_key </ secret-storage> 
      <用戶名> root </ user-name> 
      <schema-pattern> mywebapp。* </ schema-pattern> 
      <default -schemas> mywebapp。* </ default-schemas> 
    </ data-source> 
  </ component> 
</ project>

一切都取決於項目本身,使用IDE插件(如調試器,源版本控制或數據庫管理器)。

NetBeans IDE

NetBeans(https://netbeans.org/)是另一個非常流行的免費IDE,適用於Java,C / C ++,PHP,HTML5和JavaScript開發。

NetBeans在項目的根文件夾中創建自己的文件夾,包含所有項目設置 -  nbproject /(類似於 .idea文件夾創建dby JetBrains IDE)

project.xml是NetBeans項目配置的一個文件,可以從這個文件入手查看敏感點。

.nbproject文件夾的基本結構

1.4、其他配置文件

NodeJS / JavaScript特定的配置文件

示例是npm配置文件(package.jsonpackage-lock.json),其中包含所有應用程序依賴項; 用於JavaScript的linters配置文件,如ESlintJShintBower包管理器bower.json等等。

示例bower.json文件,其中包含Bower的配置,並包含Web應用程序(前端端)中使用的包列表:

{ 
  “name”:“testapp”,
  “version”:“2.1.0”,
  “authors”:[ 
    “Rafal'bl4de'Janicki <email@gmail.com>” 
  ],
  “description”:“test application”,
  “ main“:”index.html“,
  ”moduleType“:[ 
    ”globals“ 
  ],
  ”license“:”MIT“,
  ”dependencies“:{ 
    ”angular“:”1.4“,
    ”pure“:”~0.5.0“ ,
    “angular-route”:“~1.2.26”,
    “angular-ui-router”:“~0.2.11”,
    “angular-bootstrap-datetimepicker”:“最新”,
    “angular-translate”:“~2.6.1” 
  },
  “devDependencies”:{} 
}

由於是服務器端詳細信息的列表 - 使用的包,如數據庫連接器,中間件組件等 - 此文件可能包含許多有關潛在易受攻擊軟件的信息。

示例package.json,顯示可能使用了MySQL數據庫,並通過WebSockets進行了一些客戶端 - 服務器通信:

{ 
  “name”:“Test application server dependencies”,
  “version”:“1.0.0”,
  “author”:“bl4de”,
  “dependencies”:{ 
    “socket.io”:“^ 1.3.5”,
    “mysql “:”^ 2.9.0“ 
  } 
}

.bowerrc.eslintrc.jshintrc等文件 。即使它們不包含非常敏感的信息,也有可能找到有關Web應用程序體系結構,使用的庫和/或框架的一些詳細信息,甚至是評論中的一些有價值的信息。

GitLab CI / CD .gitlab-ci.yml配置文件

當項目使用GitLab連續集成(GitLab CI / CD)時,項目根文件夾中存在一個非常特殊的脆弱文件: .gitlab-ci.yml此文件可能包含大量非常敏感的信息:有關測試和構建過程的詳細信息,詳細命令在此類過程的每個步驟和許多其他關鍵信息上運行。

可以在此處找到.gitlab-ci.yml文件的示例

Ruby on Rails database.yml文件

主數據庫配置文件,包含連接到數據庫所需的一切:用戶名,密碼和其他配置詳細信息。

macOS .DS_Store文件

關於macOS系統的一個特殊之處是一個名為的文件。.DS_Store。此文件由macOS文件資源管理器應用程序Finder創建,並且經常被錯誤地提交到源版本控制存儲庫中。

使.DS_Store文件非常有用的原因在於它們保存有關Finder窗口配置的信息,包括代表在特定Finder窗口中顯示的文件和文件夾的圖標布局。

如果在Web服務器上找到.DS_Store文件,則有可能找到很多敏感信息資源。

.DS_Store文件的基本結構

.DS_Store文件。我們可以識別config,LICENSE,loader或package.json文件,還有node_modules /,pages /,utils /和wrappers / folders - NodeJS應用程序的典型結構

.DS_Store文件的主要問題是Apple特定的格式並且不易讀取,這種格式的最佳資源之一(以及用於解析的Python庫)是由Sebastian Neef 解析.DS_Store文件格式

0x2、工具

枚舉工具(DirBusterDirbwfuzz,僅舉幾例),字典包含數十萬個最受歡迎的文件夾和文件名,robots.txt常用條目等。

字典資源:

https://github.com/danielmiessler/SecLists

https://github.com/danielmiessler/RobotsDisallowed

0x3、參考

https://medium.com/@_bl4de/hidden-directories-and-files-as-a-source-of-sensitive-information-about-web-application-84e5c534e5ad


免責聲明!

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



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