标签:SQL注入、本地文件包含LFI、端口敲门、hydra爆破、linux提权
0x00 环境准备
下载地址:https://www.vulnhub.com/entry/dc-9,412/
flag数量:1
攻击机:kali
攻击机地址:192.168.1.31
靶机描述:
DC-9 is another purposely built vulnerable lab with the intent of gaining experience in the world of penetration testing.
The ultimate goal of this challenge is to get root and to read the one and only flag.
Linux skills and familiarity with the Linux command line are a must, as is some experience with basic penetration testing tools.
For beginners, Google can be of great assistance, but you can always tweet me at @DCAU7 for assistance to get you going again. But take note: I won't give you the answer, instead, I'll give you an idea about how to move forward.
0x01 信息搜集
1.探测靶机地址
命令:arp-scan -l
靶机地址192.168.1.38
2.探测靶机开放端口
命令:nmap -sV -p- 192.168.1.38
开放了22和80端口,但是22端口被过滤了,那就先看一下80端口
插件没有识别到web指纹。
0x02 SQL注入
在search菜单下有个提交框,说不定存在POST注入
放到sqlmap里跑一下,命令:sqlmap -u http://192.168.1.38/results.php --data "search=1" --batch -v 3 --level 3 --dbs
果然有注入,查询到了3个数据库,其中一个是系统自带的,我们跑一下剩下两个。
1.Staff数据库
命令:sqlmap -u http://192.168.1.38/results.php --data "search=1" --batch -v 3 --level 3 -D Staff --tables
查看数据表,命令:
StaffDetails表:
sqlmap -u http://192.168.1.38/results.php --data "search=1" --batch -v 3 --level 3 -D Staff -T StaffDetails --columns
Users表:
sqlmap -u http://192.168.1.38/results.php --data "search=1" --batch -v 3 --level 3 -D Staff -T Users --dump
StaffDetails表:
Users表:
看密码的加密方式应该是md5,查一下值
在staff表中拿到了admin的登录密码admin \ transorbital1
2.users数据库
命令:sqlmap -u http://192.168.1.38/results.php --data "search=1" --batch -v 3 --level 3 -D users --tables
命令:sqlmap -u http://192.168.1.38/results.php --data "search=1" --batch -v 3 --level 3 -D users -T UserDetails --dump
在UserDetails表中发现了很多账号密码,测试了几个都不能登录网站后台,那就使用admin登录吧,这几组账号密码先保存起来后面可能会用到。
admin登录成功了
0x03 本地文件包含LFI
使用admin登录后,页面上有一句提示(用红框框起来了),可能存在文件包含漏洞,fuzz一下,这里猜测文件参数是file
已经跑出来了
看样子是相对路径包含,不能用绝对路径。
知道了是相对路径,那就再跑一下其他文件
0x04 端口敲门
端口敲门
个人理解:端口敲门服务,即:knockd服务,是为了加强SSH的安全性而设计的。在正常情况下,黑客如果可以扫描到服务器的22端口是开放状态,那么就可以对该端口进行爆破,这样22端口是不安全的。在配置了knockd服务情况下,22端口默认是关闭的,knockd服务会侦听以太网或其他可用接口上的所有流量,等待特殊序列的端口命中(port-hit),当特殊序列的端口命中时,那么SSH所在的22端口就会被打开。
举个例子:假如knockd服务中定义了如下三个端口:4444、6666和7777为特殊序列的端口。在默认情况下,22端口是关闭的,当我们依次访问了这三个自定义的端口后,22端口就会自动开启。这样,只有知道自定义端口的人才能够访问22端口,黑客如果不知道自定义端口就无法开启22端口。
我们刚才已经爆破出/etc/knockd.conf
文件了,现在看一下/etc/knockd.conf
文件中的自定义端口
有3个自定义端口,分别是:7469,8475,9842
依次访问这三个端口就可以打开SSH服务了,命令:
nmap -p 7469 192.168.1.38
nmap -p 8475 192.168.1.38
nmap -p 9842 192.168.1.38
现在看一下ssh端口,命令:nmap -p 22 192.168.1.38
开放了,这里敲门我敲了半天,甚至还重启了一次靶机,最后突然就敲开了,玄学。
0x05 hydra爆破SSH
刚才sql注入的时候,拿到了很多用户名和密码,把它们分别保存。
然后使用hydra进行ssh爆破。命令:hydra -L user.txt -P pass.txt -t 10 ssh://192.168.1.38
爆破出来3个账号:chandlerb \ UrAG0D!
、joeyt \ Passw0rd
、janitor \ Ilovepeepee
分别登陆这三个用户,在janitor用户下发现了隐藏文件,输入ls无结果,输入ls -la
发现了文件。
这个文件看起来是一个存放密码的文件,将密码复制到刚才的密码pass.txt中,再次使用hydra进行爆破
爆破出了一个新的账号:fredf \ B4-Tru3-001
0x06 提权
使用新的账号可以使用sudo进行权限枚举
这里发现fred用户在NOPASSWD的情况下可以使用root权限运行这个test文件,尝试运行,发现它是一个python文件,查找test.py文件
查看test.py文件
该文件需要传入三个参数,这三个参数都是文件,传入三个参数后,会读取第二个文件,然后将第二个文件的内容追加到第三个文件里。
既然这样,我们就可以利用这个程序向/etc/passwd文件后追加一个拥有root权限的账户,也就是说把/etc/passwd文件设置为第三个参数,而第二个参数由我们自己创建,这个文件里是拥有root权限账户的信息,第一个参数随便写一个就好。
我们先使用openssl来创建第二个参数文件中的内容,
命令:openssl passwd -1 -salt dn 111111
这条命令的意思是创建一个用户名为dn
,密码为111111
的用户
-1 的意思是使用md5加密算法
-salt 自动插入一个随机数作为文件内容加密
生成后,根据/etc/passwd
的格式,把它修改一下,然后存在靶机中的一个文件里,这个文件就是参数2
修改后的值:dn:$1$dn$af67d2P6bAKTKU2Y5vwMV0:0:0::/root:/bin/bash
最后,调用test.py进行提权
flag在/root下
由于我不会每天都登录,所以有什么私信或者评论我都不能及时回复,如果想要联系我最好给我发邮件,邮箱:Z2djMjUxMTBAMTYzLmNvbQ==,如果发邮件请备注“”
参考链接:
1.『VulnHub系列』DC: 9-Walkthrough
2.记一次vulnhub|渗透测试 DC-9
3.vulnhub靶机DC-9渗透测试
4.保护 SSH 的三把锁