欢迎光临散文网 会员登陆 & 注册

项目七:DerpNStink-1

2023-07-25 23:30 作者:沙漠里的鲸  | 我要投稿

##Nmap信息收集

# -sP收集同网段存活主机:

#全端口扫描

---思路:收集21端口的敏感信息,爆破Web的目录,进而爆破SSH

#查看指定端口的版本

---这里FTP的没有扫到匿名用户登陆,网站扫描到目录:/php/  /temporary/

---更新思路:从Web入手,获取用户名和密码爆破Ftp,进而爆破SSH

##Web的漏洞发现

---浏览器访问首页,没有太多信息

---查看前端源代码(也可以使用curl URL进行Web的访问)

---发现敏感目录文件,提示需要跟新本地的host文件才能访问一个新的博客网站

---在前端源代码也发现了一段加密的flag

<--flag1(52E37291AEDF6A46D7D0BB8A6312F4F9F1AA4975C248C3F0E008CBA09D6E9166) -->

---使用hash-identifier识别密码的类型

---当然,也可以使用md5在线解密破解

---是sha256加密的Austrialia(感觉是用户名)

---访问robots.txt目录,发现就是nmap之前扫描的2个目录,但是没有什么有用的信息

--采用dirb爆破目录,大致存在php和weblog目录比较有用

---从/weblog/wp-admin/可以看出应该是一个CMS框架

---访问的时候,提示域名错误,这里应该是需要将靶机和IP在hosts文件中匹配

---这里发现PHPmyadmin数据库管理插件

---访问采用 root/空密码 登陆失败,思路1:爆破,思路2:phpMyadmin版本漏洞

---获取phpmyadmin版本信息的方法:在网址根路径后面添加(访问了都不行)

readme.php ,README ,changelog.php,Change, Documetation.html ,Documetation.txt ,translators.html

---在/etc/hosts文件添加域名和IP

---访问/weblog/wp-admin/,采用admin/admin弱口令登陆

---这里也可以使用hydra进行爆破(没有验证码)

  • hydra:Hydra 工具的命令。

  • -l admin:指定要尝试的用户名。 在这个例子中,用户名为 "admin"。

  • -P /tmp/pw.txt:指定密码字典文件的路径。Hydra 将会使用该密码字典中的每个密码来尝试登录。

  • -vV:启用详细输出和显示每个尝试的结果。

  • 192.168.16.138:目标主机的IP地址,这是 WordPress 安装的主机地址。

  • http-post-form:指定使用 POST 方法发送表单数据进行登录尝试。

  • "/weblog/wp-login.php:log=^USER^&pwd=^PASS^:error":指定 POST 请求的 URL 和表单数据的格式。  ^USER^^PASS^ 会被实际的用户名和密码代替,error 是指定登录失败的错误消息,Hydra 通过检查错误消息来判断登录是否成功。

---查看发现CMS的版本:WordPress 6.3

---存在一个专属WordPress的漏洞扫描工具(ThinkPhP框架也存在)即WPscan

---WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用Ruby编写,能够扫描WordPress网站中的多种安全漏洞
----登陆WPSCAN的官网https://wpscan.com/:注册一个用户,获取一个token

---wpscan的常用参数

---采用密匙访问

---这里发现WordPress的版本(和登陆进去的信息不一样啊)

----这里扫描出来6个漏洞可以利用

---Slideshow Gallery < 1.4.7 - Arbitrary File Upload(文件上传漏洞)

---采用AWVS扫描(我的AWVS打不开了,应该是没有设置禁止更新)

---AWVS的下载安装(推荐):https://www.iculture.cc/software/pig=29284(记得快照)

---可以看到主要是三个漏洞(AWVS>WbScan):1.弱口令登陆2.XSS3.文件上传4.目录遍历

---可以发现文件上传都是/weblog/wp-content/plugins/目录下slideshow-gallery插件导致

---思路1:通过:弱口令/XSS登陆,查看后台模板是否可以修改

---思路2:根据文件上传直接WebShell

---思路3:目录遍历查看/etc/shadow,然后SSH链接登陆

---也可以直接搜索相关的exp

---本文直接在kail搜索(这里优先选择py文件即最后一个即34681)

---但是34681.py的python2的库无法更新(靶机是python2),没浪费时间去纠结!!

---所有我们可以看看34514

---也可以在谷歌搜索 ,注意:优先选择exploit-db的

---kail、MSF、exploit-db都是OffSec的作品

---点击EDB-ID:34514,CVE-2014-5460

---后门位置:http://VICTIM/wordpress/wp-content/uploads/slideshow-gallery/backdoor.php

