轉:攻擊JavaWeb應用[1]-javaEE基礎

http://www.cnblogs.com/oh3o/p/3224562.htmlphp

JSP: 全名爲java server page,其根本是一個簡化的Servlethtml

Servlet:Servlet是一種服務器端的Java應用程序,能夠生成動態的Web頁面。前端

JavaEE: JavaEE是J2EE新的名稱。更名目的是讓你們清楚J2EE只是Java企業應用。java

什麼叫Jsp什麼叫Java我真的很是讓你們搞清楚!拜託別一上來就來一句:「前幾天我搞了一個jsp的服務器,可難吭了。」。nginx

請你們分清楚什麼是jsp什麼是JavaEE! Java平臺結構圖:web

 

能夠看到Java平臺很是的龐大,而開發者的分化爲:數據庫

列舉這兩個圖的緣由就是讓你知道你看到的JSP不過是冰山一角,Jsp技術不過是Java初級開發人員必備的技術而已。apache

我今天要講的就是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.34workCatalinalocalhost你的項目名orgapachejsp

咱們只要打開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框架那麼:WebRootWEB-INFhibernate.cfg.xml

還有一種變態的配置方式就是直接卸載源代碼裏面:

Tomcat的數據源(其餘的服務器大同小異):

目錄:C:apache-tomcat-7.0.34confcontext.xml、server.xml

Resin數據源:

路徑:D:installDev
esin-pro-4.0.28conf
esin.conf(resin 3.x是resin.xml)

其餘的配置方式諸如讀取如JEECMS讀取的就是.properties配置文件,這種方式很是的常見:

 

0x01 Tomcat 基礎


沒錯,這就是 TOM 貓。樓主跟這隻貓打交道已經有好幾年了,在 Java 應用當中 TOMCAT 運用的很是的普遍。

TOM 貓是一個 Web 應用服務器,也是 Servlet 容器。

Apache+Tomcat 作負載均衡:

Tomcat快速定位到網站目錄:

如何快速的找到tomcat的安裝路徑:

一、不論是誰都應該明白的是無論apache仍是tomcat安裝的路徑都是隨意的,因此找不到路徑也是很是正常的。
二、在你的/etc/httpd/conf/httpd.conf裏面會有一個LoadModule jk_module配置用於集成tomcat而後找到JkWorkersFile也就是tomcat的配置,找到.properties的路徑。httpd裏面也有可能會配置路徑若是沒有找到那就去apache2confextrahttpd-vhosts看下有沒有配置域名綁定。  
三、在第二步的時候找到了properties配置文件並讀取,找到workers.tomcat_home也就是tomcat的配置路徑了。  
四、獲得tomcat的路徑你尚未成功,域名的具體配置是在conf下的server.xml。  
五、讀取server.xml不出意外你就能夠找到網站的目錄了。  
六、若是第五步沒有找到那麼去webapps目錄下ROOT瞧瞧默認不配置的話網站是部署在ROOT下的。  
七、這一點是附加的科普知識愛聽則聽:數據庫若是啓用的tomcat有可能會採用tomcat的數據源配置未見爲conf下的context.xml、server.xml。若是網站有域名綁定那麼你能夠試下ping域名而後帶上端口訪問。有可能會出現tomcat的登陸界面。tomcat默認是沒有配置用戶登陸的,因此當tomcat-users.xml下沒有相關的用戶配置就別在這裏浪費時間了。  
八、若是配置未找到那麼到網站目錄下的WEB-INF目錄和其下的classes目錄下找下對應的properties、xml(通常都是properties)。  
九、若是你夠蛋疼能夠讀取WEB.XML下的classess內的源碼。  
十、祝你好運。

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 admin@bjcyw.cn DocumentRoot E:/XXXX/XXX
ServerName beijingcanyinwang.com ErrorLog E:/XXXX/XXX/bssn-error_log CustomLog E:/XXXX/XXX/bssn_log common 
</VirtualHost>

二級域名綁定,須要修改:

E:installapache2confextrahttpd-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 配置就無壓力了。

整合成功後:

 

做者:園長

相關文章
相關標籤/搜索