攻擊JavaWeb應用————1、JavaEE基礎
0x00 JavaEE 基礎
JSP: 全名為java server page,其根本是一個簡化的Servlet。
Servlet:Servlet是一種伺服器端的Java應用程式,可以生成動態的Web頁面。
JavaEE: JavaEE是J2EE新的名稱。改名目的是讓大家清楚J2EE只是Java企業應用。
什麼叫Jsp什麼叫Java我真的非常讓大家搞清楚!拜託別一上來就來一句:“前幾天我搞了一個jsp的伺服器,可難吭了。”。
請大家分清楚什麼是jsp什麼是JavaEE! Java平臺結構圖:
可以看到Java平臺非常的龐大,而開發者的分化為:
列舉這兩個圖的原因就是讓你知道你看到的JSP不過是冰山一角,Jsp技術不過是Java初級開發人員必備的技術而已。
我今天要講的就是Java樹的最下面的兩層了,也是初級工程師需要掌握的東西。
Web請求與相應簡要的流程:
這是一個典型的就是客戶端傳送一個HTTP請求到伺服器端,伺服器端接收到請求並處理、響應的一個過程。
如果請求的是JSP,tomcat會把我們的JSP編譯成Servlet也就是一個普通的Java類。
其實JSP是Servlet的一種特殊形式,每個JSP頁面就是一個Servlet例項。Servlet又是一個普通的Java類它編譯後就是一個普通的class檔案。
這是一個普通的jsp指令碼頁面,因為我只用JSP來作為展示層僅僅做了簡單的後端資料的頁面展示:
上圖可以非常清晰的看到通常的Jsp在專案中的地位並不如我們大多數人所想的那麼重要,甚至是可有可無!因為我們完全可以用其他的東西來代替JSP作為前端展示層。 我們來看一下這個頁面編譯成class後是什麼樣子:
你會發現你根本就看不懂這個class檔案,因為這是位元組碼檔案我們根本就沒法看。通過我們的TOMCAT編譯後他程式設計了一個Java類檔案儲存在Tomcat的work目錄下。
檔案目錄:C:\apache-tomcat-7.0.34\work\Catalina\localhost\你的專案名\org\apache\jsp
我們只要開啟index_jsp.java或者用jd-gui(Java反編譯工具)開啟就行了:
有人說這是Servlet嗎?當然了。
繼承HttpJspBase類,該類其實是個HttpServlet的子類(jasper是tomcat的jsp engine)。
Jsp有著比Servlet更加優越的展現,很多初學PHP的人恐怕很難把檢視和邏輯分開吧。比如之前在寫PHPSQL隱碼攻擊測試的DEMO:
這程式碼看起來似乎沒有什麼大的問題,也能正確的跑起來啊會有什麼問題呢?原因很簡單這屬於典型的展現和業務邏輯沒有分開!這和寫得爛的Servlet差不多!
說了這麼多,很多人會覺得Servlet很抽象。我們還是連建立一個Servlet吧:
建立成功後會自動的往web.xml裡面寫入:
其實就是一個對映的URL和一個處理對映的類的路徑。而我們自動生成的Java類精簡後大致是這個樣子:
請求響應輸出內容:
熟悉PHP的大神們這裡就不做解釋了哦。瞭解了Jsp、Servlet我們再來非常簡單的看一下JavaWeb應用是怎樣跑起來的。
載入web.xml的配置然後從配置裡面獲取各種資訊為WEB應用啟動準備。
科普:C:\apache-tomcat-7.0.34\webapps
下預設是部署的Web專案。webapps 下的資料夾就是你的專案名了,而專案下的WebRoot一般就是網站的根目錄了,WebRoot下的資料夾WEB-INF預設是不讓Web訪問的,一般存在配置洩漏多半是nginx配置沒有過濾掉這個目錄。
快速定位資料庫連線資訊:
大家可能都非常關心資料庫連線一般都配置在什麼地方呢?
答案普遍是:C:\apache-tomcat-7.0.34\webapps\wordpress\WEB-INF
下的***.xml
大多數的Spring框架都是配置在applicationContext裡面的:
如果用到Hibernate框架那麼:WebRoot\WEB-INF\classes\hibernate.cfg.xml
還有一種變態的配置方式就是直接解除安裝原始碼裡面:
Tomcat的資料來源(其他的伺服器大同小異):
目錄:C:\apache-tomcat-7.0.34\conf\context.xml、server.xml
Resin資料來源:
路徑:D:\installDev\resin-pro-4.0.28conf\resin.conf(resin 3.x是resin.xml)
其他的配置方式諸如讀取如JEECMS讀取的就是.properties配置檔案,這種方式非常的常見:
0x01 Tomcat 基礎
沒錯,這就是 TOM 貓。樓主跟這隻貓打交道已經有好幾年了,在 Java 應用當中 TOMCAT 運用的非常的廣泛。
TOM 貓是一個 Web 應用伺服器,也是 Servlet 容器。
Apache+Tomcat 做負載均衡:
Tomcat快速定位到網站目錄:
如何快速的找到tomcat的安裝路徑:
apache快速定位到網站目錄:
普通的域名繫結:
直接新增到confhttpd.conf、confextrahttpd-vhosts.conf
Resin快速定位到網站目錄:
在resin的conf下的resin.conf(resin3.x)和resin.xml(resin4.x)
Resin apache 負載均衡配置(從我以前的文章中節選的)
APACHE RESIN 做負載均衡,Resin 用來做 JAVAWEB 的支援,APACHE 用於處理靜態
和 PHP 請求,RESIN 的速度飛快,RESIN 和 apache 的配合應該是非常完美的吧。
域名解析:
apache 的 httpd.conf:
需要修改:Include conf/extra/httpd-vhosts.conf(一定要把前面的#除掉,否則配置不起作用)
普通的域名繫結:
直接新增到 httpd.conf
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot E:/XXXX/XXX
ServerName beijingcanyinwang.com
ErrorLog E:/XXXX/XXX/bssn-error_log
CustomLog E:/XXXX/XXX/bssn_log common
</VirtualHost>
二級域名繫結,需要修改:E:\install\apache2\conf\extra\httpd-vhosts.conf
如:<VirtualHost *:80>
DocumentRoot E:/XXXXXXX/XXX
ServerName bbs.beijingcanyinwang.com
DirectoryIndex index.html index.php index.htm
</VirtualHost>
Resin 的
請求處理:
<LocationMatch (.*?).jsp>
SetHandler caucho-request
</LocationMatch>
<LocationMatch (.*?).action>
SetHandler caucho-request
</LocationMatch>
<LocationMatch union-resin-stat-davic>
SetHandler caucho-request
</LocationMatch>
<LocationMatch stat>
SetHandler caucho-request
</LocationMatch>
<LocationMatch load>
SetHandler caucho-request
</LocationMatch>
<LocationMatch vote>
SetHandler caucho-request
</LocationMatch>
APACHE 新增對 Resin 的支援:
LoadModule caucho_module "E:/install/resin-pro-3.1.12/win32/apache-2.2/mod_caucho. dll"
然後在末尾加上:
<IfModule mod_caucho.c>
ResinConfigServer localhost 6800
CauchoStatus yes
</IfModule>
只有就能讓 apache 找到 resin 了。
PHP 支援問題:
resin 預設是支援 PHP 的測試 4.0.29 的時候就算你把 PHP 解析的 servlet 配置刪了一樣解析 PHP,無奈換成了 resin 3.1 在註釋掉 PHP 的 servlet 配置就無壓力了。
整合成功後:相關文章
- 攻擊JavaWeb應用[1]-JavaEE 基礎JavaWeb
- 攻擊JavaWeb應用[3]-SQL隱碼攻擊[1]JavaWebSQL
- 攻擊JavaWeb應用[7]-Server篇[1]JavaWebServer
- 攻擊JavaWeb應用[4]-SQL隱碼攻擊[2]JavaWebSQL
- 攻擊JavaWeb應用[5]-MVC安全JavaWebMVC
- 攻擊JavaWeb應用————5、MVC安全JavaWebMVC
- 攻擊JavaWeb應用[9]-Server篇[2]JavaWebServer
- 攻擊JavaWeb應用[8]-後門篇JavaWeb
- 攻擊JavaWeb應用——3、sql注入(上)JavaWebSQL
- 攻擊JavaWeb應用————7、Server篇(上)JavaWebServer
- 攻擊JavaWeb應用————8、Server篇(下)JavaWebServer
- 攻擊JavaWeb應用————9、後門篇JavaWeb
- 攻擊JavaWeb應用[2]-CS互動安全JavaWeb
- 攻擊JavaWeb應用————2、CS互動安全JavaWeb
- 攻擊JavaWeb應用[6]-程式架構與程式碼審計JavaWeb架構
- 攻擊JavaWeb應用————6、程式架構與程式碼審計JavaWeb架構
- 供應鏈攻擊和關鍵基礎設施
- SQL隱碼攻擊基礎原理SQL
- ArborNetworks基於應用層防護DDoS攻擊
- SQL隱碼攻擊基礎入門SQL
- 應用服務攻擊工具clusterd
- 走進JavaWeb技術世界1:JavaWeb的由來和基礎知識JavaWeb
- 利用Burp Suite攻擊Web應用UIWeb
- Akamai:65.1%的Web應用程式攻擊來自SQL隱碼攻擊AIWebSQL
- 面試問題記錄 三 (JavaWeb、JavaEE)面試JavaWeb
- JavaWeb基礎知識點JavaWeb
- javaweb基礎--HTTP協議JavaWebHTTP協議
- 【JavaWeb】SpringBoot基礎JavaWebSpring Boot
- httpoxy漏洞遠端攻擊PHPPython應用HTTPPHPPython
- 利用 cookie 篡改來攻擊 Web 應用程式CookieWeb
- SQL隱碼攻擊預備知識-sql基礎SQL
- 【由淺入深_打牢基礎】HOST頭攻擊
- nginx應用總結(1)-- 基礎知識和應用配置梳理Nginx
- 攻擊者使用SQLite資料庫中的惡意程式碼攻擊應用程式SQLite資料庫
- 報告稱超6成Web應用程式攻擊來自SQL隱碼攻擊WebSQL
- 【網路安全基礎課程】DDOS攻擊方式有哪些?
- CTF-Web26(涉及SQL隱碼攻擊--基礎題)WebSQL
- 挫敗APT攻擊從網路安全基礎工作做起APT