---也可以使用MSF搜索EXP(最方便)

---这里发现一个文件上传漏洞

---查看exp需要的条件,发现需要设置登陆密码

  ---分别设置约束条件

---获取shell

---由于这里是伪shell,可以通过nc反弹一个shell

---这里是通过socket将kail的标准输入、标准输出、标准错误传输到靶机的/bin/bash        

  ---在kail监听6666端口,采用pty将/bin/sh提升至/bin/bash

---对于stty -echo的提升shell的方法,这里还是不行

---stty -echo" 用于关闭终端的字符回显功能。当您在终端输入字符时,默认情况下,会将输入的字符显示在屏幕上。但是,当执行 "stty -echo" 命令时,它会关闭这个功能

  ---进入shell查看当前网站的根目录:/var/www/html

---进入目录后发现,congfig文件,通过gerp “root”查看是否存在关键词

  • -r: 递归搜索(Recursive),意味着在指定的目录及其子目录中进行搜索文件内容。 这个参数用于查找目录下所有匹配的文件,而不仅仅是指定的wp-config.php文件。

  • -n: 显示匹配行的行号(Line number)。当grep找到匹配的内容时,它会显示匹配的行,并在每行前面显示该行的行号,这样您就可以知道匹配内容所在的具体行数(26行)

---直接cat查看数据库的用户名和密码       

---本地登陆Mysql,查看是否具有文件写入的权限

---这里secure_file_priv的权限:只允许在 /var/lib/mysql-files/写入文件

---无法进行UDF提权,只能查看数据库里面是否存在有用的信息

---进入wordpress数据库下 wp_users表,查看用户名,密码以及密钥

---通过hash-identifier鉴别密码的加密类型为MD5

---md5在线破解,只能破解admin,但是unclestinky的密码无法破解

---这里发现爆破的字典不太行

---切换字典,kail里面自带了争对WordPress的字典

---这里需要解压:gzip -d your_file.gz

---/usr/share/wordlists/rockyou.txt

---gzip的参数,这里的-d是解压缩的意思

---采用自定义字典爆破:john 2.txt --wordlist=/usr/share/wordlists/rockyou.txt

---采用unclestinky/wedgie57进行Web登录,获取flag2

---将Flag2进行解密:

---在/usr/share/目录下存在许多爆破文件

  1. /usr/share/wordlists/: 该目录包含常用的密码字典文件,如  rockyou.txt 和其他常见密码列表。

  2. /usr/share/exploitdb/: 这是 Exploit Database 的本地副本,其中包含已知的漏洞利用代码。

  3. /usr/share/metasploit-framework/: Metasploit 框架的安装目录,其中包含用于渗透测试和漏洞利用的工具。

  4. /usr/share/nmap/scripts/: Nmap 脚本的目录,其中包含了用于进行端口扫描和漏洞探测的脚本。

  5. /usr/share/enum4linux/: Enum4linux 工具的目录,用于枚举 Windows 系统的信息。

  6. /usr/share/webshells/: 包含常见的 Web shell 脚本,用于测试 Web 应用程序的安全性。

  7. /usr/share/wfuzz/: Wfuzz 工具的目录,用于进行 Web 应用程序的 Fuzz 测试。

  8. /usr/share/sqlmap/: SQLMap 工具的目录,用于检测和利用 SQL 注入漏洞

---进入/home目录,查看靶机的SSH的账号

---尝试使用:mrderp/stinky和密码wedgie57进行SSH登陆

---mrderp提示密码错误,stinky提示权限拒绝,这里应该是不支持SSH的密码登陆

---直接使用su输入密码登陆

---除了ssh,我们还可以使用ftp进行登陆尝试stinky/wedgie57

---进入files目录之后,发现4个子目录

  • 第一列是文件权限和类型。  d 表示目录- 表示文件, rwx 表示读取、写入和执行权限。

  • 第二列和第三列是文件所有者的用户名和组名

  • 第四列是文件的大小(以字节为单位,发现test.txt和tmp目录下是没有文件的)

  • 第五列是文件的最后修改日期。

  • 第六列是文件或目录的名称

---在/files/ssh/ssh/ssh/ssh/ssh/ssh/ssh/目录下存在key.txt文件,通过GET下载

---在network-logs目录下存在derpissues.txt 文件,也get下来

---查看derpissues.txt的信息

---查看key.txt的信息,发现是一段加密信息

---结合key.txt的位置是SSH目录,以及这里RSA加密,可以看出这里是一个SSH登陆的密钥

---这里采用stinky登陆试一试,发现被拒绝了,-i为指定私钥文件

---切换root和mrderp试一试,发现也都不行

