项目七:DerpNStink-1
##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/
目录下存在许多爆破文件
/usr/share/wordlists/
: 该目录包含常用的密码字典文件,如rockyou.txt
和其他常见密码列表。/usr/share/exploitdb/
: 这是 Exploit Database 的本地副本,其中包含已知的漏洞利用代码。/usr/share/metasploit-framework/
: Metasploit 框架的安装目录,其中包含用于渗透测试和漏洞利用的工具。/usr/share/nmap/scripts/
: Nmap 脚本的目录,其中包含了用于进行端口扫描和漏洞探测的脚本。/usr/share/enum4linux/
: Enum4linux 工具的目录,用于枚举 Windows 系统的信息。/usr/share/webshells/
: 包含常见的 Web shell 脚本,用于测试 Web 应用程序的安全性。/usr/share/wfuzz/
: Wfuzz 工具的目录,用于进行 Web 应用程序的 Fuzz 测试。/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公钥算法用于身份验证才能登陆
-o
:这是SSH客户端的选项,用于在命令行中指定配置选项。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的另外一种方法)
-m 400
:这是 Hashcat 的哈希模式选项。 在这个例子中,-m 400
表示使用SHA-256哈希模式。Hashcat支持许多不同的哈希模式,每种模式对应不同类型的哈希算法。-a 0
:这是 Hashcat 的攻击模式选项。-a 0
表示使用基于字典的攻击模式。在这种攻击模式下,Hashcat将会尝试使用字典文件中的每个单词来猜测密码。-O
:这是 Hashcat 的-O
表示启用一些优化方法,可以提高密码破解速度
---但是这里我没有爆破出来
---很奇怪,没有爆破出来

##EID-34514的补充
---上传文件的位置:
---POST(文件上传)传参的URL
----管理员登陆然后查看,很好奇这里是对于PHP的后缀没有检测吗

---文件上传的参数
------WebKitFormBoundaryEGMugMZ1CVkRzbxV
:这是一个分隔符(Boundary),用于标识请求体中不同字段的边界。分隔符是随机生成的,以确保请求体的唯一性,因为不同的字段和文件可能会有不同的内容。Content-Disposition: form-data; name="image_file"; filename="backdoor.php"
:这是一个数据字段的描述。Content-Disposition
指示该部分数据的用途和名称。在这里,name="image_file"
表示字段名为 "image_file",filename="backdoor.php"
表示这是一个文件上传字段,文件名为 "backdoor.php"。Content-Type: application/octet-stream
:这是文件的 MIME 类型(媒体类型)。application/octet-stream
是一种通用的二进制流类型,表示这是一个未知类型的二进制文件。
---一句话的马子,传参cmd进行控制
---这里应该存在过滤,eval()和assert()函数都不能使用
---构建exp(这里根据POST的传参构造的exp)
---mktemp -u
:mktemp
是一个命令用于创建临时文件或目录。-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表单提交数据
---总结思路
通过
curl
命令进行登录认证,将用户名和密码发送给 WordPress 登录页面,并保存会话 cookie 到cookie
文件中。使用之前获得的 cookie,构造一个恶意的 POST 请求,将文件以及一些参数(如幻灯片标题、描述等)上传到幻灯片插件的保存页面
脚本会在上传成功后删除之前保存的 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 破解密码