---这里需要加一些内容,需要指定SSH的RSA算法才能登陆

---指定SSH客户端接受RSA公钥算法用于身份验证才能登陆

  1. -o:这是SSH客户端的选项,用于在命令行中指定配置选项

  2. PubkeyAcceptedKeyTypes=+ssh-rsa:这是SSH配置选项的一部分,指定接受的公钥加密算法。具体解释如下:

    • PubkeyAcceptedKeyTypes:这是SSH客户端选项中用于指定接受的公钥加密算法的配置项。

    • +ssh-rsa:这是具体的公钥算法,表示接受使用RSA密钥对进行身份验证的请求

---这里进入stinky的目录,发现flag4

---进入Documents目录,发现derpissues.pcap文件

---这是是Python2,使用SimpleHTTPServer开启HTTPServer服务下载到kailderp.pacp

---也可以在kail使用NC进行文件传输,也可以使用base64进行传输

---也可以使用SSH进行文件传输

---kail使用Wireshark进行TCP流量分析(tcp.stream eq 48

----在TCP流的48,可以看到登陆信息,用户名mrderp,密码derpderpderpderpderpderpderp

---这里印证了mederp用户在FTP里面说WordPress的账号密码忘记了

---但是一个一个的TCP流查找很麻烦

---查找包含login的字段:frame contains mrderp(这个命令使用不了了)

---可以查看HTTP协议的POST方法:http.request.method == "POST"

---在/Destktop/helpdesk.log存在一个帮助文件,直接cat

---这里提示sudo提权的可能

---查看用户的权限,stinky的账户没有sudo权限,而mrderp用户具有sudo权限

---总结:Web敏感目录识别管理员后台 》 弱口令登陆 》Web插件文件上传 》获取Webshell 》 数据库查看用户名/密码 》尝试登陆SSH/FTP 》 进一步获取用户名/密码字典 》用户登陆 》 sudo提权

---进入sudo权限的文件目录,查看文件发现具有写入权限

---这里derpy*匹配任意格式的文件,但是这里最好是sh或者py

---nano打开文件,写入bash -i打开一个新的shell

---直接sudo执行,发现提权成功

##其它的提权思路

#OS内核和发行版本收集

---可以使用谷歌/searchsploit进行搜索相关exp,进行Linux的内核提权

---也可以使用linux-exploit-suggester.sh进行内核提权的分析

---注意:comment的漏洞提权可能存在约束条件,可以优先选择exploit-db的exp且不存在comment的内核漏洞(这里也给出了内核版本发行版本

---也可以使用linpeas.sh进行信息收集

---查看下:1.计划任务2.密码文件(/etc/passwd|/etc/sudoers|/etc/shadow)

---以及拥有suid的文件(find -name )

---查看具有SUID权限的文件:

----这里:1.都是/etc或/bin目录下  2.其它用户不具有写入权限

---查看计划任务,发行没有计划任务的文件

##拓展知识

#Nmap进行漏洞扫描

---这里指定脚本以及漏洞的数据库

----这里没有扫出什么比较好的漏洞

#hashcat进行密文爆破(除了john的另外一种方法)

  1. -m 400:这是 Hashcat 的哈希模式选项。 在这个例子中, -m 400 表示使用SHA-256哈希模式。Hashcat支持许多不同的哈希模式,每种模式对应不同类型的哈希算法。

  2. -a 0:这是 Hashcat 的攻击模式选项。  -a 0 表示使用基于字典的攻击模式。在这种攻击模式下,Hashcat将会尝试使用字典文件中的每个单词来猜测密码。

  3. -O:这是 Hashcat 的 -O 表示启用一些优化方法,可以提高密码破解速度

---但是这里我没有爆破出来

---很奇怪,没有爆破出来

##EID-34514的补充

---上传文件的位置:

---POST(文件上传)传参的URL

----管理员登陆然后查看,很好奇这里是对于PHP的后缀没有检测吗

---文件上传的参数

  1. ------WebKitFormBoundaryEGMugMZ1CVkRzbxV:这是一个分隔符(Boundary),用于标识请求体中不同字段的边界。分隔符是随机生成的,以确保请求体的唯一性,因为不同的字段和文件可能会有不同的内容。

  2. Content-Disposition: form-data; name="image_file"; filename="backdoor.php":这是一个数据字段的描述。Content-Disposition 指示该部分数据的用途和名称。在这里,name="image_file" 表示字段名为 "image_file",filename="backdoor.php" 表示这是一个文件上传字段,文件名为 "backdoor.php"。

  3. Content-Type: application/octet-stream:这是文件的 MIME 类型(媒体类型)。application/octet-stream 是一种通用的二进制流类型,表示这是一个未知类型的二进制文件。

---一句话的马子,传参cmd进行控制

---这里应该存在过滤,eval()和assert()函数都不能使用

---构建exp(这里根据POST的传参构造的exp)

---mktemp -umktemp 是一个命令用于创建临时文件或目录-u 选项表示只生成文件名,而不会在文件系统中创建文件。生成的临时文件名将包含随机字符或数字,以确保其唯一性

---s/^.*tmp\.(.*)$/\1/ 是一个替换规则。这个规则表示将输入文本中以 "tmp." 开头的部分和以此为标识的部分进行匹配,并将匹配的部分替换为后面的 \1\1 表示匹配的第一个括号子表达式的内容,即唯一标识部

---该命令的作用是生成一个临时文件名,然后提取文件名中的唯一标识部分

---FILE=$1 用于将脚本的第一个命令行参数赋值给变量 FILE

---curl的参数: -s为静音模式,不输出任何东西

---:-c将登陆后的cookie写入cookie文件;-d以post方式传输数据(上一行是数据,下一行是post的URL)

----b是读取cookie,-H 自定义头部信息;-o把输出写入空(不输出)

---:-F模拟http表单提交数据

---总结思路

  1. 通过  curl 命令进行登录认证,将用户名和密码发送给 WordPress 登录页面,并保存会话 cookie 到  cookie 文件中

  2. 使用之前获得的 cookie,构造一个恶意的 POST 请求,将文件以及一些参数(如幻灯片标题、描述等)上传到幻灯片插件的保存页面

  3. 脚本会在上传成功后删除之前保存的 cookie 文件

---浏览器访问:http://derpnstink.local/weblog/wp-content/uploads/slideshow-gallery/cmd.php

---采用一句话,将webshell反弹到Kail的6677端口

---Perl 语言编写的短小的一行代码(还是Python好用)

---一句话解析如下

---这里需要将一句话进行URL编码

---直接curl访问

---这边直接获取Webshell

---使用root/mysql访问phpmyadmin(听说phpmyadmin存在框架漏洞)

---查看PHPmyadmin的版本(这里看不到)

---然后可能存在弱口令和万能密码

---具体资料:https://blog.csdn.net/m0_67402013/article/details/126081385

---在mysql数据库的user表存在unclestinky用户和密码:

9B776AFB479B31E8047026F1185E952DD1E530CB

---识别的是sha1加密

---直接解密

---也可以使用国外的网站:https://crackstation.net

---但是我使用john和hashcat都没有爆破出来(猜测是字典不对)

#知识点总结:

---1.根据前端源代码提示,将靶机IP和指定域名绑定,访问特定URL

---2.Hydr爆破没有验证码的登陆框(phpMyadmin应该也可以爆破):

-l指定用户名admin,-vV详细输出;http-post-form以表单的形式POST传递参数;^USER^^PASS^ 会被实际的用户名和密码代替;error 是指定登录失败的错误消息,Hydra 通过检查错误消息来判断登录是否成功

---3.phpMyadmin的漏洞:目录版本识别 / 弱口令 / 万能密码 / phpMyadmin的框架漏洞

---4.AWVS和Wpsacn的进行漏洞扫描,XSS / WordPress Plugin Slideshow Gallery插件漏洞

---5.数据库用户密码john进行爆破:/usr/share/wordlists/rockyou.txt

---6.使用rsa密钥进行ssh登陆

---7.Wireshark进行pacp文件的信息查询获取用户密码:查询TCP流(tcp.stream eq 48) / 查询http协议的post方法(http.request.method == "POST") / 查询关键词(frame contains mrderp  /login)

---8.密码爆破的技巧:Web的用户名 + 数据库的用户名 + Ftp的用户信息 + /home目录下用户信息 + /Web下的Config文件 可以组成爆破字典 + Mysql下Web的用户名和密码 + Mysql的mysql 数据库下user表的用户名密码(核心思想:用户名和密码是通用的)

---9.sudo -l查看当前用户的sudo权限的文件

---10.文件上传的漏洞的利用(冰蝎/蚁剑/菜刀)链接,或者通过将payload进行URL编码,然后通过URL传参反弹shell到kail

---11.通过/bin/bash脚本,结合curl进行数据包的POST的传参,进而上传一句话

---12.perl链接php的一句话的代码(通过socket将标准输入/输出/错误链接到靶机/bin/bash)

---13.通过john / hashcat / MD5在线解密 /crackstation.net 破解密码


项目七:DerpNStink-1的评论 (共 条)

分享到微博请遵守国家法律